pub enum Determinacy {
Determinate,
Nondeterminate {
witnesses: Vec<NondetWitness>,
},
}Expand description
Whole-program determinacy verdict.
Variants§
Determinate
No reachable construct can introduce scheduling-dependent nondeterminism; output is a pure function of input (Kahn determinacy + CRDT convergence).
Nondeterminate
At least one nondeterminism source is present.
Fields
§
witnesses: Vec<NondetWitness>The constructs that forced nondeterminism, in source order.
Implementations§
Source§impl Determinacy
impl Determinacy
Sourcepub fn is_determinate(&self) -> bool
pub fn is_determinate(&self) -> bool
True iff the program is in the determinate fragment.
Sourcepub fn nondet_kinds(&self) -> Vec<NondetKind>
pub fn nondet_kinds(&self) -> Vec<NondetKind>
The kinds of nondeterminism present (empty when determinate).
Trait Implementations§
Source§impl Clone for Determinacy
impl Clone for Determinacy
Source§fn clone(&self) -> Determinacy
fn clone(&self) -> Determinacy
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for Determinacy
impl Debug for Determinacy
Source§impl PartialEq for Determinacy
impl PartialEq for Determinacy
Source§fn eq(&self, other: &Determinacy) -> bool
fn eq(&self, other: &Determinacy) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for Determinacy
impl StructuralPartialEq for Determinacy
Auto Trait Implementations§
impl Freeze for Determinacy
impl RefUnwindSafe for Determinacy
impl Send for Determinacy
impl Sync for Determinacy
impl Unpin for Determinacy
impl UnsafeUnpin for Determinacy
impl UnwindSafe for Determinacy
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,
§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.