Trait Wrap

Source
pub trait Wrap: Sized {
    // Required methods
    fn external_size(&self) -> usize;
    fn write(&self, buffer: &mut [u8]);
    fn read(buffer: &[u8]) -> Option<Self>;

    // Provided methods
    fn encode<'a>(&self, buf: &'a mut [u8]) -> &'a mut [u8]  { ... }
    fn decode(input: &[u8], size: usize) -> Option<(&[u8], Self)> { ... }
}
Expand description

A type with some external represention.

Required Methods§

Source

fn external_size(&self) -> usize

Size of external representation in bytes

Source

fn write(&self, buffer: &mut [u8])

Serialize a value into passed buffer

Source

fn read(buffer: &[u8]) -> Option<Self>

Deserialize value from given buffer

Provided Methods§

Source

fn encode<'a>(&self, buf: &'a mut [u8]) -> &'a mut [u8]

Encode a value into passed buffer and return remaining bytes.

Source

fn decode(input: &[u8], size: usize) -> Option<(&[u8], Self)>

Decode a value from input buffer using size bytes. Return remaining bytes and decoded value.

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.

Implementations on Foreign Types§

Source§

impl Wrap for u8

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for u16

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for ()

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, _buffer: &mut [u8])

Source§

fn read(_buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for Vec<u8>

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for AffinePoint

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for DLogProof

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for GroupPolynomial<ProjectivePoint>

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for NonZeroScalar

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for ProjectivePoint

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for PublicKey

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl Wrap for Scalar

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl<T: Wrap + FixedExternalSize> Wrap for Vec<T>

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl<const N: usize> Wrap for ByteArray<N>

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Source§

impl<const N: usize> Wrap for [u8; N]

Source§

fn external_size(&self) -> usize

Source§

fn write(&self, buffer: &mut [u8])

Source§

fn read(buffer: &[u8]) -> Option<Self>

Implementors§