[PATCH v4 04/20] rust: add new `num` module with useful integer operations

Alexandre Courbot acourbot at nvidia.com
Thu May 22 04:00:53 UTC 2025


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-bfa6140214da@collabora.com/



More information about the dri-devel mailing list