diff --git a/src/lib.rs b/src/lib.rs index 4643673..202fab1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -170,9 +170,11 @@ //! ``` #![allow(incomplete_features)] +#![feature(const_evaluatable_checked)] #![feature(const_generics)] #![feature(trivial_bounds)] #![feature(maybe_uninit_ref)] +#![feature(maybe_uninit_uninit_array)] use core::{ cmp::PartialOrd, @@ -180,7 +182,7 @@ use core::{ hash::{Hash, Hasher}, iter::{FromIterator, Product}, marker::PhantomData, - mem::{self, MaybeUninit}, + mem::{self, transmute_copy, MaybeUninit}, ops::{ Add, AddAssign, Deref, DerefMut, Div, DivAssign, Index, IndexMut, Mul, MulAssign, Neg, Sub, SubAssign, diff --git a/src/matrix.rs b/src/matrix.rs index 422442d..9ebc05f 100644 --- a/src/matrix.rs +++ b/src/matrix.rs @@ -882,12 +882,12 @@ impl DerefMut for Permutation<{ N }> { impl Permutation<{ N }> { /// Returns the unit permutation. pub fn unit() -> Permutation<{ N }> { - let mut arr = MaybeUninit::<[usize; N]>::uninit(); + let mut arr: [MaybeUninit; N] = MaybeUninit::uninit_array(); let arr = unsafe { for i in 0..N { - *arr.get_mut().index_mut(i) = i; + arr[i] = MaybeUninit::new(i); } - arr.assume_init() + transmute_copy::<_, _>(&arr) }; Permutation { arr, num_swaps: 0 } }