On Sat, Nov 23, 2024 at 11:29 PM Miguel Ojeda <ojeda@xxxxxxxxxx> wrote: > > Users were using the hidden exported `kernel::build_error` function > instead of the intended `kernel::build_error!` macro, e.g. see the > previous commit. > > To force to use the macro, move it into the `build_assert` module, > thus making it a compilation error and avoiding a collision in the same > "namespace". Using the function now would require typing the module name > (which is hidden), not just a single character. > > Now attempting to use the function will trigger this error with the > right suggestion by the compiler: > > error[E0423]: expected function, found macro `kernel::build_error` > --> samples/rust/rust_minimal.rs:29:9 > | > 29 | kernel::build_error(); > | ^^^^^^^^^^^^^^^^^^^ not a function > | > help: use `!` to invoke the macro > | > 29 | kernel::build_error!(); > | + > > An alternative would be using an alias, but it would be more complex > and moving it into the module seems right since it belongs there and > reduces the amount of code at the crate root. > > Keep the `#[doc(hidden)]` inside `build_assert` in case the module is > not hidden in the future. > > Signed-off-by: Miguel Ojeda <ojeda@xxxxxxxxxx> Reviewed-by: Alice Ryhl <aliceryhl@xxxxxxxxxx> > diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs > index bf8d7f841f94..73e33a41ea04 100644 > --- a/rust/kernel/lib.rs > +++ b/rust/kernel/lib.rs > @@ -32,7 +32,8 @@ > pub mod alloc; > #[cfg(CONFIG_BLOCK)] > pub mod block; > -mod build_assert; > +#[doc(hidden)] > +pub mod build_assert; You could also put #![doc(hidden)] at the top of build_assert.rs to simplify the lib.rs list. Not sure what is best. Alice