Skip to main content

MacroContext

Struct MacroContext 

Source
pub struct MacroContext<'a> { /* private fields */ }
Expand description

Context provided to macro expanders for creating AST nodes.

This provides the necessary state for creating synthetic AST nodes during macro expansion, including ID allocation and error reporting.

Implementations§

Source§

impl<'a> MacroContext<'a>

Source

pub fn new( next_id_fn: &'a mut dyn FnMut() -> i64, store_macro_call_fn: Option<&'a mut dyn FnMut(i64, &Span, &SpannedExpr, &str, &[SpannedExpr])>, ) -> Self

Create a new macro context.

Source

pub fn next_id(&mut self) -> i64

Allocate the next unique node ID.

Source

pub fn add_error(&mut self, message: String, span: Span)

Add an error message.

Source

pub fn take_errors(&mut self) -> Vec<(String, Span)>

Take accumulated errors.

Source

pub fn store_macro_call( &mut self, call_id: i64, span: &Span, receiver: &SpannedExpr, method_name: &str, args: &[SpannedExpr], )

Store the original macro call expression for IDE features.

Auto Trait Implementations§

§

impl<'a> Freeze for MacroContext<'a>

§

impl<'a> !RefUnwindSafe for MacroContext<'a>

§

impl<'a> !Send for MacroContext<'a>

§

impl<'a> !Sync for MacroContext<'a>

§

impl<'a> Unpin for MacroContext<'a>

§

impl<'a> UnsafeUnpin for MacroContext<'a>

§

impl<'a> !UnwindSafe for MacroContext<'a>

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> 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, 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.