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
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.skip(state.pos as int) }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.skip(state.pos as int) }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§proof fn lemma_parse_non_malleable(&self, buf1: Seq<u8>, buf2: Seq<u8>)
proof fn lemma_parse_non_malleable(&self, buf1: Seq<u8>, buf2: Seq<u8>)
Source§fn nonmal_inv(&self) -> bool
fn nonmal_inv(&self) -> bool
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§proof fn theorem_serialize_dps_parse_roundtrip(&self, v: Self::T, obuf: Seq<u8>)
proof fn theorem_serialize_dps_parse_roundtrip(&self, v: Self::T, obuf: Seq<u8>)
Source§fn unambiguous(&self) -> bool
fn unambiguous(&self) -> bool
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)
impl Copy for Tail
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§open spec fn ps_roundtrip_inv(&self) -> bool
open spec fn ps_roundtrip_inv(&self) -> bool
{ self.safe_inv() && self.sound_inv() && self.nonmal_inv() && self.sp_roundtrip_inv() }Source§proof fn theorem_parse_serialize_roundtrip(&self, ibuf: Seq<u8>)
proof fn theorem_parse_serialize_roundtrip(&self, ibuf: Seq<u8>)
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() }