pub enum AbstractLiteral<T: AbstractLiteralValue> {
Set(Vec<T>),
Matrix(Vec<T>, T::Dom),
Tuple(Vec<T>),
Record(Vec<RecordValue<T>>),
Function(Vec<(T, T)>),
}Variants§
Set(Vec<T>)
Matrix(Vec<T>, T::Dom)
A 1 dimensional matrix slice with an index domain.
Tuple(Vec<T>)
Record(Vec<RecordValue<T>>)
Function(Vec<(T, T)>)
Implementations§
Source§impl<T> AbstractLiteral<T>where
T: AbstractLiteralValue,
impl<T> AbstractLiteral<T>where
T: AbstractLiteralValue,
Sourcepub fn matrix_implied_indices(elems: Vec<T>) -> Self
pub fn matrix_implied_indices(elems: Vec<T>) -> Self
Creates a matrix with elements elems, with domain int(1..).
This acts as a variable sized list.
Sourcepub fn unwrap_list(&self) -> Option<&Vec<T>>
pub fn unwrap_list(&self) -> Option<&Vec<T>>
If the AbstractLiteral is a list, returns its elements.
A list is any a matrix with the domain int(1..). This includes matrix literals without
any explicitly specified domain.
Source§impl AbstractLiteral<Expression>
impl AbstractLiteral<Expression>
Sourcepub fn into_literals(self) -> Option<AbstractLiteral<Literal>>
pub fn into_literals(self) -> Option<AbstractLiteral<Literal>>
If all the elements are literals, returns this as an AbstractLiteralNone.
Trait Implementations§
Source§impl Biplate<AbstractLiteral<Expression>> for Expression
impl Biplate<AbstractLiteral<Expression>> for Expression
Source§fn biplate(
&self,
) -> (Tree<AbstractLiteral<Expression>>, Box<dyn Fn(Tree<AbstractLiteral<Expression>>) -> Expression>)
fn biplate( &self, ) -> (Tree<AbstractLiteral<Expression>>, Box<dyn Fn(Tree<AbstractLiteral<Expression>>) -> Expression>)
Definition of a Biplate. Read more
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
Reconstructs the node with the given children. Read more
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Biplate variant of [
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
Gets all children of a node, including itself and all children. Read more
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
Returns the children of a type. If to == from then it returns the original element (in contrast to children). Read more
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
Applies the given function to all nodes bottom up. Read more
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over all direct children of the input, paired with a function that
“fills the hole” where the child was with a new value. Read more
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over the universe of the input, paired with a function that “fills the
hole” where the child was with a new value. Read more
Source§impl Biplate<AbstractLiteral<Expression>> for Literal
impl Biplate<AbstractLiteral<Expression>> for Literal
Source§fn biplate(
&self,
) -> (Tree<AbstractLiteral<Expression>>, Box<dyn Fn(Tree<AbstractLiteral<Expression>>) -> Literal>)
fn biplate( &self, ) -> (Tree<AbstractLiteral<Expression>>, Box<dyn Fn(Tree<AbstractLiteral<Expression>>) -> Literal>)
Definition of a Biplate. Read more
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
Reconstructs the node with the given children. Read more
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Biplate variant of [
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
Gets all children of a node, including itself and all children. Read more
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
Returns the children of a type. If to == from then it returns the original element (in contrast to children). Read more
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
Applies the given function to all nodes bottom up. Read more
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over all direct children of the input, paired with a function that
“fills the hole” where the child was with a new value. Read more
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over the universe of the input, paired with a function that “fills the
hole” where the child was with a new value. Read more
Source§impl Biplate<AbstractLiteral<Literal>> for Atom
impl Biplate<AbstractLiteral<Literal>> for Atom
Source§fn biplate(
&self,
) -> (Tree<AbstractLiteral<Literal>>, Box<dyn Fn(Tree<AbstractLiteral<Literal>>) -> Atom>)
fn biplate( &self, ) -> (Tree<AbstractLiteral<Literal>>, Box<dyn Fn(Tree<AbstractLiteral<Literal>>) -> Atom>)
Definition of a Biplate. Read more
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
Reconstructs the node with the given children. Read more
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Biplate variant of [
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
Gets all children of a node, including itself and all children. Read more
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
Returns the children of a type. If to == from then it returns the original element (in contrast to children). Read more
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
Applies the given function to all nodes bottom up. Read more
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over all direct children of the input, paired with a function that
“fills the hole” where the child was with a new value. Read more
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over the universe of the input, paired with a function that “fills the
hole” where the child was with a new value. Read more
Source§impl Biplate<AbstractLiteral<Literal>> for Expression
impl Biplate<AbstractLiteral<Literal>> for Expression
Source§fn biplate(
&self,
) -> (Tree<AbstractLiteral<Literal>>, Box<dyn Fn(Tree<AbstractLiteral<Literal>>) -> Expression>)
fn biplate( &self, ) -> (Tree<AbstractLiteral<Literal>>, Box<dyn Fn(Tree<AbstractLiteral<Literal>>) -> Expression>)
Definition of a Biplate. Read more
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
Reconstructs the node with the given children. Read more
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Biplate variant of [
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
Gets all children of a node, including itself and all children. Read more
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
Returns the children of a type. If to == from then it returns the original element (in contrast to children). Read more
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
Applies the given function to all nodes bottom up. Read more
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over all direct children of the input, paired with a function that
“fills the hole” where the child was with a new value. Read more
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over the universe of the input, paired with a function that “fills the
hole” where the child was with a new value. Read more
Source§impl Biplate<AbstractLiteral<Literal>> for Literal
impl Biplate<AbstractLiteral<Literal>> for Literal
Source§fn biplate(
&self,
) -> (Tree<AbstractLiteral<Literal>>, Box<dyn Fn(Tree<AbstractLiteral<Literal>>) -> Literal>)
fn biplate( &self, ) -> (Tree<AbstractLiteral<Literal>>, Box<dyn Fn(Tree<AbstractLiteral<Literal>>) -> Literal>)
Definition of a Biplate. Read more
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
Reconstructs the node with the given children. Read more
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Biplate variant of [
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
Gets all children of a node, including itself and all children. Read more
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
Returns the children of a type. If to == from then it returns the original element (in contrast to children). Read more
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
Applies the given function to all nodes bottom up. Read more
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over all direct children of the input, paired with a function that
“fills the hole” where the child was with a new value. Read more
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over the universe of the input, paired with a function that “fills the
hole” where the child was with a new value. Read more
Source§impl<U, To> Biplate<To> for AbstractLiteral<U>where
To: Uniplate,
U: AbstractLiteralValue + Biplate<AbstractLiteral<U>> + Biplate<To>,
RecordValue<U>: Biplate<AbstractLiteral<U>> + Biplate<To>,
impl<U, To> Biplate<To> for AbstractLiteral<U>where
To: Uniplate,
U: AbstractLiteralValue + Biplate<AbstractLiteral<U>> + Biplate<To>,
RecordValue<U>: Biplate<AbstractLiteral<U>> + Biplate<To>,
Source§fn biplate(&self) -> (Tree<To>, Box<dyn Fn(Tree<To>) -> Self>)
fn biplate(&self) -> (Tree<To>, Box<dyn Fn(Tree<To>) -> Self>)
Definition of a Biplate. Read more
§fn with_children_bi(&self, children: VecDeque<To>) -> Self
fn with_children_bi(&self, children: VecDeque<To>) -> Self
Reconstructs the node with the given children. Read more
§fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
fn descend_bi(&self, op: &impl Fn(To) -> To) -> Self
Biplate variant of [
Uniplate::descend] Read more§fn universe_bi(&self) -> VecDeque<To>
fn universe_bi(&self) -> VecDeque<To>
Gets all children of a node, including itself and all children. Read more
§fn children_bi(&self) -> VecDeque<To>
fn children_bi(&self) -> VecDeque<To>
Returns the children of a type. If to == from then it returns the original element (in contrast to children). Read more
§fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
fn transform_bi(&self, op: &impl Fn(To) -> To) -> Self
Applies the given function to all nodes bottom up. Read more
§fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn holes_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over all direct children of the input, paired with a function that
“fills the hole” where the child was with a new value. Read more
§fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
fn contexts_bi(&self) -> impl Iterator<Item = (To, impl Fn(To))>
Returns an iterator over the universe of the input, paired with a function that “fills the
hole” where the child was with a new value. Read more
Source§impl<T: Clone + AbstractLiteralValue> Clone for AbstractLiteral<T>where
T::Dom: Clone,
impl<T: Clone + AbstractLiteralValue> Clone for AbstractLiteral<T>where
T::Dom: Clone,
Source§fn clone(&self) -> AbstractLiteral<T>
fn clone(&self) -> AbstractLiteral<T>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<'de, T> Deserialize<'de> for AbstractLiteral<T>where
T: Deserialize<'de> + AbstractLiteralValue,
T::Dom: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for AbstractLiteral<T>where
T: Deserialize<'de> + AbstractLiteralValue,
T::Dom: Deserialize<'de>,
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<T> Display for AbstractLiteral<T>where
T: AbstractLiteralValue,
impl<T> Display for AbstractLiteral<T>where
T: AbstractLiteralValue,
Source§impl HasDomain for AbstractLiteral<Literal>
impl HasDomain for AbstractLiteral<Literal>
Source§impl<T: PartialEq + AbstractLiteralValue> PartialEq for AbstractLiteral<T>where
T::Dom: PartialEq,
impl<T: PartialEq + AbstractLiteralValue> PartialEq for AbstractLiteral<T>where
T::Dom: PartialEq,
Source§impl<T> Quine for AbstractLiteral<T>where
T: AbstractLiteralValue + Quine,
impl<T> Quine for AbstractLiteral<T>where
T: AbstractLiteralValue + Quine,
fn ctor_tokens(&self) -> TokenStream
Source§impl<T> Serialize for AbstractLiteral<T>
impl<T> Serialize for AbstractLiteral<T>
Source§impl Typeable for AbstractLiteral<Expression>
impl Typeable for AbstractLiteral<Expression>
fn return_type(&self) -> ReturnType
Source§impl<T> Uniplate for AbstractLiteral<T>where
T: AbstractLiteralValue + Biplate<AbstractLiteral<T>>,
impl<T> Uniplate for AbstractLiteral<T>where
T: AbstractLiteralValue + Biplate<AbstractLiteral<T>>,
Source§fn uniplate(&self) -> (Tree<Self>, Box<dyn Fn(Tree<Self>) -> Self>)
fn uniplate(&self) -> (Tree<Self>, Box<dyn Fn(Tree<Self>) -> Self>)
Definition of a
Uniplate. Read more§fn descend(&self, op: &impl Fn(Self) -> Self) -> Self
fn descend(&self, op: &impl Fn(Self) -> Self) -> Self
Applies a function to all direct children of this Read more
§fn universe(&self) -> VecDeque<Self>
fn universe(&self) -> VecDeque<Self>
Gets all children of a node, including itself and all children. Read more
§fn with_children(&self, children: VecDeque<Self>) -> Self
fn with_children(&self, children: VecDeque<Self>) -> Self
Reconstructs the node with the given children. Read more
§fn transform(&self, f: &impl Fn(Self) -> Self) -> Self
fn transform(&self, f: &impl Fn(Self) -> Self) -> Self
Applies the given function to all nodes bottom up.
§fn rewrite(&self, f: &impl Fn(Self) -> Option<Self>) -> Self
fn rewrite(&self, f: &impl Fn(Self) -> Option<Self>) -> Self
Rewrites by applying a rule everywhere it can.
§fn cata<T>(&self, op: &impl Fn(Self, VecDeque<T>) -> T) -> T
fn cata<T>(&self, op: &impl Fn(Self, VecDeque<T>) -> T) -> T
Performs a fold-like computation on each value. Read more
impl<T: Eq + AbstractLiteralValue> Eq for AbstractLiteral<T>where
T::Dom: Eq,
impl<T: AbstractLiteralValue> StructuralPartialEq for AbstractLiteral<T>
Auto Trait Implementations§
impl<T> Freeze for AbstractLiteral<T>where
<T as AbstractLiteralValue>::Dom: Freeze,
impl<T> RefUnwindSafe for AbstractLiteral<T>where
<T as AbstractLiteralValue>::Dom: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for AbstractLiteral<T>
impl<T> Sync for AbstractLiteral<T>
impl<T> Unpin for AbstractLiteral<T>
impl<T> UnwindSafe for AbstractLiteral<T>where
<T as AbstractLiteralValue>::Dom: UnwindSafe,
T: UnwindSafe,
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> 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 moreSource§impl<T> Typeable for Twhere
T: HasDomain,
impl<T> Typeable for Twhere
T: HasDomain,
fn return_type(&self) -> ReturnType
§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: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.