Skip to content

mad4j/rusted-intpackit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

intpackit

Rust Integer Pack Iterator

Library tha allow to extract integer values packaged in a larger integer.

let mut it = 0x89ABCDEFu32.unpack(16, 9);
assert_eq!(it.next(), Some(0xF));
assert_eq!(it.next(), Some(0xE));
assert_eq!(it.next(), Some(0xD));
assert_eq!(it.next(), Some(0xC));
assert_eq!(it.next(), Some(0xB));
assert_eq!(it.next(), Some(0xA));
assert_eq!(it.next(), Some(0x9));
assert_eq!(it.next(), Some(0x8));
assert_eq!(it.next(), Some(0x0));
assert_eq!(it.next(), None);
assert_eq!(it.next(), None); 

It works also on values that are not powers of two.

let v = (1*1 + 2*3 + 0*9 + 2*27 + 1*81) as u32;
let mut it = v.unpack(3, 6);
assert_eq!(it.next(), Some(1));
assert_eq!(it.next(), Some(2));
assert_eq!(it.next(), Some(0));
assert_eq!(it.next(), Some(2));
assert_eq!(it.next(), Some(1));
assert_eq!(it.next(), Some(0));
assert_eq!(it.next(), None);
assert_eq!(it.next(), None);