Trait zende::Zigzag [−][src]
pub trait Zigzag<T>: Sealed { fn zigzag(self) -> T; }
Expand description
An extension trait implemented for all Rust integers to encode and decode between signed and unsigned variants using zigzag encoding.
Examples
Encoding a signed integer:
use zende::Zigzag; assert_eq!(0i8.zigzag(), 0u8); assert_eq!((-1i8).zigzag(), 1u8); assert_eq!(1i8.zigzag(), 2u8); assert_eq!(i8::MIN.zigzag(), u8::MAX); assert_eq!(i16::MIN.zigzag(), u16::MAX); assert_eq!(i32::MIN.zigzag(), u32::MAX); assert_eq!(i64::MIN.zigzag(), u64::MAX); assert_eq!(i128::MIN.zigzag(), u128::MAX); assert_eq!(isize::MIN.zigzag(), usize::MAX);
Decoding an unsigned integer:
use zende::Zigzag; assert_eq!(0u8.zigzag(), 0i8); assert_eq!(1u8.zigzag(), -1i8); assert_eq!(2u8.zigzag(), 1i8); assert_eq!(u8::MAX.zigzag(), i8::MIN); assert_eq!(u16::MAX.zigzag(), i16::MIN); assert_eq!(u32::MAX.zigzag(), i32::MIN); assert_eq!(u64::MAX.zigzag(), i64::MIN); assert_eq!(u128::MAX.zigzag(), i128::MIN); assert_eq!(usize::MAX.zigzag(), isize::MIN);
Required methods
Converts signed integers to unsigned integers and vice versa using zigzag encoding.
Examples
use zende::Zigzag; assert_eq!(0i8.zigzag(), 0u8); assert_eq!((-1i8).zigzag(), 1u8); assert_eq!(1i8.zigzag(), 2u8); assert_eq!(0u8.zigzag(), 0i8); assert_eq!(1u8.zigzag(), -1i8); assert_eq!(2u8.zigzag(), 1i8);