ilog2/
ffs.rs

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}