Skip to main content

DeepModel

Trait DeepModel 

Source
pub trait DeepModel {
    type DeepModelTy;

    // Required method
    fn deep_model(self) -> Self::DeepModelTy;
}
Expand description

The deep model corresponds to the model used for specifying operations such as equality, hash function or ordering, which are computed deeply in a data structure. Typically, such a model recursively calls deep models of inner types.

Required Associated Types§

Required Methods§

Source

fn deep_model(self) -> Self::DeepModelTy

logic

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl DeepModel for ()

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

/* Macro-generated */

Source§

type DeepModelTy = ()

Source§

impl DeepModel for BigRational

Available on creusot and crate feature std only.
Source§

fn deep_model(self) -> Self::DeepModelTy

logic(opaque)

Source§

type DeepModelTy = Real

Source§

impl DeepModel for Duration

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.view()

Source§

type DeepModelTy = Int

Source§

impl DeepModel for Instant

Available on crate feature std only.
Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.view()

Source§

type DeepModelTy = Int

Source§

impl DeepModel for Ordering

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self

Source§

type DeepModelTy = Ordering

Source§

impl DeepModel for String

Available on crate feature std only.
Source§

fn deep_model(self) -> Self::DeepModelTy

logic

Source§

type DeepModelTy = Seq<char>

Source§

impl DeepModel for bool

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self

Source§

type DeepModelTy = bool

Source§

impl DeepModel for char

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for i8

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for i16

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for i32

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for i64

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for i128

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for isize

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for str

Source§

fn deep_model(self) -> Self::DeepModelTy

logic

Source§

type DeepModelTy = Seq<char>

Source§

impl DeepModel for u8

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for u16

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for u32

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for u64

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for u128

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl DeepModel for usize

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self@

Source§

type DeepModelTy = Int

Source§

impl<A: DeepModel, Z: DeepModel, Y: DeepModel, X: DeepModel, W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (A, Z, Y, X, W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<A as DeepModel>::DeepModelTy, <Z as DeepModel>::DeepModelTy, <Y as DeepModel>::DeepModelTy, <X as DeepModel>::DeepModelTy, <W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<B: DeepModel, A: DeepModel, Z: DeepModel, Y: DeepModel, X: DeepModel, W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (B, A, Z, Y, X, W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<B as DeepModel>::DeepModelTy, <A as DeepModel>::DeepModelTy, <Z as DeepModel>::DeepModelTy, <Y as DeepModel>::DeepModelTy, <X as DeepModel>::DeepModelTy, <W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<C: DeepModel, B: DeepModel, A: DeepModel, Z: DeepModel, Y: DeepModel, X: DeepModel, W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (C, B, A, Z, Y, X, W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<C as DeepModel>::DeepModelTy, <B as DeepModel>::DeepModelTy, <A as DeepModel>::DeepModelTy, <Z as DeepModel>::DeepModelTy, <Y as DeepModel>::DeepModelTy, <X as DeepModel>::DeepModelTy, <W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<D: DeepModel, C: DeepModel, B: DeepModel, A: DeepModel, Z: DeepModel, Y: DeepModel, X: DeepModel, W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (D, C, B, A, Z, Y, X, W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<D as DeepModel>::DeepModelTy, <C as DeepModel>::DeepModelTy, <B as DeepModel>::DeepModelTy, <A as DeepModel>::DeepModelTy, <Z as DeepModel>::DeepModelTy, <Y as DeepModel>::DeepModelTy, <X as DeepModel>::DeepModelTy, <W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<E: DeepModel, D: DeepModel, C: DeepModel, B: DeepModel, A: DeepModel, Z: DeepModel, Y: DeepModel, X: DeepModel, W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (E, D, C, B, A, Z, Y, X, W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<E as DeepModel>::DeepModelTy, <D as DeepModel>::DeepModelTy, <C as DeepModel>::DeepModelTy, <B as DeepModel>::DeepModelTy, <A as DeepModel>::DeepModelTy, <Z as DeepModel>::DeepModelTy, <Y as DeepModel>::DeepModelTy, <X as DeepModel>::DeepModelTy, <W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<T: ?Sized> DeepModel for *const T

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(opaque)

ensures

result.addr == self.addr_logic()

Source§

type DeepModelTy = PtrDeepModel

Source§

impl<T: ?Sized> DeepModel for *mut T

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(opaque)

ensures

result.addr == self.addr_logic()

Source§

type DeepModelTy = PtrDeepModel

Source§

impl<T: ?Sized> DeepModel for NonNull<T>

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.view().deep_model()

Source§

type DeepModelTy = <*mut T as DeepModel>::DeepModelTy

Source§

impl<T: DeepModel + ?Sized, A: Allocator> DeepModel for Arc<T, A>

Available on crate feature nightly only.
Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

*self.view().deep_model()

Source§

type DeepModelTy = <T as DeepModel>::DeepModelTy

Source§

impl<T: DeepModel + ?Sized, A: Allocator> DeepModel for Box<T, A>

Available on crate feature nightly only.
Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

Box::new((*self).deep_model())

Source§

type DeepModelTy = Box<<T as DeepModel>::DeepModelTy>

Source§

impl<T: DeepModel + ?Sized, A: Allocator> DeepModel for Rc<T, A>

Available on crate feature nightly only.
Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

*self.view().deep_model()

Source§

type DeepModelTy = <T as DeepModel>::DeepModelTy

Source§

impl<T: DeepModel + ?Sized> DeepModel for &T

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

(*self).deep_model()

Source§

type DeepModelTy = <T as DeepModel>::DeepModelTy

Source§

impl<T: DeepModel + ?Sized> DeepModel for &mut T

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

(*self).deep_model()

Source§

type DeepModelTy = <T as DeepModel>::DeepModelTy

Source§

impl<T: DeepModel, A: Allocator> DeepModel for Vec<T, A>

Available on crate feature nightly only.
Source§

fn deep_model(self) -> Self::DeepModelTy

logic(opaque)

ensures

self.view().len() == result.len()

ensures

forall<i> 0 <= i && i < self.view().len()
==> result[i] == self[i].deep_model()
Source§

type DeepModelTy = Seq<<T as DeepModel>::DeepModelTy>

Source§

impl<T: DeepModel, A: Allocator> DeepModel for VecDeque<T, A>

Available on crate feature nightly only.
Source§

fn deep_model(self) -> Self::DeepModelTy

logic(opaque)

ensures

self.view().len() == result.len()

ensures

forall<i> 0 <= i && i < self.view().len()
==> result[i] == self[i].deep_model()
Source§

type DeepModelTy = Seq<<T as DeepModel>::DeepModelTy>

Source§

impl<T: DeepModel, E: DeepModel> DeepModel for Result<T, E>

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

match self {
    Ok(t) => Ok(t.deep_model()),
    Err(e) => Err(e.deep_model()),
}
Source§

type DeepModelTy = Result<<T as DeepModel>::DeepModelTy, <E as DeepModel>::DeepModelTy>

Source§

impl<T: DeepModel, const N: usize> DeepModel for [T; N]

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(opaque)

ensures

self.view().len() == result.len()

ensures

forall<i> 0 <= i && i < result.len() ==> result[i] == self[i].deep_model()
Source§

type DeepModelTy = Seq<<T as DeepModel>::DeepModelTy>

Source§

impl<T: DeepModel> DeepModel for (T,)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<T as DeepModel>::DeepModelTy,)

Source§

impl<T: DeepModel> DeepModel for Bound<T>

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open)

match self {
    Bound::Included(b) => Bound::Included(b.deep_model()),
    Bound::Excluded(b) => Bound::Excluded(b.deep_model()),
    Bound::Unbounded => Bound::Unbounded,
}
Source§

type DeepModelTy = Bound<<T as DeepModel>::DeepModelTy>

Source§

impl<T: DeepModel> DeepModel for Option<T>

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

match self {
    Some(t) => Some(t.deep_model()),
    None => None,
}
Source§

type DeepModelTy = Option<<T as DeepModel>::DeepModelTy>

Source§

impl<T: DeepModel> DeepModel for Reverse<T>

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

Reverse(self.0.deep_model())

Source§

type DeepModelTy = Reverse<<T as DeepModel>::DeepModelTy>

Source§

impl<T: DeepModel> DeepModel for [T]

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(opaque)

ensures

(&self)@.len() == result.len()

ensures

forall<i> 0 <= i && i < result.len() ==> result[i] == (&self)[i].deep_model()
Source§

type DeepModelTy = Seq<<T as DeepModel>::DeepModelTy>

Source§

impl<U: DeepModel, T: DeepModel> DeepModel for (U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<X: DeepModel, W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (X, W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<X as DeepModel>::DeepModelTy, <W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<Y: DeepModel, X: DeepModel, W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (Y, X, W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<Y as DeepModel>::DeepModelTy, <X as DeepModel>::DeepModelTy, <W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Source§

impl<Z: DeepModel, Y: DeepModel, X: DeepModel, W: DeepModel, V: DeepModel, U: DeepModel, T: DeepModel> DeepModel for (Z, Y, X, W, V, U, T)

Source§

fn deep_model(self) -> Self::DeepModelTy

logic(open, inline)

self.$idx.deep_model(),

Source§

type DeepModelTy = (<Z as DeepModel>::DeepModelTy, <Y as DeepModel>::DeepModelTy, <X as DeepModel>::DeepModelTy, <W as DeepModel>::DeepModelTy, <V as DeepModel>::DeepModelTy, <U as DeepModel>::DeepModelTy, <T as DeepModel>::DeepModelTy)

Implementors§