Enum libunseemly::ast_walk::WalkRule [−][src]
pub enum WalkRule<Mode: WalkMode> {
Custom(Rc<Box<dyn Fn(LazyWalkReses<Mode>) -> Result<<Mode::D as Dir>::Out, Mode::Err>>>),
Body(Name),
LiteralLike,
NotWalked,
}
Expand description
How do we walk a particular node? This is a super-abstract question, hence all the <>
s.
Variants
Custom(Rc<Box<dyn Fn(LazyWalkReses<Mode>) -> Result<<Mode::D as Dir>::Out, Mode::Err>>>)
A function from the types/values of the parts of this form
to the type/value of this form.
The environment is accessible via the LazyWalkReses
.
Any of the other WalkRule
s can be implemented as a simple Custom
.
Body(Name)
Tuple Fields
0: Name
“this form has the same type/value as one of its subforms”. (useful for forms that only exist as wrapper s around other AST nodes)
LiteralLike
“traverse the subterms, and rebuild this syntax around them”.
Only valid in modes where Ast
s can be converted to ::Elt
s.
NotWalked
“this form should not ever be walked”.
Trait Implementations
A name for that type, so that recursive types are okay.
Ignore the type parameters of Self
; invoke like Self::<Irr,Irr>::ty_name()
.
e.g. WithInteger
Read more
The Unseemly type that corresponds to to the Reifiable
type.
This leaves abstract the type parameters of Self
; invoke like Self::<Irr,Irr>::ty()
.
e.g. ∀ A. Pair<A int>
TODO: rename to generic_ty
Read more
How to refer to this type, given an environment in which
ty_name()
is defined to be ty()
.
Parameters will be concrete.
e.g. WithInteger<Float>
(Types using this type will use this, rather than ty
)
Don’t override this. Read more
Auto Trait Implementations
impl<Mode> !RefUnwindSafe for WalkRule<Mode>
impl<Mode> !UnwindSafe for WalkRule<Mode>
Blanket Implementations
Mutably borrows from an owned value. Read more
Pipes by value. This is generally the method you want to use. Read more
Borrows self
and passes that borrow into the pipe function. Read more
Mutably borrows self
and passes that borrow into the pipe function. Read more
Borrows self
, then passes self.borrow()
into the pipe function. Read more
Mutably borrows self
, then passes self.borrow_mut()
into the pipe
function. Read more
Borrows self
, then passes self.as_ref()
into the pipe function.
Mutably borrows self
, then passes self.as_mut()
into the pipe
function. Read more
Borrows self
, then passes self.deref()
into the pipe function.
type Output = T
type Output = T
Should always be Self
Immutable access to the Borrow<B>
of a value. Read more
Mutable access to the BorrowMut<B>
of a value. Read more
Immutable access to the AsRef<R>
view of a value. Read more
Mutable access to the AsMut<R>
view of a value. Read more
Immutable access to the Deref::Target
of a value. Read more
Mutable access to the Deref::Target
of a value. Read more
Calls .tap()
only in debug builds, and is erased in release builds.
Calls .tap_mut()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_borrow()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_borrow_mut()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_ref()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_ref_mut()
only in debug builds, and is erased in release
builds. Read more
Calls .tap_deref()
only in debug builds, and is erased in release
builds. Read more