rust: transmute: simplify code with Rust 1.80.0 split_at_*checked()

`feature(split_at_checked)` [1] has been stabilized in Rust 1.80.0 [2],
which is older than our new minimum Rust version (Rust 1.85.0).

Thus simplify the code using `split_at_*checked()`.

Link: https://github.com/rust-lang/rust/issues/119128 [1]
Link: https://github.com/rust-lang/rust/pull/124678 [2]
Reviewed-by: Tamir Duberstein <tamird@kernel.org>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260405235309.418950-14-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
Miguel Ojeda 2026-04-06 01:52:49 +02:00
commit f309a6edda

View file

@ -66,16 +66,9 @@ pub unsafe trait FromBytes {
where
Self: Sized,
{
if bytes.len() < size_of::<Self>() {
None
} else {
// PANIC: We checked that `bytes.len() >= size_of::<Self>`, thus `split_at` cannot
// panic.
// TODO: replace with `split_at_checked` once the MSRV is >= 1.80.
let (prefix, remainder) = bytes.split_at(size_of::<Self>());
let (prefix, remainder) = bytes.split_at_checked(size_of::<Self>())?;
Self::from_bytes(prefix).map(|s| (s, remainder))
}
Self::from_bytes(prefix).map(|s| (s, remainder))
}
/// Converts a mutable slice of bytes to a reference to `Self`.
@ -108,16 +101,9 @@ pub unsafe trait FromBytes {
where
Self: AsBytes + Sized,
{
if bytes.len() < size_of::<Self>() {
None
} else {
// PANIC: We checked that `bytes.len() >= size_of::<Self>`, thus `split_at_mut` cannot
// panic.
// TODO: replace with `split_at_mut_checked` once the MSRV is >= 1.80.
let (prefix, remainder) = bytes.split_at_mut(size_of::<Self>());
let (prefix, remainder) = bytes.split_at_mut_checked(size_of::<Self>())?;
Self::from_bytes_mut(prefix).map(|s| (s, remainder))
}
Self::from_bytes_mut(prefix).map(|s| (s, remainder))
}
/// Creates an owned instance of `Self` by copying `bytes`.
@ -147,16 +133,9 @@ pub unsafe trait FromBytes {
where
Self: Sized,
{
if bytes.len() < size_of::<Self>() {
None
} else {
// PANIC: We checked that `bytes.len() >= size_of::<Self>`, thus `split_at` cannot
// panic.
// TODO: replace with `split_at_checked` once the MSRV is >= 1.80.
let (prefix, remainder) = bytes.split_at(size_of::<Self>());
let (prefix, remainder) = bytes.split_at_checked(size_of::<Self>())?;
Self::from_bytes_copy(prefix).map(|s| (s, remainder))
}
Self::from_bytes_copy(prefix).map(|s| (s, remainder))
}
}