vest_lib 0.2.2

Verified parser and serializer combinators in Verus
Documentation
//! Fixed-width unsigned integer combinators.
//!
//! The exported zero-sized formats cover 8-, 16-, 24-, 32-, and 64-bit values
//! with explicit little- or big-endian order and allocation-free execution.
/// Executable trait implementations for this combinator.
pub mod exec;
/// Correctness proofs for this combinator.
pub mod proof;
/// Specification trait implementations for this combinator.
pub mod spec;

use crate::core::proof::LeafNonMalleable;
use vstd::prelude::*;

verus! {

/// Unsigned 8-bit integer combinator.
///
/// Defined as `Mapped { inner: Fixed::<1>, mapper: (u8_from_bytes, u8_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U8;

/// Little-endian unsigned 16-bit integer.
///
/// Defined as `Mapped { inner: Fixed::<2>, mapper: (u16_le_from_bytes, u16_le_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U16Le;

/// Big-endian unsigned 16-bit integer.
///
/// Defined as `Mapped { inner: Fixed::<2>, mapper: (u16_be_from_bytes, u16_be_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U16Be;

/// Little-endian unsigned 24-bit integer, represented as `u32`.
///
/// Defined as `Mapped { inner: Fixed::<3>, mapper: (u24_le_from_bytes, u24_le_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U24Le;

/// Big-endian unsigned 24-bit integer, represented as `u32`.
///
/// Defined as `Mapped { inner: Fixed::<3>, mapper: (u24_be_from_bytes, u24_be_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U24Be;

/// Little-endian unsigned 32-bit integer.
///
/// Defined as `Mapped { inner: Fixed::<4>, mapper: (u32_le_from_bytes, u32_le_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U32Le;

/// Big-endian unsigned 32-bit integer.
///
/// Defined as `Mapped { inner: Fixed::<4>, mapper: (u32_be_from_bytes, u32_be_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U32Be;

/// Little-endian unsigned 64-bit integer.
///
/// Defined as `Mapped { inner: Fixed::<8>, mapper: (u64_le_from_bytes, u64_le_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U64Le;

/// Big-endian unsigned 64-bit integer.
///
/// Defined as `Mapped { inner: Fixed::<8>, mapper: (u64_be_from_bytes, u64_be_to_bytes) }`.
#[derive(Clone, Copy)]
pub struct U64Be;

impl LeafNonMalleable for U8 {
    proof fn nonmal_leaf_inv(&self) {
    }
}

impl LeafNonMalleable for U16Le {
    proof fn nonmal_leaf_inv(&self) {
    }
}

impl LeafNonMalleable for U16Be {
    proof fn nonmal_leaf_inv(&self) {
    }
}

impl LeafNonMalleable for U24Le {
    proof fn nonmal_leaf_inv(&self) {
    }
}

impl LeafNonMalleable for U24Be {
    proof fn nonmal_leaf_inv(&self) {
    }
}

impl LeafNonMalleable for U32Le {
    proof fn nonmal_leaf_inv(&self) {
    }
}

impl LeafNonMalleable for U32Be {
    proof fn nonmal_leaf_inv(&self) {
    }
}

impl LeafNonMalleable for U64Le {
    proof fn nonmal_leaf_inv(&self) {
    }
}

impl LeafNonMalleable for U64Be {
    proof fn nonmal_leaf_inv(&self) {
    }
}

} // verus!