pub struct Context<'i> { /* private fields */ }Expand description
A context for registering and expanding procedural macros.
The Context holds a registry of macro implementations and provides methods to transform Rust source code by
expanding these macros.
Implementations§
Source§impl<'i> Context<'i>
impl<'i> Context<'i>
Sourcepub fn register_proc_macro<F, T>(&mut self, ident: String, f: F) -> &mut Self
pub fn register_proc_macro<F, T>(&mut self, ident: String, f: F) -> &mut Self
Registers a function-like procedural macro.
The macro will be invoked when encountered in expression or type position with the syntax macro_name!(...),
macro_name![...] or macro_name!{...}.
Sourcepub fn register_proc_macro_attribute<F, T>(
&mut self,
ident: String,
f: F,
) -> &mut Self
pub fn register_proc_macro_attribute<F, T>( &mut self, ident: String, f: F, ) -> &mut Self
Registers a procedural macro attribute.
The macro will be invoked when used as an attribute on items with the syntax #[macro_name] or
#[macro_name(...)].
Sourcepub fn register_proc_macro_derive<F, T>(
&mut self,
ident: String,
f: F,
attributes: Vec<String>,
) -> &mut Self
pub fn register_proc_macro_derive<F, T>( &mut self, ident: String, f: F, attributes: Vec<String>, ) -> &mut Self
Registers a derive procedural macro.
The macro will be invoked when used in a #[derive(...)] attribute. Generated implementations will be added
after the original item.
pub fn transform(&self, input: TokenStream) -> TokenStream
Trait Implementations§
Auto Trait Implementations§
impl<'i> Freeze for Context<'i>
impl<'i> !RefUnwindSafe for Context<'i>
impl<'i> !Send for Context<'i>
impl<'i> !Sync for Context<'i>
impl<'i> Unpin for Context<'i>
impl<'i> !UnwindSafe for Context<'i>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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