pub trait VarInt: Sized + Copy {
    // Required methods
    fn required_space(self) -> usize;
    fn decode_var(src: &[u8]) -> Option<(Self, usize)>;
    fn encode_var(self, src: &mut [u8]) -> usize;

    // Provided method
    fn encode_var_vec(self) -> Vec<u8> { ... }
}
Expand description

Varint (variable length integer) encoding, as described in https://developers.google.com/protocol-buffers/docs/encoding.

Uses zigzag encoding (also described there) for signed integer representation.

Required Methods§

source

fn required_space(self) -> usize

Returns the number of bytes this number needs in its encoded form. Note: This varies depending on the actual number you want to encode.

source

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

Decode a value from the slice. Returns the value and the number of bytes read from the slice (can be used to read several consecutive values from a big slice) return None if all bytes has MSB set.

source

fn encode_var(self, src: &mut [u8]) -> usize

Encode a value into the slice. The slice must be at least required_space() bytes long. The number of bytes taken by the encoded integer is returned.

Provided Methods§

source

fn encode_var_vec(self) -> Vec<u8>

Helper: Encode a value and return the encoded form as Vec. The Vec must be at least required_space() bytes long.

Implementations on Foreign Types§

source§

impl VarInt for u32

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for u64

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for i32

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for u16

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for u8

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for i8

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for isize

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for i16

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for usize

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

source§

impl VarInt for i64

source§

fn required_space(self) -> usize

source§

fn decode_var(src: &[u8]) -> Option<(Self, usize)>

source§

fn encode_var(self, dst: &mut [u8]) -> usize

Implementors§