GreenNode

Struct GreenNode 

Source
pub struct GreenNode<K: Copy> {
    pub kind: K,
    pub children: Vec<GreenTree<K>>,
    pub length: usize,
}
Expand description

A green node that contains child elements without parent pointers.

Green nodes represent kind tree nodes with their structural information but without position data or parent references. This design makes them immutable and shareable across different parse trees.

Fields§

§kind: K

The node kind/category (e.g., expression, statement, declaration)

§children: Vec<GreenTree<K>>

The child elements of this node

§length: usize

The total byte length of this node and all its children

Implementations§

Source§

impl<K: Copy> GreenNode<K>

Source

pub fn new(kind: K, children: Vec<GreenTree<K>>) -> Arc<Self>

Creates a new green node from kind and children.

§Arguments
  • kind - The node kind/category
  • children - The child elements of this node
§Returns

A reference-counted GreenNode with computed total length

Source§

impl<K: Copy> GreenNode<K>

Source

pub fn replace_range( &self, replace_start: usize, replace_end: usize, new_children: Vec<GreenTree<K>>, ) -> Arc<Self>

Replaces a range of child elements with new children.

This method is essential for incremental parsing, allowing efficient updates to kind trees by replacing only the changed portions.

§Arguments
  • replace_start - The starting index of the range to replace (inclusive)
  • replace_end - The ending index of the range to replace (exclusive)
  • new_children - The new child elements to insert
§Returns

A new Arc<GreenNode<K>> with the specified children replaced

§Panics

Panics if the indices are out of bounds or if replace_start > replace_end

Trait Implementations§

Source§

impl<K: Clone + Copy> Clone for GreenNode<K>

Source§

fn clone(&self) -> GreenNode<K>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<K: Debug + Copy> Debug for GreenNode<K>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<K> Freeze for GreenNode<K>
where K: Freeze,

§

impl<K> RefUnwindSafe for GreenNode<K>
where K: RefUnwindSafe,

§

impl<K> Send for GreenNode<K>
where K: Send + Sync,

§

impl<K> Sync for GreenNode<K>
where K: Sync + Send,

§

impl<K> Unpin for GreenNode<K>
where K: Unpin,

§

impl<K> UnwindSafe for GreenNode<K>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ErasedDestructor for T
where T: 'static,