Skip to content

Commit 4c7864e

Browse files
workingjubileeojeda
authored andcommitted
rust: Eschew Box<MaybeUninit<T>>::write
T-libs-api 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: rust-lang/rust#63291 (comment) 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. Signed-off-by: Jubilee Young <[email protected]> Reviewed-by: Trevor Gross <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 8400291 commit 4c7864e

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

rust/kernel/alloc/box_ext.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ pub trait BoxExt<T>: Sized {
2121

2222
impl<T> BoxExt<T> for Box<T> {
2323
fn new(x: T, flags: Flags) -> Result<Self, AllocError> {
24-
let b = <Self as BoxExt<_>>::new_uninit(flags)?;
25-
Ok(Box::write(b, x))
24+
let mut b = <Self as BoxExt<_>>::new_uninit(flags)?;
25+
b.write(x);
26+
// SAFETY: We just wrote to it.
27+
Ok(unsafe { b.assume_init() })
2628
}
2729

2830
#[cfg(any(test, testlib))]

0 commit comments

Comments
 (0)