enum conversion
enum conversion
Posted Oct 10, 2024 10:34 UTC (Thu) by farnz (subscriber, #17727)In reply to: enum conversion by NYKevin
Parent article: Improving bindgen for the kernel
Note that there's a neat trick to make match statements work in limited cases (i.e. not "is nth bit set", but "is only the nth bit set":
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq)]
struct Thing(u32);
impl Thing {
const ONE: Self = Self(1);
const USER: Self = Self(0x1000);
const ALL_USER: Self = Self(0x1001);
const KERNEL: Self =Self (0x2000);
…
}
This is sometimes useful, if the C enum contains all the combinations you want to match on already - but it's not useful if you want a "don't care" bit.