Skip to main content

StaticByteLen

Trait StaticByteLen 

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

Static byte length for fixed-size combinators.

Required Methods§

Source

spec fn static_byte_len() -> nat

The statically known serialized length.

Source

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

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

Bridge between the dynamic byte-length view and the static 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 StaticByteLen for Empty

Source§

impl StaticByteLen for Void

Source§

impl StaticByteLen for I8

Source§

impl StaticByteLen for I16Be

Source§

impl StaticByteLen for I16Le

Source§

impl StaticByteLen for I32Be

Source§

impl StaticByteLen for I32Le

Source§

impl StaticByteLen for I64Be

Source§

impl StaticByteLen for I64Le

Source§

impl StaticByteLen for Eof

Source§

impl StaticByteLen for U8

Source§

impl StaticByteLen for U16Be

Source§

impl StaticByteLen for U16Le

Source§

impl StaticByteLen for U24Be

Source§

impl StaticByteLen for U24Le

Source§

impl StaticByteLen for U32Be

Source§

impl StaticByteLen for U32Le

Source§

impl StaticByteLen for U64Be

Source§

impl StaticByteLen for U64Le

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<Inner, M> StaticByteLen for Mapped<Inner, M>
where Inner: StaticByteLen, M: SpecMapper<In = Inner::T>,

Source§

impl<Inner, M> StaticByteLen for TryMap<Inner, M>
where Inner: StaticByteLen, M: SpecMapper<In = Inner::T>,

Source§

impl<Inner, M, MRev> StaticByteLen for Mapped<Inner, BiMap<M, MRev>>
where Inner: StaticByteLen, M: SpecMap<Input = Inner::T>, MRev: SpecMap<Input = M::Output, Output = M::Input>,

Source§

impl<Inner: StaticByteLen> StaticByteLen for Cond<Inner>

Source§

impl<Inner: StaticByteLen> StaticByteLen for Named<Inner>

Source§

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

Source§

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

Source§

impl<Repr, Tuple, Nominal> StaticByteLen for Bits<Repr, Tuple, Nominal>
where Repr: StaticByteLen,

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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