pub enum Domain {
Ground(Moo<GroundDomain>),
Unresolved(Moo<UnresolvedDomain>),
}Variants§
Ground(Moo<GroundDomain>)
A fully resolved domain
Unresolved(Moo<UnresolvedDomain>)
A domain which may contain references
Implementations§
Source§impl Domain
impl Domain
Sourcepub fn bool() -> DomainPtr
pub fn bool() -> DomainPtr
Create a new boolean domain and return a pointer to it. Boolean domains are always ground (see GroundDomain::Bool).
Sourcepub fn empty(ty: ReturnType) -> DomainPtr
pub fn empty(ty: ReturnType) -> DomainPtr
Create a new empty domain of the given type and return a pointer to it. Empty domains are always ground (see GroundDomain::Empty).
Sourcepub fn int<T>(ranges: Vec<T>) -> DomainPtr
pub fn int<T>(ranges: Vec<T>) -> DomainPtr
Create a new int domain with the given ranges. If the ranges are all ground, the variant will be GroundDomain::Int. Otherwise, it will be UnresolvedDomain::Int.
Sourcepub fn int_ground(ranges: Vec<Range<i32>>) -> DomainPtr
pub fn int_ground(ranges: Vec<Range<i32>>) -> DomainPtr
Create a new ground integer domain with the given ranges
Sourcepub fn set<T>(attr: T, inner_dom: DomainPtr) -> DomainPtr
pub fn set<T>(attr: T, inner_dom: DomainPtr) -> DomainPtr
Create a new set domain with the given element domain and attributes. If the element domain and the attributes are ground, the variant will be GroundDomain::Set. Otherwise, it will be UnresolvedDomain::Set.
Sourcepub fn matrix(inner_dom: DomainPtr, idx_doms: Vec<DomainPtr>) -> DomainPtr
pub fn matrix(inner_dom: DomainPtr, idx_doms: Vec<DomainPtr>) -> DomainPtr
Create a new matrix domain with the given element domain and index domains. If the given domains are all ground, the variant will be GroundDomain::Matrix. Otherwise, it will be UnresolvedDomain::Matrix.
Sourcepub fn tuple(inner_doms: Vec<DomainPtr>) -> DomainPtr
pub fn tuple(inner_doms: Vec<DomainPtr>) -> DomainPtr
Create a new tuple domain with the given element domains. If the given domains are all ground, the variant will be GroundDomain::Tuple. Otherwise, it will be UnresolvedDomain::Tuple.
Sourcepub fn record(entries: Vec<RecordEntry>) -> DomainPtr
pub fn record(entries: Vec<RecordEntry>) -> DomainPtr
Create a new tuple domain with the given entries. If the entries are all ground, the variant will be GroundDomain::Record. Otherwise, it will be UnresolvedDomain::Record.
Sourcepub fn reference(ptr: DeclarationPtr) -> Option<DomainPtr>
pub fn reference(ptr: DeclarationPtr) -> Option<DomainPtr>
Create a new UnresolvedDomain::Reference domain from a domain letting
Sourcepub fn function<T>(attrs: T, dom: DomainPtr, cdom: DomainPtr) -> DomainPtr
pub fn function<T>(attrs: T, dom: DomainPtr, cdom: DomainPtr) -> DomainPtr
Create a new function domain
Sourcepub fn resolve(&self) -> Option<Moo<GroundDomain>>
pub fn resolve(&self) -> Option<Moo<GroundDomain>>
If this domain is ground, return a Moo to the underlying GroundDomain. Otherwise, try to resolve it; Return None if this is not yet possible. Domains which contain references to givens cannot be resolved until these givens are substituted for their concrete values.
Sourcepub fn as_ground(&self) -> Option<&GroundDomain>
pub fn as_ground(&self) -> Option<&GroundDomain>
If this domain is already ground, return a reference to the underlying GroundDomain. Otherwise, return None. This method does NOT perform any resolution. See also: Domain::resolve.
Sourcepub fn as_ground_mut(&mut self) -> Option<&mut GroundDomain>
pub fn as_ground_mut(&mut self) -> Option<&mut GroundDomain>
If this domain is already ground, return a mutable reference to the underlying GroundDomain. Otherwise, return None. This method does NOT perform any resolution.
Sourcepub fn as_unresolved(&self) -> Option<&UnresolvedDomain>
pub fn as_unresolved(&self) -> Option<&UnresolvedDomain>
If this domain is unresolved, return a reference to the underlying UnresolvedDomain.
Sourcepub fn as_unresolved_mut(&mut self) -> Option<&mut UnresolvedDomain>
pub fn as_unresolved_mut(&mut self) -> Option<&mut UnresolvedDomain>
If this domain is unresolved, return a mutable reference to the underlying UnresolvedDomain.
Sourcepub fn as_dom_empty(&self) -> Option<&ReturnType>
pub fn as_dom_empty(&self) -> Option<&ReturnType>
If this is [GroundDomain::Empty(ty)], get a reference to the return type ty
Sourcepub fn as_dom_empty_mut(&mut self) -> Option<&mut ReturnType>
pub fn as_dom_empty_mut(&mut self) -> Option<&mut ReturnType>
If this is [GroundDomain::Empty(ty)], get a mutable reference to the return type ty
Sourcepub fn is_bool(&self) -> bool
pub fn is_bool(&self) -> bool
True if this is GroundDomain::Bool
Sourcepub fn is_int(&self) -> bool
pub fn is_int(&self) -> bool
True if this is a GroundDomain::Int or an UnresolvedDomain::Int
Sourcepub fn as_int(&self) -> Option<Vec<Range<IntVal>>>
pub fn as_int(&self) -> Option<Vec<Range<IntVal>>>
If this domain is GroundDomain::Int or [UnresolveDomain::Int], get
its ranges. The ranges are cloned and upcast to Range
Sourcepub fn as_int_mut(&mut self) -> Option<&mut Vec<Range<IntVal>>>
pub fn as_int_mut(&mut self) -> Option<&mut Vec<Range<IntVal>>>
If this is an int domain, get a mutable reference to its ranges. The domain always becomes UnresolvedDomain::Int after this operation.
Sourcepub fn as_int_ground(&self) -> Option<&Vec<Range<i32>>>
pub fn as_int_ground(&self) -> Option<&Vec<Range<i32>>>
If this is a [GroundDomain::Int(rngs)], get an immutable reference to rngs.
Sourcepub fn as_int_ground_mut(&mut self) -> Option<&mut Vec<Range<i32>>>
pub fn as_int_ground_mut(&mut self) -> Option<&mut Vec<Range<i32>>>
If this is a [GroundDomain::Int(rngs)], get an immutable reference to rngs.
Sourcepub fn as_matrix(&self) -> Option<(DomainPtr, Vec<DomainPtr>)>
pub fn as_matrix(&self) -> Option<(DomainPtr, Vec<DomainPtr>)>
If this is a matrix domain, get pointers to its element domain and index domains.
Sourcepub fn as_matrix_mut(&mut self) -> Option<(&mut DomainPtr, &mut Vec<DomainPtr>)>
pub fn as_matrix_mut(&mut self) -> Option<(&mut DomainPtr, &mut Vec<DomainPtr>)>
If this is a matrix domain, get mutable references to its element domain and its vector of index domains. The domain always becomes UnresolvedDomain::Matrix after this operation.
Sourcepub fn as_matrix_ground(
&self,
) -> Option<(&Moo<GroundDomain>, &Vec<Moo<GroundDomain>>)>
pub fn as_matrix_ground( &self, ) -> Option<(&Moo<GroundDomain>, &Vec<Moo<GroundDomain>>)>
If this is a GroundDomain::Matrix, get immutable references to its element and index domains
Sourcepub fn as_matrix_ground_mut(
&mut self,
) -> Option<(&mut Moo<GroundDomain>, &mut Vec<Moo<GroundDomain>>)>
pub fn as_matrix_ground_mut( &mut self, ) -> Option<(&mut Moo<GroundDomain>, &mut Vec<Moo<GroundDomain>>)>
If this is a GroundDomain::Matrix, get mutable references to its element and index domains
Sourcepub fn as_set(&self) -> Option<(SetAttr<IntVal>, DomainPtr)>
pub fn as_set(&self) -> Option<(SetAttr<IntVal>, DomainPtr)>
If this is a set domain, get its attributes and a pointer to its element domain.
Sourcepub fn as_set_mut(&mut self) -> Option<(&mut SetAttr<IntVal>, &mut DomainPtr)>
pub fn as_set_mut(&mut self) -> Option<(&mut SetAttr<IntVal>, &mut DomainPtr)>
If this is a set domain, get mutable reference to its attributes and element domain. The domain always becomes UnresolvedDomain::Set after this operation.
Sourcepub fn as_set_ground(&self) -> Option<(&SetAttr<i32>, &Moo<GroundDomain>)>
pub fn as_set_ground(&self) -> Option<(&SetAttr<i32>, &Moo<GroundDomain>)>
If this is a GroundDomain::Set, get immutable references to its attributes and inner domain
Sourcepub fn as_set_ground_mut(
&mut self,
) -> Option<(&mut SetAttr<i32>, &mut Moo<GroundDomain>)>
pub fn as_set_ground_mut( &mut self, ) -> Option<(&mut SetAttr<i32>, &mut Moo<GroundDomain>)>
If this is a GroundDomain::Set, get mutable references to its attributes and inner domain
Sourcepub fn as_tuple(&self) -> Option<Vec<DomainPtr>>
pub fn as_tuple(&self) -> Option<Vec<DomainPtr>>
If this is a tuple domain, get pointers to its element domains.
Sourcepub fn as_tuple_mut(&mut self) -> Option<&mut Vec<DomainPtr>>
pub fn as_tuple_mut(&mut self) -> Option<&mut Vec<DomainPtr>>
If this is a tuple domain, get a mutable reference to its vector of element domains. The domain always becomes UnresolvedDomain::Tuple after this operation.
Sourcepub fn as_tuple_ground(&self) -> Option<&Vec<Moo<GroundDomain>>>
pub fn as_tuple_ground(&self) -> Option<&Vec<Moo<GroundDomain>>>
If this is a GroundDomain::Tuple, get immutable references to its element domains
Sourcepub fn as_tuple_ground_mut(&mut self) -> Option<&mut Vec<Moo<GroundDomain>>>
pub fn as_tuple_ground_mut(&mut self) -> Option<&mut Vec<Moo<GroundDomain>>>
If this is a GroundDomain::Tuple, get mutable reference to its element domains
Sourcepub fn as_record(&self) -> Option<Vec<RecordEntry>>
pub fn as_record(&self) -> Option<Vec<RecordEntry>>
If this is a record domain, clone and return its entries.
Sourcepub fn as_record_ground(&self) -> Option<&Vec<RecordEntryGround>>
pub fn as_record_ground(&self) -> Option<&Vec<RecordEntryGround>>
If this is a GroundDomain::Record, get a mutable reference to its entries
Sourcepub fn as_record_mut(&mut self) -> Option<&mut Vec<RecordEntry>>
pub fn as_record_mut(&mut self) -> Option<&mut Vec<RecordEntry>>
If this is a record domain, get a mutable reference to its list of entries. The domain always becomes UnresolvedDomain::Record after this operation.
Sourcepub fn as_record_ground_mut(&mut self) -> Option<&mut Vec<RecordEntryGround>>
pub fn as_record_ground_mut(&mut self) -> Option<&mut Vec<RecordEntryGround>>
If this is a GroundDomain::Record, get a mutable reference to its entries
Sourcepub fn union(&self, other: &Domain) -> Result<Domain, DomainOpError>
pub fn union(&self, other: &Domain) -> Result<Domain, DomainOpError>
Compute the intersection of two domains
Sourcepub fn intersect(&self, other: &Domain) -> Result<Domain, DomainOpError>
pub fn intersect(&self, other: &Domain) -> Result<Domain, DomainOpError>
Compute the intersection of two ground domains
Sourcepub fn values(&self) -> Result<impl Iterator<Item = Literal>, DomainOpError>
pub fn values(&self) -> Result<impl Iterator<Item = Literal>, DomainOpError>
If the domain is ground, return an iterator over its values
Sourcepub fn length(&self) -> Result<u64, DomainOpError>
pub fn length(&self) -> Result<u64, DomainOpError>
If the domain is ground, return its size bound
Sourcepub fn from_literal_vec(vals: &[Literal]) -> Result<DomainPtr, DomainOpError>
pub fn from_literal_vec(vals: &[Literal]) -> Result<DomainPtr, DomainOpError>
Construct a ground domain from a slice of values
Trait Implementations§
Source§impl Biplate<Domain> for Domain
impl Biplate<Domain> for Domain
Source§fn biplate(&self) -> (Tree<Domain>, Box<dyn Fn(Tree<Domain>) -> Domain>)
fn biplate(&self) -> (Tree<Domain>, Box<dyn Fn(Tree<Domain>) -> Domain>)
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Source§impl Biplate<Expression> for Domain
impl Biplate<Expression> for Domain
Source§fn biplate(&self) -> (Tree<Expression>, Box<dyn Fn(Tree<Expression>) -> Domain>)
fn biplate(&self) -> (Tree<Expression>, Box<dyn Fn(Tree<Expression>) -> Domain>)
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Source§impl Biplate<GroundDomain> for Domain
impl Biplate<GroundDomain> for Domain
Source§fn biplate(
&self,
) -> (Tree<GroundDomain>, Box<dyn Fn(Tree<GroundDomain>) -> Domain>)
fn biplate( &self, ) -> (Tree<GroundDomain>, Box<dyn Fn(Tree<GroundDomain>) -> Domain>)
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Source§impl Biplate<IntVal> for Domain
impl Biplate<IntVal> for Domain
Source§fn biplate(&self) -> (Tree<IntVal>, Box<dyn Fn(Tree<IntVal>) -> Domain>)
fn biplate(&self) -> (Tree<IntVal>, Box<dyn Fn(Tree<IntVal>) -> Domain>)
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Source§impl Biplate<Moo<Domain>> for Domain
impl Biplate<Moo<Domain>> for Domain
Source§fn biplate(&self) -> (Tree<DomainPtr>, Box<dyn Fn(Tree<DomainPtr>) -> Domain>)
fn biplate(&self) -> (Tree<DomainPtr>, Box<dyn Fn(Tree<DomainPtr>) -> Domain>)
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Source§impl Biplate<RecordEntry> for Domain
impl Biplate<RecordEntry> for Domain
Source§fn biplate(
&self,
) -> (Tree<RecordEntry>, Box<dyn Fn(Tree<RecordEntry>) -> Domain>)
fn biplate( &self, ) -> (Tree<RecordEntry>, Box<dyn Fn(Tree<RecordEntry>) -> Domain>)
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Source§impl Biplate<Reference> for Domain
impl Biplate<Reference> for Domain
Source§fn biplate(&self) -> (Tree<Reference>, Box<dyn Fn(Tree<Reference>) -> Domain>)
fn biplate(&self) -> (Tree<Reference>, Box<dyn Fn(Tree<Reference>) -> Domain>)
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Source§impl Biplate<UnresolvedDomain> for Domain
impl Biplate<UnresolvedDomain> for Domain
Source§fn biplate(
&self,
) -> (Tree<UnresolvedDomain>, Box<dyn Fn(Tree<UnresolvedDomain>) -> Domain>)
fn biplate( &self, ) -> (Tree<UnresolvedDomain>, Box<dyn Fn(Tree<UnresolvedDomain>) -> Domain>)
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Source§impl<'de> Deserialize<'de> for Domain
impl<'de> Deserialize<'de> for Domain
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Quine for Domain
impl Quine for Domain
fn ctor_tokens(&self) -> TokenStream
Source§impl Typeable for Domain
impl Typeable for Domain
fn return_type(&self) -> ReturnType
Source§impl Uniplate for Domain
impl Uniplate for Domain
Source§fn uniplate(&self) -> (Tree<Domain>, Box<dyn Fn(Tree<Domain>) -> Domain>)
fn uniplate(&self) -> (Tree<Domain>, Box<dyn Fn(Tree<Domain>) -> Domain>)
Uniplate. Read more§fn descend(&self, op: &impl Fn(Self) -> Self) -> Self
fn descend(&self, op: &impl Fn(Self) -> Self) -> Self
§fn universe(&self) -> VecDeque<Self>
fn universe(&self) -> VecDeque<Self>
§fn with_children(&self, children: VecDeque<Self>) -> Self
fn with_children(&self, children: VecDeque<Self>) -> Self
§fn transform(&self, f: &impl Fn(Self) -> Self) -> Self
fn transform(&self, f: &impl Fn(Self) -> Self) -> Self
§fn rewrite(&self, f: &impl Fn(Self) -> Option<Self>) -> Self
fn rewrite(&self, f: &impl Fn(Self) -> Option<Self>) -> Self
§fn cata<T>(&self, op: &impl Fn(Self, VecDeque<T>) -> T) -> T
fn cata<T>(&self, op: &impl Fn(Self, VecDeque<T>) -> T) -> T
impl Eq for Domain
impl StructuralPartialEq for Domain
Auto Trait Implementations§
impl Freeze for Domain
impl !RefUnwindSafe for Domain
impl !Send for Domain
impl !Sync for Domain
impl Unpin for Domain
impl !UnwindSafe for Domain
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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>
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>
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§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 16 bytes
Size for each variant:
Ground: 8 bytesUnresolved: 8 bytes