Skip to main content

ValueByteLen

Trait ValueByteLen 

Source
pub trait ValueByteLen: SpecByteLen + Consistency<Val = Self::T> {
    // Required methods
    spec fn value_byte_len(v: Self::T) -> nat;
    proof fn lemma_value_len_matches_byte_len(&self, v: Self::T);
}
Expand description

Like SpecByteLen, but the byte length can be computed from the value alone, without needing to refer to the combinator/format’s parameters or internal states (self).

Required Methods§

Source

spec fn value_byte_len(v: Self::T) -> nat

The byte length computed from the value alone.

Source

proof fn lemma_value_len_matches_byte_len(&self, v: Self::T)

requires
self.consistent(v),
ensures
self.byte_len(v) == Self::value_byte_len(v),

Bridge between the parameterized byte-length view and the value-based one.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl ValueByteLen for Integer8Fmt

Source§

impl ValueByteLen for Empty

Source§

impl ValueByteLen for Void

Source§

impl ValueByteLen for I8

Source§

impl ValueByteLen for I16Be

Source§

impl ValueByteLen for I16Le

Source§

impl ValueByteLen for I32Be

Source§

impl ValueByteLen for I32Le

Source§

impl ValueByteLen for I64Be

Source§

impl ValueByteLen for I64Le

Source§

impl ValueByteLen for Eof

Source§

impl ValueByteLen for Tail

Source§

impl ValueByteLen for U8

Source§

impl ValueByteLen for U16Be

Source§

impl ValueByteLen for U16Le

Source§

impl ValueByteLen for U24Be

Source§

impl ValueByteLen for U24Le

Source§

impl ValueByteLen for U32Be

Source§

impl ValueByteLen for U32Le

Source§

impl ValueByteLen for U64Be

Source§

impl ValueByteLen for U64Le

Source§

impl<A, B> ValueByteLen for PairRev<A, B>

Source§

impl<A, B> ValueByteLen for Bind<A, B>
where A: ValueByteLen, B: SpecMap<Input = A::T>, B::Output: ValueByteLen,

Source§

impl<A, B, const CHECK: bool> ValueByteLen for Preceded<A, A::T, B, CHECK>

Source§

impl<A, B, const CHECK: bool> ValueByteLen for Terminated<A, B, B::T, CHECK>

Source§

impl<A, Pred> ValueByteLen for Refined<A, Pred>
where A: ValueByteLen, Pred: SpecPred<A::T>,

Source§

impl<A, Then> ValueByteLen for AndThen<A, Then>
where A: BytesCombinator + Consistency<Val = Seq<u8>>, Then: ValueByteLen,

Source§

impl<A: ValueByteLen> ValueByteLen for Star<A>

Source§

impl<A: ValueByteLen, B: ValueByteLen> ValueByteLen for Sum<A, B>

Source§

impl<A: ValueByteLen, B: ValueByteLen> ValueByteLen for Choice<A, B>

Source§

impl<A: ValueByteLen, B: ValueByteLen> ValueByteLen for Optional<A, B>

Source§

impl<A: ValueByteLen, B: ValueByteLen> ValueByteLen for Repeat<A, B>

Source§

impl<A: ValueByteLen, B: ValueByteLen> ValueByteLen for Pair<A, B>

Source§

impl<A: ValueByteLen, B: ValueByteLen, C: ValueByteLen> ValueByteLen for Permute3<A, B, C>

Source§

impl<A: ValueByteLen, B: ValueByteLen, C: ValueByteLen, D: ValueByteLen> ValueByteLen for Permute4<A, B, C, D>

Source§

impl<A: ValueByteLen, B: ValueByteLen, C: ValueByteLen, D: ValueByteLen, E: ValueByteLen> ValueByteLen for Permute5<A, B, C, D, E>

Source§

impl<C: ValueByteLen> ValueByteLen for OptionalEnd<C>

Source§

impl<C: ValueByteLen> ValueByteLen for RepeatTillEnd<C>

Source§

impl<C: ValueByteLen, N: AsLen> ValueByteLen for RepeatN<C, N>

Source§

impl<Head, Tail> ValueByteLen for Implicit<Head, Tail>
where Head: StaticByteLen, Tail: DepCombinator<Key = Head::T>, Tail::Body: ValueByteLen<T = Tail::Val>,

Source§

impl<Inner> ValueByteLen for Const<Inner, Inner::T>
where Inner: ValueByteLen,

Source§

impl<Inner: ValueByteLen> ValueByteLen for Cond<Inner>

Source§

impl<Inner: ValueByteLen> ValueByteLen for Named<Inner>

Source§

impl<Inner: ValueByteLen> ValueByteLen for Opt<Inner>

Source§

impl<Inner: ValueByteLen, Len: AsLen> ValueByteLen for ExactLen<Inner, Len>

Source§

impl<Len: AsLen> ValueByteLen for Varied<Len>

Source§

impl<Of, Tg> ValueByteLen for SuffixTagged<Of, Tg, Tg::T>
where Tg: StaticByteLen, Of: ValueByteLen,

Source§

impl<P1: ValueByteLen, P2: ValueByteLen> ValueByteLen for Permute2<P1, P2>

Source§

impl<T, C: ValueByteLen, const N: usize> ValueByteLen for Dispatch<T, C, N>

Source§

impl<Tg, Of> ValueByteLen for PrefixTagged<Tg, Tg::T, Of>
where Tg: StaticByteLen, Of: ValueByteLen,

Source§

impl<const DER: bool> ValueByteLen for BoolFmt<DER>

Source§

impl<const N: usize> ValueByteLen for Fixed<N>

Source§

impl<const N: usize> ValueByteLen for Const<Fixed<N>, [u8; N]>

Source§

impl<const N: usize, C: ValueByteLen> ValueByteLen for Array<N, C>