pub struct MacroEnv { /* private fields */ }
Expand description
Type containing macros bound to symbols which can be applied on an AST expression to transform it.
Implementations§
source§impl MacroEnv
impl MacroEnv
sourcepub fn insert<M>(&self, name: String, mac: M)where
M: Macro + 'static,
pub fn insert<M>(&self, name: String, mac: M)where
M: Macro + 'static,
Inserts a Macro
which acts on any occurance of symbol
when applied to an expression.
pub fn get_capabilities<T>(&self, thread: &Thread) -> Vec<T>where
T: Any,
pub fn get_capability<T>(&self, thread: &Thread) -> Option<T>where
T: Any,
pub fn clear(&self)
sourcepub async fn run<'ast>(
&self,
vm: &Thread,
userdata: &mut (dyn MacroUserdata + '_),
spawn: Option<&(dyn Spawn + Send + Sync + '_)>,
symbols: &mut Symbols,
arena: OwnedArena<'ast, Symbol>,
expr: &'ast mut SpannedExpr<'ast, Symbol>
) -> Result<(), Errors>
pub async fn run<'ast>( &self, vm: &Thread, userdata: &mut (dyn MacroUserdata + '_), spawn: Option<&(dyn Spawn + Send + Sync + '_)>, symbols: &mut Symbols, arena: OwnedArena<'ast, Symbol>, expr: &'ast mut SpannedExpr<'ast, Symbol> ) -> Result<(), Errors>
Runs the macros in this MacroEnv
on expr
using env
as the context of the expansion
Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for MacroEnv
impl Send for MacroEnv
impl Sync for MacroEnv
impl Unpin for MacroEnv
impl UnwindSafe for MacroEnv
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
§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.