pub struct Varint<T: VarintBaseType>(pub T);
Expand description
Variable length signed integer.
§Examples
use std::mem;
use varuint::{Varint, Serializable, Deserializable};
fn test_varint(v: i128, size: usize) {
println!("{}", v);
let v = Varint(v);
assert_eq!(size, v.size_hint());
let mut arr: [u8; 17] = unsafe { mem::uninitialized() };
assert_eq!(size, v.serialize(&mut (&mut arr as &mut [u8])).unwrap());
assert_eq!(v, Varint::deserialize(&mut (&arr as &[u8])).unwrap());
}
test_varint(0, 1);
test_varint(1, 1);
test_varint(-1, 1);
test_varint(-120, 1);
test_varint(120, 1);
test_varint(-2031/2, 2);
test_varint(2031/2, 2);
test_varint(-67567/2, 3);
test_varint(67567/2, 3);
test_varint(-16777215/2, 4);
test_varint(16777215/2, 4);
test_varint(-4294967295/2, 5);
test_varint(4294967295/2, 5);
test_varint(-1099511627775/2, 6);
test_varint(1099511627775/2, 6);
test_varint(-281474976710655/2, 7);
test_varint(281474976710655/2, 7);
test_varint(-72057594037927935/2, 8);
test_varint(72057594037927935/2, 8);
test_varint(i64::min_value().into(), 9);
test_varint(i64::max_value().into(), 9);
test_varint(i128::min_value(), 17);
test_varint(i128::max_value(), 17);
Tuple Fields§
§0: T
Trait Implementations§
Source§impl<T: VarintBaseType> Deref for Varint<T>
impl<T: VarintBaseType> Deref for Varint<T>
Source§impl<T: VarintBaseType> DerefMut for Varint<T>
impl<T: VarintBaseType> DerefMut for Varint<T>
Source§impl Deserializable for Varint<i128>
impl Deserializable for Varint<i128>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<i16>
impl Deserializable for Varint<i16>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<i32>
impl Deserializable for Varint<i32>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<i64>
impl Deserializable for Varint<i64>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<i8>
impl Deserializable for Varint<i8>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<u128>
impl Deserializable for Varint<u128>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<u16>
impl Deserializable for Varint<u16>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<u32>
impl Deserializable for Varint<u32>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<u64>
impl Deserializable for Varint<u64>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl Deserializable for Varint<u8>
impl Deserializable for Varint<u8>
Source§fn deserialize(r: &mut dyn Read) -> Result<Self>
fn deserialize(r: &mut dyn Read) -> Result<Self>
Deserialize value from a
Read
Source§impl<T: Ord + VarintBaseType> Ord for Varint<T>
impl<T: Ord + VarintBaseType> Ord for Varint<T>
Source§impl<T: PartialOrd + VarintBaseType> PartialOrd for Varint<T>
impl<T: PartialOrd + VarintBaseType> PartialOrd for Varint<T>
Source§impl Serializable for Varint<i128>
impl Serializable for Varint<i128>
Source§impl Serializable for Varint<i16>
impl Serializable for Varint<i16>
Source§impl Serializable for Varint<i32>
impl Serializable for Varint<i32>
Source§impl Serializable for Varint<i64>
impl Serializable for Varint<i64>
Source§impl Serializable for Varint<i8>
impl Serializable for Varint<i8>
Source§impl Serializable for Varint<u128>
impl Serializable for Varint<u128>
Source§impl Serializable for Varint<u16>
impl Serializable for Varint<u16>
Source§impl Serializable for Varint<u32>
impl Serializable for Varint<u32>
Source§impl Serializable for Varint<u64>
impl Serializable for Varint<u64>
Source§impl Serializable for Varint<u8>
impl Serializable for Varint<u8>
impl<T: Copy + VarintBaseType> Copy for Varint<T>
impl<T: Eq + VarintBaseType> Eq for Varint<T>
impl<T: VarintBaseType> StructuralPartialEq for Varint<T>
Auto Trait Implementations§
impl<T> Freeze for Varint<T>where
T: Freeze,
impl<T> RefUnwindSafe for Varint<T>where
T: RefUnwindSafe,
impl<T> Send for Varint<T>where
T: Send,
impl<T> Sync for Varint<T>where
T: Sync,
impl<T> Unpin for Varint<T>where
T: Unpin,
impl<T> UnwindSafe for Varint<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more