pub struct Declared(/* private fields */);Expand description
Represent a specific function (or constant, or sort) declared in a Solver.
Declared is an opaque shared reference to a Declaration declared in a Solver. The only way to obtain a Declared is through Solver::declare(). Declared derefs to the underlying Declaration to immutably access its fields.
Comparison of Declared objects is nominal, that is, equality and hashing operate on the
identity of the objects, not on their values. In other words, two Declared objects with
exactly the same fields (and in particular the same name), created by two different calls to
Solver::declare() will compare different and have a possibly different hash. Moreover,
cloning a Declared object is a cheap operation and produces a second object which compares
equal to the first. Under the hood, this is the behavior of Nominal<Arc<Declaration>>, so we
also refer to the Nominal type for details.
Trait Implementations§
impl Eq for Declared
Source§impl From<Declared> for UserFunction
impl From<Declared> for UserFunction
Source§impl From<Declared> for FunctionRef
impl From<Declared> for FunctionRef
impl StructuralPartialEq for Declared
Auto Trait Implementations§
impl Freeze for Declared
impl RefUnwindSafe for Declared
impl Send for Declared
impl Sync for Declared
impl Unpin for Declared
impl UnsafeUnpin for Declared
impl UnwindSafe for Declared
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> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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