pub struct Ast<'ast> {
pub node: Node<'ast>,
pub pos: TermPos,
}Expand description
A Nickel AST. Contains a root node and a span.
Fields§
§node: Node<'ast>§pos: TermPosImplementations§
Trait Implementations§
Source§impl<'ast> AttachToAst<'ast, Ast<'ast>> for Annotation<'ast>
impl<'ast> AttachToAst<'ast, Ast<'ast>> for Annotation<'ast>
Source§impl CloneTo for Ast<'_>
impl CloneTo for Ast<'_>
Source§impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Annotation<'ast>
impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Annotation<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Self, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Self, E>
Same as Traverse::traverse, but takes an additional AST allocator.
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>,
scope: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, scope: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
Source§impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Ast<'ast>
impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Ast<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Ast<'ast>, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Ast<'ast>, E>
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>,
state: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, state: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
Source§impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for FieldDef<'ast>
impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for FieldDef<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Self, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Self, E>
Same as Traverse::traverse, but takes an additional AST allocator.
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>,
scope: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, scope: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
Source§impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for FieldPattern<'ast>
impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for FieldPattern<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Self, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Self, E>
Same as Traverse::traverse, but takes an additional AST allocator.
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>,
scope: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, scope: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
Source§impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for LetBinding<'ast>
impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for LetBinding<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Self, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Self, E>
Same as Traverse::traverse, but takes an additional AST allocator.
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>,
scope: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, scope: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
Source§impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for MatchBranch<'ast>
impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for MatchBranch<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Self, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Self, E>
Same as Traverse::traverse, but takes an additional AST allocator.
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>,
scope: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, scope: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
Source§impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Pattern<'ast>
impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Pattern<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Self, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Self, E>
Same as Traverse::traverse, but takes an additional AST allocator.
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>,
scope: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, scope: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
Source§impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Type<'ast>
impl<'ast> TraverseAlloc<'ast, Ast<'ast>> for Type<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Self, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Self, E>
Same as Traverse::traverse, but takes an additional AST allocator.
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>,
state: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Ast<'ast>, &S) -> TraverseControl<S, U>, state: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
Source§impl<'ast> TraverseAlloc<'ast, Type<'ast>> for Ast<'ast>
impl<'ast> TraverseAlloc<'ast, Type<'ast>> for Ast<'ast>
Source§fn traverse<F, E>(
self,
alloc: &'ast AstAlloc,
f: &mut F,
order: TraverseOrder,
) -> Result<Ast<'ast>, E>
fn traverse<F, E>( self, alloc: &'ast AstAlloc, f: &mut F, order: TraverseOrder, ) -> Result<Ast<'ast>, E>
Same as Traverse::traverse, but takes an additional AST allocator.
Source§fn traverse_ref<S, U>(
&'ast self,
f: &mut dyn FnMut(&'ast Type<'ast>, &S) -> TraverseControl<S, U>,
state: &S,
) -> Option<U>
fn traverse_ref<S, U>( &'ast self, f: &mut dyn FnMut(&'ast Type<'ast>, &S) -> TraverseControl<S, U>, state: &S, ) -> Option<U>
Same as Traverse::traverse_ref, but takes an additional AST allocator. Read more
fn find_map<S>(&'ast self, pred: impl FnMut(&'ast T) -> Option<S>) -> Option<S>where
T: Clone + 'ast,
impl Allocable for Ast<'_>
impl<'ast> Eq for Ast<'ast>
impl<'ast> StructuralPartialEq for Ast<'ast>
Auto Trait Implementations§
impl<'ast> Freeze for Ast<'ast>
impl<'ast> RefUnwindSafe for Ast<'ast>
impl<'ast> Send for Ast<'ast>
impl<'ast> Sync for Ast<'ast>
impl<'ast> Unpin for Ast<'ast>
impl<'ast> UnsafeUnpin for Ast<'ast>
impl<'ast> UnwindSafe for Ast<'ast>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<'ast, P> FullyErrorTolerantParser<'ast, Ast<'ast>> for Pwhere
P: ErrorTolerantParser<'ast, Ast<'ast>>,
impl<'ast, P> FullyErrorTolerantParser<'ast, Ast<'ast>> for Pwhere
P: ErrorTolerantParser<'ast, Ast<'ast>>,
Source§fn parse_fully_tolerant<'input>(
&self,
alloc: &'ast AstAlloc,
file_id: FileId,
lexer: impl Iterator<Item = Result<(usize, Token<'input>, usize), LexicalError>>,
full_span: RawSpan,
) -> (Ast<'ast>, ParseErrors)
fn parse_fully_tolerant<'input>( &self, alloc: &'ast AstAlloc, file_id: FileId, lexer: impl Iterator<Item = Result<(usize, Token<'input>, usize), LexicalError>>, full_span: RawSpan, ) -> (Ast<'ast>, ParseErrors)
Parse a value from a lexer with the given
file_id in an error-tolerant way. Read moreSource§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