On Wed May 21, 2025 at 3:44 PM JST, Alexandre Courbot wrote: > Introduce the `num` module, featuring the `NumExt` extension trait > that expands unsigned integers with useful operations for the kernel. > > These are to be used by the nova-core driver, but they are so ubiquitous > that other drivers should be able to take advantage of them as well. > > The currently implemented operations are: > > - align_down() > - align_up() > - fls() > > But this trait is expected to be expanded further.
A trait is nice, but prevents any use in const context... After looking at the genmask patch [1] I am now wondering (again) whether a set of const functions would not better serve the needs of the kernel. Either that, or we enable `#![feature(const_trait_impl)]`. I just tried and with it we could indeed define and implement `NumExt` as const, which looks like the cleanest way to do this to me. The functions of [1] could then also be implemented as methods of that trait, which would allow them to leverage the macro generating the impl blocks for all supporting types, while having their examples/doc-tests in the trait declaration. [1] https://lore.kernel.org/rust-for-linux/20250326-topic-panthor-rs-genmask-v5-1-bfa614021...@collabora.com/