eflint_json::spec

Enum Expression

Source
pub enum Expression {
    Primitive(ExpressionPrimitive),
    VarRef(ExpressionVarRef),
    ConstructorApp(ExpressionConstructorApp),
    Operator(ExpressionOperator),
    Iterator(ExpressionIterator),
    Projection(ExpressionProjection),
}
Expand description

Defines an eFLINT expression that evaluates to a value.

There are multiple variants of this:

Variants§

§

Primitive(ExpressionPrimitive)

eFLINT primitives, i.e., literal values:

"Amy"
42
42.0
true
§

VarRef(ExpressionVarRef)

eFLINT variable references:

citizen
// As in second occurance in:
Foreach citizen: citizen
§

ConstructorApp(ExpressionConstructorApp)

Constructor applications, i.e., instantiating facts:

citizen("Amy")
§

Operator(ExpressionOperator)

Operators (addition, multiplication, Holds, Violated, etc):

1 + 2
Holds("Amy")
§

Iterator(ExpressionIterator)

Iterators that do inherent quantification.

Note that this is different from operators like Count, which do not quantify themselves but rather process an already produced instance expression.

For example:

Foreach citizen : citizen.
Forall citizen : citizen.
Exists citizen : citizen.
§

Projection(ExpressionProjection)

Projection:

citizen.string

Implementations§

Source§

impl Expression

Source

pub fn kind(&self) -> Option<ExpressionKind>

Returns the kind of this expression, whether it’s a boolean or instance expression.

§Returns

An auxillary::ExpressionKind denoting which of the two kinds it is. If None is returned, then this is not statically determinable (this is the case for Operators and Iterators).

Trait Implementations§

Source§

impl Clone for Expression

Source§

fn clone(&self) -> Expression

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Expression

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Expression

Source§

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 EnumDebug for Expression

Source§

fn type_name() -> &'static str

Returns the static name of the type used for EnumDebug-printing. Read more
Source§

fn variant_names() -> &'static [&'static str]

Returns all variants in the trait as a list of names. Read more
Source§

fn variant_name(&self) -> &'static str

Returns the static name of the variant. Read more
Source§

fn variant(&self) -> EnumDebugFormatter<'_, Self>

Returns a formatter for this enum that writes its variant name. Read more
Source§

fn variants() -> Copied<Iter<'static, &'static str>>

Returns an iterator over all variants in this enum. Read more
Source§

impl Serialize for Expression

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,