pub struct Tail;Expand description
Tail combinator: denotes the “tail” of the format, useful for under-specification.
Parsing semantics: consumes and return all remaining bytes (even if the input is empty).
§Note
The DPS serialization replaces (not prepends to) the output buffer,
so Tail should only appear at the end of a format (and the trait system enforces this).
Trait Implementations§
Source§impl BytesCombinator for Tail
impl BytesCombinator for Tail
Source§proof fn lemma_byte_len_is_buf_len(&self, s: Seq<u8>)
proof fn lemma_byte_len_is_buf_len(&self, s: Seq<u8>)
Source§impl Consistency for Tail
impl Consistency for Tail
impl Copy for Tail
Source§impl<'a> DerOrd<&'a [u8]> for Tail
impl<'a> DerOrd<&'a [u8]> for Tail
Source§proof fn lemma_der_serialize_len(&self, value: Seq<u8>)
proof fn lemma_der_serialize_len(&self, value: Seq<u8>)
Source§open spec fn der_remaining(&self, value: Seq<u8>, state: BytesDerState) -> Seq<u8>
open spec fn der_remaining(&self, value: Seq<u8>, state: BytesDerState) -> Seq<u8>
{ value[state.pos..] }Source§open spec fn der_state_valid(&self, value: Seq<u8>, state: BytesDerState) -> bool
open spec fn der_state_valid(&self, value: Seq<u8>, state: BytesDerState) -> bool
{ state.pos <= value.len() }Source§exec fn der_start(&self, b: &&'a [u8]) -> state : BytesDerState
exec fn der_start(&self, b: &&'a [u8]) -> state : BytesDerState
Source§impl DerOrd<[u8]> for Tail
impl DerOrd<[u8]> for Tail
Source§proof fn lemma_der_serialize_len(&self, value: Seq<u8>)
proof fn lemma_der_serialize_len(&self, value: Seq<u8>)
Source§open spec fn der_remaining(&self, value: Seq<u8>, state: BytesDerState) -> Seq<u8>
open spec fn der_remaining(&self, value: Seq<u8>, state: BytesDerState) -> Seq<u8>
{ value[state.pos..] }Source§open spec fn der_state_valid(&self, value: Seq<u8>, state: BytesDerState) -> bool
open spec fn der_state_valid(&self, value: Seq<u8>, state: BytesDerState) -> bool
{ state.pos <= value.len() }Source§exec fn der_start(&self, b: &[u8]) -> state : BytesDerState
exec fn der_start(&self, b: &[u8]) -> state : BytesDerState
Source§impl EquivSerializers for Tail
impl EquivSerializers for Tail
Source§impl GoodSerializer for Tail
impl GoodSerializer for Tail
Source§proof fn lemma_serialize_len(&self, v: Self::SVal)
proof fn lemma_serialize_len(&self, v: Self::SVal)
Source§fn serialize_inv(&self) -> bool
fn serialize_inv(&self) -> bool
Source§impl NonMalleable for Tail
impl NonMalleable for Tail
Source§impl Productive for Tail
impl Productive for Tail
Source§open spec fn productive_inv(&self) -> bool
open spec fn productive_inv(&self) -> bool
{ false }Source§proof fn lemma_productive(&self, s: Seq<u8>)
proof fn lemma_productive(&self, s: Seq<u8>)
Source§impl SPRoundTripDps for Tail
impl SPRoundTripDps for Tail
Source§impl SafeParser for Tail
impl SafeParser for Tail
Source§impl<'i, Output: OutputBuf> Serializer<Output, &'i [u8]> for Tail
impl<'i, Output: OutputBuf> Serializer<Output, &'i [u8]> for Tail
Source§exec fn serialize_into(&self, v: &&'i [u8], obuf: &mut Output)
exec fn serialize_into(&self, v: &&'i [u8], obuf: &mut Output)
Source§impl<Output: OutputBuf> Serializer<Output, [u8]> for Tail
impl<Output: OutputBuf> Serializer<Output, [u8]> for Tail
Source§exec fn serialize_into(&self, v: &[u8], obuf: &mut Output)
exec fn serialize_into(&self, v: &[u8], obuf: &mut Output)
Source§impl SoundParser for Tail
impl SoundParser for Tail
Source§impl SpecByteLen for Tail
impl SpecByteLen for Tail
Source§impl SpecParser for Tail
impl SpecParser for Tail
Source§impl SpecSerializer for Tail
impl SpecSerializer for Tail
Source§impl SpecSerializerDps for Tail
impl SpecSerializerDps for Tail
Source§impl ValueByteLen for Tail
impl ValueByteLen for Tail
Source§open spec fn value_byte_len(v: Self::T) -> nat
open spec fn value_byte_len(v: Self::T) -> nat
{ v.len() }Source§proof fn lemma_value_len_matches_byte_len(&self, v: Self::T)
proof fn lemma_value_len_matches_byte_len(&self, v: Self::T)
Auto Trait Implementations§
impl Freeze for Tail
impl RefUnwindSafe for Tail
impl Send for Tail
impl Sync for Tail
impl Unpin for Tail
impl UnsafeUnpin for Tail
impl UnwindSafe for Tail
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: From<T>,
impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: From<T>,
fn obeys_from_spec() -> bool
fn from_spec(v: T) -> VERUS_SPEC__A
§impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: Into<T>,
impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: Into<T>,
fn obeys_into_spec() -> bool
fn into_spec(self) -> T
§impl<T, U> IntoSpecImpl<U> for Twhere
U: From<T>,
impl<T, U> IntoSpecImpl<U> for Twhere
U: From<T>,
fn obeys_into_spec() -> bool
fn into_spec(self) -> U
Source§impl<C> NonAmbiguous for Cwhere
C: SPRoundTrip,
impl<C> NonAmbiguous for Cwhere
C: SPRoundTrip,
Source§open spec fn nonamb_inv(&self) -> bool
open spec fn nonamb_inv(&self) -> bool
{ self.sp_roundtrip_inv() }Source§proof fn lemma_serialize_injective(
&self,
v1: <C as Consistency>::Val,
v2: <C as Consistency>::Val,
)
proof fn lemma_serialize_injective( &self, v1: <C as Consistency>::Val, v2: <C as Consistency>::Val, )
Source§impl<C> PSRoundTrip for C
impl<C> PSRoundTrip for C
Source§impl<C> SPRoundTrip for C
impl<C> SPRoundTrip for C
Source§open spec fn sp_roundtrip_inv(&self) -> bool
open spec fn sp_roundtrip_inv(&self) -> bool
{ self.serialize_inv() && self.equiv_inv() && self.unambiguous() }