1 2 3 4 5 6 7 8 9 10 11 12 13
use bitops::*; pub fn ffs<T: Bitops>(x: T) -> u8 { (lsb(x) + 1) as u8 } pub fn lsb<T: Bitops>(x: T) -> i8 { if x != T::zero() { (x.trailing_zeros() as i8) } else { -1i8 } }