1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
use iterator::*; use UPPERCASE_ENCODING; pub fn encode(input: u64) -> String { let mut fits: Vec<_> = FiveBitIterator::new(input).collect(); let mut buf = String::new(); while let Some(fit) = fits.pop() { unsafe { buf.push(*UPPERCASE_ENCODING.get_unchecked(fit as usize) as char); } } buf } #[cfg(test)] mod tests { use encoding::encode; #[test] fn zero_returns_zero() { let input = 0; let expected = "0"; let actual = encode(input); assert_eq!(expected, &*actual); } #[test] fn large_value_returns_correct_large_value() { let input = 65535; let expected = "1ZZZ"; let actual = encode(input); assert_eq!(expected, &*actual); } }