From: Gary Guo Date: Tue, 2 Jun 2026 14:17:52 +0000 (+0100) Subject: rust: ptr: rename `ProjectIndex::index` to `build_index` X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=735bc1c843101aa2383061acb73d3824c7a66e11;p=thirdparty%2Flinux.git rust: ptr: rename `ProjectIndex::index` to `build_index` The corresponding `SliceIndex` trait in Rust uses `index` to mean the panicking variant, which is also being added to `ProjectIndex`. Hence rename our custom `build_error!` index variant to `build_index`. Suggested-by: Alexandre Courbot Link: https://lore.kernel.org/rust-for-linux/DI5LLN2V3XCS.34H4CG99N4MPA@nvidia.com Signed-off-by: Gary Guo Reviewed-by: Alexandre Courbot Reviewed-by: Alice Ryhl Acked-by: Danilo Krummrich Link: https://patch.msgid.link/20260602-projection-syntax-rework-v2-1-6989470f5440@garyguo.net [ Reworded docs slightly. - Miguel ] Signed-off-by: Miguel Ojeda --- diff --git a/rust/kernel/ptr/projection.rs b/rust/kernel/ptr/projection.rs index 140ea8e21617d..441bc1b83c3f7 100644 --- a/rust/kernel/ptr/projection.rs +++ b/rust/kernel/ptr/projection.rs @@ -26,14 +26,14 @@ impl From for Error { /// /// # Safety /// -/// The implementation of `index` and `get` (if [`Some`] is returned) must ensure that, if provided -/// input pointer `slice` and returned pointer `output`, then: +/// For a given input pointer `slice` and return value `output`, the implementation of `build_index` +/// and `get` (if [`Some`] is returned) must ensure that: /// - `output` has the same provenance as `slice`; /// - `output.byte_offset_from(slice)` is between 0 to /// `KnownSize::size(slice) - KnownSize::size(output)`. /// -/// This means that if the input pointer is valid, then pointer returned by `get` or `index` is -/// also valid. +/// This means that if the input pointer is valid, then the pointer returned by `get` or +/// `build_index` is also valid. #[diagnostic::on_unimplemented(message = "`{Self}` cannot be used to index `{T}`")] #[doc(hidden)] pub unsafe trait ProjectIndex: Sized { @@ -44,7 +44,7 @@ pub unsafe trait ProjectIndex: Sized { /// Returns an index-projected pointer; fail the build if it cannot be proved to be in bounds. #[inline(always)] - fn index(self, slice: *mut T) -> *mut Self::Output { + fn build_index(self, slice: *mut T) -> *mut Self::Output { Self::get(self, slice).unwrap_or_else(|| build_error!()) } } @@ -64,8 +64,8 @@ where } #[inline(always)] - fn index(self, slice: *mut [T; N]) -> *mut Self::Output { - >::index(self, slice) + fn build_index(self, slice: *mut [T; N]) -> *mut Self::Output { + >::build_index(self, slice) } } @@ -287,7 +287,7 @@ macro_rules! project_pointer { }; // Build-time checked index projection. (@gen $ptr:ident, [$index:expr] $($rest:tt)*) => { - let $ptr = $crate::ptr::projection::ProjectIndex::index($index, $ptr); + let $ptr = $crate::ptr::projection::ProjectIndex::build_index($index, $ptr); $crate::ptr::project!(@gen $ptr, $($rest)*) }; (mut $ptr:expr, $($proj:tt)*) => {{