pub struct State { /* private fields */ }
Expand description

State.

Implementations§

source§

impl State

source

pub fn new() -> State

Create empty state

source

pub fn new_with_size(size: usize) -> (State, Box<[u8]>)

Create a state and buffer with an already known size. With this, you can/must skip the preencode step.

source

pub fn new_with_start_and_end(start: usize, end: usize) -> State

Create a state with a start and end already known.

source

pub fn from_buffer(buffer: &[u8]) -> State

Create a state from existing buffer.

source

pub fn start(&self) -> usize

Start value

source

pub fn set_start(&mut self, value: usize) -> Result<(), EncodingError>

Set start value

source

pub fn end(&self) -> usize

End value

source

pub fn set_end(&mut self, value: usize)

Set end value

source

pub fn add_start(&mut self, increment: usize) -> Result<usize, EncodingError>

Add to start handling overflow and out of bounds.

source

pub fn add_end(&mut self, increment: usize) -> Result<usize, EncodingError>

Add to end handling overflow

source

pub fn create_buffer(&self) -> Box<[u8]>

After calling preencode(), this allocates the right size buffer to the heap. Follow this with the same number of encode() steps to fill the created buffer.

source

pub fn set_byte_to_buffer( &mut self, value: u8, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Safely set single byte to buffer at state.start and then increment state.start, returning new state.start.

source

pub fn set_slice_to_buffer( &mut self, value: &[u8], buffer: &mut [u8] ) -> Result<usize, EncodingError>

Safely set byte slice to buffer at state.start and then increment state.start with slice length, returning new state.start.

source

pub fn set_slice_to_buffer_fixed( &mut self, value: &[u8], buffer: &mut [u8], size: usize ) -> Result<usize, EncodingError>

Safely set byte slice of fixed len to buffer at state.start and then increment state.start with slice length, returning new state.start.

source

pub fn validate( &mut self, size: usize, buffer: &[u8] ) -> Result<Range<usize>, EncodingError>

Validate size can be decoded from buffer, return current start.

source

pub fn preencode_str(&mut self, value: &str) -> Result<usize, EncodingError>

Preencode a string slice

source

pub fn encode_str( &mut self, value: &str, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode a string slice

source

pub fn decode_string(&mut self, buffer: &[u8]) -> Result<String, EncodingError>

Decode a String

source

pub fn preencode_uint_var<T: From<u32> + Ord>( &mut self, uint: &T ) -> Result<usize, EncodingError>

Preencode a variable length usigned int

source

pub fn decode_u8(&mut self, buffer: &[u8]) -> Result<u8, EncodingError>

Decode a fixed length u8

source

pub fn decode_u16(&mut self, buffer: &[u8]) -> Result<u16, EncodingError>

Decode a fixed length u16

source

pub fn encode_u32_var( &mut self, value: &u32, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode a variable length u32

source

pub fn encode_u32( &mut self, uint: u32, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode u32 to 4 LE bytes.

source

pub fn decode_u32_var(&mut self, buffer: &[u8]) -> Result<u32, EncodingError>

Decode a variable length u32

source

pub fn decode_u32(&mut self, buffer: &[u8]) -> Result<u32, EncodingError>

Decode a fixed length u32

source

pub fn encode_u64_var( &mut self, value: &u64, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode a variable length u64

source

pub fn encode_u64( &mut self, uint: u64, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode u64 to 8 LE bytes.

source

pub fn decode_u64_var(&mut self, buffer: &[u8]) -> Result<u64, EncodingError>

Decode a variable length u64

source

pub fn decode_u64(&mut self, buffer: &[u8]) -> Result<u64, EncodingError>

Decode a fixed length u64

source

pub fn preencode_buffer(&mut self, value: &[u8]) -> Result<usize, EncodingError>

Preencode a byte buffer

source

pub fn preencode_buffer_vec( &mut self, value: &Vec<u8> ) -> Result<usize, EncodingError>

Preencode a vector byte buffer

source

pub fn encode_buffer( &mut self, value: &[u8], buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode a byte buffer

source

pub fn decode_buffer( &mut self, buffer: &[u8] ) -> Result<Box<[u8]>, EncodingError>

Decode a byte buffer

source

pub fn decode_buffer_vec( &mut self, buffer: &[u8] ) -> Result<Vec<u8>, EncodingError>

Decode a vector byte buffer

source

pub fn preencode_raw_buffer( &mut self, value: &Vec<u8> ) -> Result<usize, EncodingError>

Preencode a raw byte buffer. Only possible to use if this is the last value of the State.

source

pub fn encode_raw_buffer( &mut self, value: &[u8], buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode a raw byte buffer. Only possible to use if this is the last value of the State.

source

pub fn decode_raw_buffer( &mut self, buffer: &[u8] ) -> Result<Vec<u8>, EncodingError>

Decode a raw byte buffer. Only possible to use if this is the last value of the State.

source

pub fn preencode_fixed_32(&mut self) -> Result<usize, EncodingError>

Preencode a fixed 32 byte buffer

source

pub fn encode_fixed_32( &mut self, value: &[u8], buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode a fixed 32 byte buffer

source

pub fn decode_fixed_32( &mut self, buffer: &[u8] ) -> Result<Box<[u8]>, EncodingError>

Decode a fixed 32 byte buffer

source

pub fn preencode_string_array( &mut self, value: &Vec<String> ) -> Result<usize, EncodingError>

Preencode a string array

source

pub fn encode_string_array( &mut self, value: &Vec<String>, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode a String array

source

pub fn decode_string_array( &mut self, buffer: &[u8] ) -> Result<Vec<String>, EncodingError>

Decode a String array

source

pub fn preencode_usize_var( &mut self, value: &usize ) -> Result<usize, EncodingError>

Preencode a variable length usize

source

pub fn encode_usize_var( &mut self, value: &usize, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode a variable length usize

source

pub fn decode_usize_var( &mut self, buffer: &[u8] ) -> Result<usize, EncodingError>

Decode a variable length usize.

Trait Implementations§

source§

impl Clone for State

source§

fn clone(&self) -> State

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl CompactEncoding<Box<[u8], Global>> for State

source§

fn preencode(&mut self, value: &Box<[u8]>) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &Box<[u8]>, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<Box<[u8]>, EncodingError>

Decode
source§

impl CompactEncoding<String> for State

source§

fn preencode(&mut self, value: &String) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &String, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<String, EncodingError>

Decode
source§

impl CompactEncoding<Vec<[u8; 32], Global>> for State

source§

fn preencode(&mut self, value: &Vec<[u8; 32]>) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &Vec<[u8; 32]>, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<Vec<[u8; 32]>, EncodingError>

Decode
source§

impl CompactEncoding<Vec<String, Global>> for State

source§

fn preencode(&mut self, value: &Vec<String>) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &Vec<String>, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<Vec<String>, EncodingError>

Decode
source§

impl CompactEncoding<Vec<u32, Global>> for State

source§

fn preencode(&mut self, value: &Vec<u32>) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &Vec<u32>, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<Vec<u32>, EncodingError>

Decode
source§

impl CompactEncoding<Vec<u8, Global>> for State

source§

fn preencode(&mut self, value: &Vec<u8>) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &Vec<u8>, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<Vec<u8>, EncodingError>

Decode
source§

impl CompactEncoding<u32> for State

source§

fn preencode(&mut self, value: &u32) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &u32, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<u32, EncodingError>

Decode
source§

impl CompactEncoding<u64> for State

source§

fn preencode(&mut self, value: &u64) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &u64, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<u64, EncodingError>

Decode
source§

impl CompactEncoding<u8> for State

source§

fn preencode(&mut self, _: &u8) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &u8, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<u8, EncodingError>

Decode
source§

impl CompactEncoding<usize> for State

source§

fn preencode(&mut self, value: &usize) -> Result<usize, EncodingError>

Preencode
source§

fn encode( &mut self, value: &usize, buffer: &mut [u8] ) -> Result<usize, EncodingError>

Encode
source§

fn decode(&mut self, buffer: &[u8]) -> Result<usize, EncodingError>

Decode
source§

impl Debug for State

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for State

source§

fn default() -> Self

Create empty state

Auto Trait Implementations§

§

impl RefUnwindSafe for State

§

impl Send for State

§

impl Sync for State

§

impl Unpin for State

§

impl UnwindSafe for State

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.