Expand description
Implementation of the cursors – API for convenient access to syntax trees.
Functional programmers will recognize that this module implements a zipper for a purely functional (green) tree.
A cursor node (SyntaxNode) points to a GreenNode and a parent
SyntaxNode. This allows cursor to provide iteration over both ancestors
and descendants, as well as a cheep access to absolute offset of the node in
file.
By default SyntaxNodes are immutable, but you can get a mutable copy of
the tree by calling clone_for_update. Mutation is based on interior
mutability and doesn’t need &mut. You can have two SyntaxNodes pointing
at different parts of the same tree; mutations via the first node will be
reflected in the other.