Skip to content

Commit ee00a0d

Browse files
committed
Impl VecAssumeInit for any Vec<T>
1 parent 8c63bc7 commit ee00a0d

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

lax/src/lib.rs

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -161,25 +161,16 @@ pub(crate) trait VecAssumeInit {
161161
unsafe fn assume_init(self) -> Self::Target;
162162
}
163163

164-
macro_rules! impl_vec_assume_init {
165-
($e:ty) => {
166-
impl VecAssumeInit for Vec<MaybeUninit<$e>> {
167-
type Target = Vec<$e>;
168-
unsafe fn assume_init(self) -> Self::Target {
169-
// FIXME use Vec::into_raw_parts instead after stablized
170-
// https://doc.rust-lang.org/std/vec/struct.Vec.html#method.into_raw_parts
171-
let mut me = std::mem::ManuallyDrop::new(self);
172-
Vec::from_raw_parts(me.as_mut_ptr() as *mut $e, me.len(), me.capacity())
173-
}
174-
}
175-
};
164+
impl<T> VecAssumeInit for Vec<MaybeUninit<T>> {
165+
type Target = Vec<T>;
166+
unsafe fn assume_init(self) -> Self::Target {
167+
// FIXME use Vec::into_raw_parts instead after stablized
168+
// https://doc.rust-lang.org/std/vec/struct.Vec.html#method.into_raw_parts
169+
let mut me = std::mem::ManuallyDrop::new(self);
170+
Vec::from_raw_parts(me.as_mut_ptr() as *mut T, me.len(), me.capacity())
171+
}
176172
}
177173

178-
impl_vec_assume_init!(f32);
179-
impl_vec_assume_init!(f64);
180-
impl_vec_assume_init!(c32);
181-
impl_vec_assume_init!(c64);
182-
183174
/// Upper/Lower specification for seveal usages
184175
#[derive(Debug, Clone, Copy)]
185176
#[repr(u8)]

0 commit comments

Comments
 (0)