Re: [PATCH v3 1/2] rust: Introduce file_from_location()

From: Boqun Feng
Date: Tue Jun 17 2025 - 13:07:57 EST


On Tue, Jun 17, 2025 at 05:28:41PM +0200, Miguel Ojeda wrote:
> On Tue, Jun 17, 2025 at 3:42 PM Boqun Feng <boqun.feng@xxxxxxxxx> wrote:
> >
> > Will do, one thing though: the comment lines seem to wrap at 78 or 80
> > chars, so do other lines for conditional features in rust/kernel/lib.rs.
> > However I believe in Rust code we use 100 chars text width, any
> > particular reason that I should keep these new lines the same (wrapping
> > at 80 characters)? Otherwise I will make the new lines wrap at 100.
>
> We have both styles, so up to you.
>

I will use 100 characters then.

> It would have been nice to at least know already if `rustfmt` would
> eventually land on 80 or 100 for this, even if the automatically
> wrapping is not stable :(
>
> > Sure, will do, but I'm afraid there is only case, unless I misunderstood
> > you:
>
> I meant the "If `file_with_nul()` is not available" vs. the available
> one (since it is mentioned in the docs already).
>

Yes, but the example would be one, just the output would be different,
hence I said the "only case", but see below:

> > /// use kernel::file_from_location;
>
> I would hide this line, since it is a single import of the item itself.
>
> > /// pr_info!("{}\n", file_from_location(caller));
>
> I would suggest adding a comment on top of this line mentioning the
> output it could potentially show, e.g.
>
> // Output: ...
>

This actually helped me find a bug in the current implementation: I
should use core::ffi::CStr::to_bytes_with_nul() instead of to_bytes().
Please see below for the update "Examples" section:

/// # Examples
///
/// ```
/// # use kernel::file_from_location;
///
/// #[track_caller]
/// fn foo() {
/// let caller = core::panic::Location::caller();
///
/// // Output:
/// // - If file_with_nul() available: "rust/doctests_kernel_generated.rs"
/// // - otherwise: "<Location::file_with_nul() not supported>"
/// pr_info!("{}\n", file_from_location(caller));
/// }
///
/// # foo();

> Thanks for this!
>

Thank you!

Regards,
Boqun

> Cheers,
> Miguel