Block

Struct Block 

Source
pub struct Block { /* private fields */ }
Expand description

Represents a block, a collection of Statements that can end with a LastStatement.

Implementations§

Source§

impl Block

Source

pub fn new( statements: Vec<Statement>, last_statement: Option<LastStatement>, ) -> Self

Creates a new Block with the given statements and optional last statement.

Source

pub fn with_tokens(self, tokens: BlockTokens) -> Self

Attaches token information to this block and returns the updated block.

Source

pub fn set_tokens(&mut self, tokens: BlockTokens)

Attaches token information to this block.

Source

pub fn get_tokens(&self) -> Option<&BlockTokens>

Returns a reference to the token information attached to this block, if any.

Source

pub fn mutate_tokens(&mut self) -> Option<&mut BlockTokens>

Returns a mutable reference to the token information attached to this block, if any.

Source

pub fn push_statement<T: Into<Statement>>(&mut self, statement: T)

Adds a statement to the end of the block. Updates token information if present.

This method maintains consistency between the statements and their token information.

Source

pub fn remove_statement(&mut self, index: usize)

Removes a statement at the specified index. Updates token information if present.

Does nothing if the index is out of bounds.

Source

pub fn with_statement<T: Into<Statement>>(self, statement: T) -> Self

Adds a statement to the end of the block and returns the updated block.

Source

pub fn insert_statement( &mut self, index: usize, statement: impl Into<Statement>, )

Inserts a statement at the specified index, appending if the index is beyond the end. Updates token information if present.

This method maintains consistency between the statements and their token information.

Source

pub fn set_last_statement(&mut self, last_statement: impl Into<LastStatement>)

Sets the last statement of the block.

Source

pub fn with_last_statement( self, last_statement: impl Into<LastStatement>, ) -> Self

Sets the last statement of the block and returns the updated block.

Source

pub fn is_empty(&self) -> bool

Checks if the block is empty (contains no statements or last statement).

Source

pub fn statements_len(&self) -> usize

Returns the number of statements in the block.

Source

pub fn iter_statements(&self) -> impl Iterator<Item = &Statement>

Returns an iterator over references to the statements in the block.

Source

pub fn reverse_iter_statements(&self) -> impl Iterator<Item = &Statement>

Returns an iterator over references to the statements in the block in reverse order.

Source

pub fn get_last_statement(&self) -> Option<&LastStatement>

Returns a reference to the last statement of the block, if any.

Source

pub fn filter_statements<F>(&mut self, f: F)
where F: FnMut(&Statement) -> bool,

Filters statements in the block, removing those for which the predicate returns false. Updates token information if present.

This method ensures token information stays consistent with the statements collection.

Source

pub fn filter_mut_statements<F>(&mut self, f: F)
where F: FnMut(&mut Statement) -> bool,

Filters statements with mutable access, removing those for which the predicate returns false. Updates token information if present.

This method gives mutable access to statements during filtering.

Source

pub fn truncate(&mut self, length: usize)

Truncates the statements to the specified length.

Updates token information if present.

Source

pub fn iter_mut_statements(&mut self) -> impl Iterator<Item = &mut Statement>

Returns a mutable iterator over the statements in the block.

Source

pub fn first_statement(&self) -> Option<&Statement>

Returns a reference to the first statement in the block, if any.

Source

pub fn first_mut_statement(&mut self) -> Option<&mut Statement>

Returns a mutable reference to the first statement in the block, if any.

Source

pub fn take_statements(&mut self) -> Vec<Statement>

Removes all statements from the block and returns them.

Clears token information if present.

Source

pub fn take_last_statement(&mut self) -> Option<LastStatement>

Removes and returns the last statement of the block, if any.

Clears the last semicolon token if present.

Source

pub fn set_statements(&mut self, statements: Vec<Statement>)

Sets the statements of the block.

Clears any existing semicolon tokens.

Source

pub fn mutate_last_statement(&mut self) -> Option<&mut LastStatement>

Returns a mutable reference to the last statement of the block, if any.

Source

pub fn replace_last_statement<S: Into<LastStatement>>( &mut self, statement: S, ) -> Option<LastStatement>

Replaces the last statement with the given statement and returns the old one, if any.

Source

pub fn clear(&mut self)

Clears all statements and the last statement from the block.

Also clears all token information if present.

Source

pub fn mutate_first_token(&mut self) -> &mut Token

Returns a mutable reference to the first token in this block, creating it if it doesn’t exist.

Source

pub fn mutate_last_token(&mut self) -> &mut Token

Returns a mutable reference to the last token for this block, creating it if missing.

Source

pub fn clear_comments(&mut self)

Clears all comments from the tokens in this node.

Source

pub fn clear_whitespaces(&mut self)

Clears all whitespaces information from the tokens in this node.

Trait Implementations§

Source§

impl Clone for Block

Source§

fn clone(&self) -> Block

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 Debug for Block

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for Block

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<IntoStatement: Into<Statement>> From<IntoStatement> for Block

Source§

fn from(statement: IntoStatement) -> Block

Converts to this type from the input type.
Source§

impl From<LastStatement> for Block

Source§

fn from(statement: LastStatement) -> Block

Converts to this type from the input type.
Source§

impl From<ReturnStatement> for Block

Source§

fn from(statement: ReturnStatement) -> Block

Converts to this type from the input type.
Source§

impl PartialEq for Block

Source§

fn eq(&self, other: &Block) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Block

Source§

impl StructuralPartialEq for Block

Auto Trait Implementations§

§

impl Freeze for Block

§

impl RefUnwindSafe for Block

§

impl Send for Block

§

impl Sync for Block

§

impl Unpin for Block

§

impl UnwindSafe for Block

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<I, T> ExtractContext<I, ()> for T

Source§

fn extract_context(self, _original_input: I)

Given the context attached to a nom error, and given the original input to the nom parser, extract more the useful context information. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<I> RecreateContext<I> for I

Source§

fn recreate_context(_original_input: I, tail: I) -> I

Given the original input, as well as the context reported by nom, recreate a context in the original string where the error occurred. Read more
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.