Skip to content

Commit a753071

Browse files
committed
refactor: use MaybeUninit::uninit_array
There were some overlooked use cases of `#![feature(const_maybe_uninit_uninit_array)]`.
1 parent eeb4c9c commit a753071

File tree

6 files changed

+9
-5
lines changed

6 files changed

+9
-5
lines changed

src/r3_core/src/bind.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1835,7 +1835,7 @@ where
18351835
fn into_runtime_binder(self) -> Self::Runtime {
18361836
unsafe {
18371837
// `[T; N]::map` is unusable in `const fn` [ref:const_array_map]
1838-
let mut out: [MaybeUninit<Binder::Runtime>; LEN] = MaybeUninit::uninit_array();
1838+
let mut out = MaybeUninit::uninit_array();
18391839
let this = MaybeUninit::new(self);
18401840
// `for` loops are unusable in `const fn` [ref:const_for]
18411841
let mut i = 0;

src/r3_core/src/utils/aligned_storage.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ impl<const LEN: usize, const ALIGN: usize> Init for AlignedStorage<LEN, ALIGN>
1919
where
2020
elain::Align<ALIGN>: elain::Alignment,
2121
{
22-
const INIT: Self = Self(elain::Align::NEW, [MaybeUninit::uninit(); LEN]);
22+
const INIT: Self = Self(elain::Align::NEW, MaybeUninit::uninit_array());
2323
}
2424

2525
#[cfg(test)]

src/r3_core/src/utils/for_times.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ macro_rules! const_array_from_fn {
203203
) => {{
204204
use core::mem::MaybeUninit;
205205
use $crate::utils::for_times::Nat;
206-
let mut array = [MaybeUninit::uninit(); $len_value];
206+
let mut array = MaybeUninit::uninit_array::<{$len_value}>();
207207

208208
if array.len() != <$len as Nat>::N {
209209
unreachable!();

src/r3_core/src/utils/init.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ impl<T: ?Sized> Init for PhantomData<T> {
3535

3636
impl<T: Init, const LEN: usize> Init for [T; LEN] {
3737
const INIT: Self = {
38-
let mut array = super::mem::uninit_array::<T, LEN>();
38+
// `<[T; LEN]>::from_fn` is not `const fn` [ref:const_array_from_fn]
39+
let mut array = mem::MaybeUninit::uninit_array();
3940

4041
// `for` is unusable in `const fn` [ref:const_for]
4142
let mut i = 0;

src/r3_test_suite/src/kernel_benchmarks/timer_start.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ impl<System: SupportedSystem> AppInner<System> {
3939
+ ~const traits::CfgTask
4040
+ ~const traits::CfgTimer,
4141
{
42+
// `<[T; LEN]>::from_fn` is not `const fn` [ref:const_array_from_fn]
4243
let timers = {
43-
let mut timers = [MaybeUninit::<StaticTimer<System>>::uninit(); 64];
44+
let mut timers = MaybeUninit::uninit_array();
4445

4546
let mut i = 0;
4647
// `for` is unusable in `const fn` [ref:const_for]

src/r3_test_suite/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#![feature(const_maybe_uninit_array_assume_init)]
22
#![feature(const_fn_floating_point_arithmetic)]
3+
#![feature(const_maybe_uninit_uninit_array)]
34
#![feature(maybe_uninit_array_assume_init)]
5+
#![feature(maybe_uninit_uninit_array)]
46
#![feature(cfg_target_has_atomic)]
57
#![feature(const_transmute_copy)]
68
#![feature(const_refs_to_cell)]

0 commit comments

Comments
 (0)