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