extended_primitives/
varint.rs1#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Debug)]
2pub struct VarInt(u64);
3
4impl VarInt {
5    pub fn encoded_size(&self) -> u32 {
6        match self.0 {
7            0..=0xFC => 1,
8            0xFD..=0xFFFF => 3,
9            0x10000..=0xFFFFFFFF => 5,
10            _ => 9,
11        }
12    }
13
14    pub fn to_u64(self) -> u64 {
15        self.0
16    }
17
18    pub fn as_u64(&self) -> u64 {
19        self.0
20    }
21}
22
23impl From<usize> for VarInt {
24    fn from(num: usize) -> Self {
25        VarInt(num as u64)
26    }
27}
28
29impl From<u8> for VarInt {
30    fn from(num: u8) -> Self {
31        VarInt(num as u64)
32    }
33}
34
35impl From<u16> for VarInt {
36    fn from(num: u16) -> Self {
37        VarInt(num as u64)
38    }
39}
40
41impl From<u32> for VarInt {
42    fn from(num: u32) -> Self {
43        VarInt(num as u64)
44    }
45}
46
47impl From<u64> for VarInt {
48    fn from(num: u64) -> Self {
49        VarInt(num)
50    }
51}