From 855652bfaa486de04c4a17cf26c6fb7555158879 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 28 Nov 2025 21:37:16 +0200 Subject: [PATCH] ManagedVec - to_array_of_refs simplification --- .../base/src/types/managed/wrapped/managed_vec.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/framework/base/src/types/managed/wrapped/managed_vec.rs b/framework/base/src/types/managed/wrapped/managed_vec.rs index 4112b391d2..2237d9c1af 100644 --- a/framework/base/src/types/managed/wrapped/managed_vec.rs +++ b/framework/base/src/types/managed/wrapped/managed_vec.rs @@ -14,12 +14,8 @@ use crate::{ }; use alloc::{format, vec::Vec}; use core::{ - borrow::Borrow, - cmp::Ordering, - fmt::Debug, - iter::FromIterator, - marker::PhantomData, - mem::{transmute_copy, ManuallyDrop, MaybeUninit}, + borrow::Borrow, cmp::Ordering, fmt::Debug, iter::FromIterator, marker::PhantomData, + mem::MaybeUninit, }; pub(crate) const INDEX_OUT_OF_RANGE_MSG: &[u8] = b"ManagedVec index out of range"; @@ -184,8 +180,7 @@ where return None; } - let mut result_uninit = - unsafe { MaybeUninit::<[MaybeUninit>; N]>::uninit().assume_init() }; + let mut result_uninit: [MaybeUninit>; N] = [const { MaybeUninit::uninit() }; N]; for (index, value) in self.iter().enumerate() { // length already checked @@ -194,7 +189,8 @@ where } } - let result = unsafe { transmute_copy(&ManuallyDrop::new(result_uninit)) }; + // TODO: replace with MaybeUninit::array_assume_init when it gets stabilized + let result = unsafe { core::mem::transmute_copy(&result_uninit) }; Some(result) }