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}