struct Node {
kind: NodeKind,
nbindings: usize,
parent: Option<WeakNodePtr>,
children: Vec<NodePtr>,
}
Fields§
§kind: NodeKind
§nbindings: usize
Number of bindings between the root and this node’s parent, i.e., we have
as an invariant that nbindings
equals the number of NodeKind::ForAll
nodes from the parent of this node to the root.
parent: Option<WeakNodePtr>
§children: Vec<NodePtr>
Implementations§
Source§impl Node
impl Node
fn simplify( &mut self, phase: SimplifyPhase<'_, '_>, assumed_preds: &mut SnapshotMap<Expr, ()>, )
fn is_leaf(&self) -> bool
fn replace_evars(&mut self, evars: &EVarStore) -> Result<(), EVid>
fn to_fixpoint( &self, cx: &mut FixpointCtxt<'_, '_, Tag>, ) -> QueryResult<Option<Constraint>>
Source§impl Node
impl Node
Sourcefn simplify_bot(&mut self)
fn simplify_bot(&mut self)
replace bot-kvars with false
Sourcefn simplify_top(&mut self)
fn simplify_top(&mut self)
replace top-kvars with true
Sourcefn simplify_with_assignment(&mut self, assignment: &Assignment)
fn simplify_with_assignment(&mut self, assignment: &Assignment)
simplifies assumptions and heads using the TOP/BOT kvar assignment; follow
with a call to simplify
to delete constraints with FALSE assm.
Auto Trait Implementations§
impl Freeze for Node
impl !RefUnwindSafe for Node
impl !Send for Node
impl !Sync for Node
impl Unpin for Node
impl !UnwindSafe for Node
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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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