Numeric

Trait Numeric 

Source
pub trait Numeric:
    Sized
    + Default
    + Copy
    + Serialize {
    const LENGTH: usize;

    // Required methods
    fn encode(&self) -> Vec<u8>;
    fn decode(value: &[u8]) -> Self;
    fn compact_encode(&self) -> Vec<u8>;
    fn compact_decode(source: &[u8]) -> Self;
    fn as_u64(&self) -> u64;
    fn from_u64(value: u64) -> Self;
}
Expand description

Trait for types that can be encoded and decoded using serde-jam

Required Associated Constants§

Source

const LENGTH: usize

The length of the numeric value in bytes

Required Methods§

Source

fn encode(&self) -> Vec<u8>

Encode the value into a byte vector

Source

fn decode(value: &[u8]) -> Self

Decode the value from a byte vector

Source

fn compact_encode(&self) -> Vec<u8>

Encode the value into a compact byte vector

Source

fn compact_decode(source: &[u8]) -> Self

Decode the value from a compact byte vector

Source

fn as_u64(&self) -> u64

Convert the value to a u64

Source

fn from_u64(value: u64) -> Self

Create a numeric value from a u64

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 Numeric for i8

Source§

const LENGTH: usize = 1usize

Source§

fn encode(&self) -> Vec<u8>

Source§

fn decode(source: &[u8]) -> Self

Source§

fn compact_encode(&self) -> Vec<u8>

Source§

fn compact_decode(source: &[u8]) -> Self

Source§

fn as_u64(&self) -> u64

Source§

fn from_u64(value: u64) -> Self

Source§

impl Numeric for i16

Source§

const LENGTH: usize = 2usize

Source§

fn encode(&self) -> Vec<u8>

Source§

fn decode(source: &[u8]) -> Self

Source§

fn compact_encode(&self) -> Vec<u8>

Source§

fn compact_decode(source: &[u8]) -> Self

Source§

fn as_u64(&self) -> u64

Source§

fn from_u64(value: u64) -> Self

Source§

impl Numeric for i32

Source§

const LENGTH: usize = 4usize

Source§

fn encode(&self) -> Vec<u8>

Source§

fn decode(source: &[u8]) -> Self

Source§

fn compact_encode(&self) -> Vec<u8>

Source§

fn compact_decode(source: &[u8]) -> Self

Source§

fn as_u64(&self) -> u64

Source§

fn from_u64(value: u64) -> Self

Source§

impl Numeric for i64

Source§

const LENGTH: usize = 8usize

Source§

fn encode(&self) -> Vec<u8>

Source§

fn decode(source: &[u8]) -> Self

Source§

fn compact_encode(&self) -> Vec<u8>

Source§

fn compact_decode(source: &[u8]) -> Self

Source§

fn as_u64(&self) -> u64

Source§

fn from_u64(value: u64) -> Self

Source§

impl Numeric for u8

Source§

const LENGTH: usize = 1usize

Source§

fn encode(&self) -> Vec<u8>

Source§

fn decode(source: &[u8]) -> Self

Source§

fn compact_encode(&self) -> Vec<u8>

Source§

fn compact_decode(source: &[u8]) -> Self

Source§

fn as_u64(&self) -> u64

Source§

fn from_u64(value: u64) -> Self

Source§

impl Numeric for u16

Source§

const LENGTH: usize = 2usize

Source§

fn encode(&self) -> Vec<u8>

Source§

fn decode(source: &[u8]) -> Self

Source§

fn compact_encode(&self) -> Vec<u8>

Source§

fn compact_decode(source: &[u8]) -> Self

Source§

fn as_u64(&self) -> u64

Source§

fn from_u64(value: u64) -> Self

Source§

impl Numeric for u32

Source§

const LENGTH: usize = 4usize

Source§

fn encode(&self) -> Vec<u8>

Source§

fn decode(source: &[u8]) -> Self

Source§

fn compact_encode(&self) -> Vec<u8>

Source§

fn compact_decode(source: &[u8]) -> Self

Source§

fn as_u64(&self) -> u64

Source§

fn from_u64(value: u64) -> Self

Source§

impl Numeric for u64

Source§

const LENGTH: usize = 8usize

Source§

fn encode(&self) -> Vec<u8>

Source§

fn decode(source: &[u8]) -> Self

Source§

fn compact_encode(&self) -> Vec<u8>

Source§

fn compact_decode(source: &[u8]) -> Self

Source§

fn as_u64(&self) -> u64

Source§

fn from_u64(value: u64) -> Self

Implementors§