rust: alloc: eschew `Box<MaybeUninit<T>>::write`
authorJubilee Young <workingjubilee@gmail.com>
Fri, 23 Aug 2024 05:03:59 +0000 (22:03 -0700)
committerMiguel Ojeda <ojeda@kernel.org>
Mon, 26 Aug 2024 22:07:05 +0000 (00:07 +0200)
commit0903b9e2a46cb6252a13d6b19d0502da9be191cf
tree16f6f734869831f7ee77953cadee00af6e5bf331
parent0ff8f3f0979559b0d7494d580f2597beab3f159b
rust: alloc: eschew `Box<MaybeUninit<T>>::write`

Upstream Rust's libs-api team has consensus for stabilizing some of
`feature(new_uninit)`, but not for `Box<MaybeUninit<T>>::write`. Instead,
we can use `MaybeUninit<T>::write`, so Rust for Linux can drop the
feature after stabilization. That will happen after merging, as the FCP
has completed [1].

This is required before stabilization because remaining-unstable API
will be divided into new features. This code doesn't know about those
yet. It can't: they haven't landed, as the relevant PR is blocked on
rustc's CI testing Rust-for-Linux without this patch.

[ The PR has landed [2] and will be released in Rust 1.82.0 (expected on
  2024-10-17), so we could conditionally enable the new unstable feature
  (`box_uninit_write` [3]) instead, but just for a single `unsafe` block
  it is probably not worth it. For the time being, I added it to the
  "nice to have" section of our unstable features list. - Miguel ]

Link: https://github.com/rust-lang/rust/issues/63291#issuecomment-2183022955
Link: https://github.com/rust-lang/rust/pull/129416
Link: https://github.com/rust-lang/rust/issues/129397
Signed-off-by: Jubilee Young <workingjubilee@gmail.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Trevor Gross <tmgross@umich.edu>
[ Reworded slightly. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/kernel/alloc/box_ext.rs