Skip to main content

TLVal

Struct TLVal 

Source
pub struct TLVal<Tag, Len, Body>(pub Body, pub PhantomData<(Tag, Len)>);
Expand description

One of the dependent family of combinators

Typically used as Implicit((U8, U16Le), TLVOf(body)).

Tuple Fields§

§0: Body§1: PhantomData<(Tag, Len)>

Trait Implementations§

Source§

impl<Tag, Len, V> DepCombinator for TLVal<Tag, Len, V>
where Len: AsLen, V: DepCombinator<Key = Tag>, V::Body: SpecByteLen<T = V::Val>,

Source§

open spec fn apply(&self, key: Self::Key) -> Self::Body

{
    let (tag, len) = key;
    ExactLen(len, self.0.apply(tag))
}
Source§

open spec fn recover(&self, value: Self::Val) -> Self::Key

{
    let tag = self.0.recover(value);
    let body = self.0.apply(tag);
    (tag, Len::as_self(body.byte_len(value)))
}
Source§

open spec fn recover_inv(&self) -> bool

{ self.0.recover_inv() }
Source§

proof fn lemma_recover_consistent(&self, key: Self::Key, value: Self::Val)

Source§

type Key = (Tag, Len)

The type of keys parsed by the head combinator/to be recovered during serialization.
Source§

type Val = <V as DepCombinator>::Val

The type of values consumed/produced by the body combinator.
Source§

type Body = ExactLen<<V as DepCombinator>::Body, Len>

The type of the body combinator produced by apply.

Auto Trait Implementations§

§

impl<Tag, Len, Body> Freeze for TLVal<Tag, Len, Body>
where Body: Freeze,

§

impl<Tag, Len, Body> RefUnwindSafe for TLVal<Tag, Len, Body>
where Body: RefUnwindSafe, Tag: RefUnwindSafe, Len: RefUnwindSafe,

§

impl<Tag, Len, Body> Send for TLVal<Tag, Len, Body>
where Body: Send, Tag: Send, Len: Send,

§

impl<Tag, Len, Body> Sync for TLVal<Tag, Len, Body>
where Body: Sync, Tag: Sync, Len: Sync,

§

impl<Tag, Len, Body> Unpin for TLVal<Tag, Len, Body>
where Body: Unpin, Tag: Unpin, Len: Unpin,

§

impl<Tag, Len, Body> UnsafeUnpin for TLVal<Tag, Len, Body>
where Body: UnsafeUnpin,

§

impl<Tag, Len, Body> UnwindSafe for TLVal<Tag, Len, Body>
where Body: UnwindSafe, Tag: UnwindSafe, Len: UnwindSafe,

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: From<T>,

§

fn obeys_from_spec() -> bool

§

fn from_spec(v: T) -> VERUS_SPEC__A

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.

§

impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: Into<T>,

§

fn obeys_into_spec() -> bool

§

fn into_spec(self) -> T

§

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

§

fn obeys_into_spec() -> bool

§

fn into_spec(self) -> U

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.
§

impl<T, VERUS_SPEC__A> TryFromSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: TryFrom<T>,

§

fn obeys_try_from_spec() -> bool

§

fn try_from_spec( v: T, ) -> Result<VERUS_SPEC__A, <VERUS_SPEC__A as TryFrom<T>>::Error>

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.
§

impl<T, VERUS_SPEC__A> TryIntoSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: TryInto<T>,

§

fn obeys_try_into_spec() -> bool

§

fn try_into_spec(self) -> Result<T, <VERUS_SPEC__A as TryInto<T>>::Error>

§

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

§

fn obeys_try_into_spec() -> bool

§

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

§

impl<A> SpecEq<&A> for A
where A: ?Sized,

§

impl<A> SpecEq<&mut A> for A
where A: ?Sized,

§

impl<A> SpecEq<A> for A
where A: ?Sized,

§

impl<A> SpecEq<Ghost<A>> for A

§

impl<A> SpecEq<Tracked<A>> for A