PosMap: optimize into_2d
This commit is contained in:
parent
bd5ddba5bc
commit
9c0c4e02a0
@ -24,18 +24,24 @@ impl<T: Copy> PosMap<T> {
|
||||
n
|
||||
}
|
||||
|
||||
pub const fn into_2d(&self) -> [[T; Board::SIZE as usize]; Board::SIZE as usize] {
|
||||
pub const fn into_2d(mut self) -> [[T; Board::SIZE as usize]; Board::SIZE as usize] {
|
||||
let mut n: [[T; Board::SIZE as usize]; Board::SIZE as usize] =
|
||||
unsafe { MaybeUninit::zeroed().assume_init() };
|
||||
|
||||
const_for!(i in 0..Board::SIZE => {
|
||||
const_for!(j in 0..Board::SIZE => {
|
||||
n[i as usize][j as usize] = *self.get(CoordPair::from_axes(i, j));
|
||||
});
|
||||
// take because we are consuming `self`
|
||||
n[i as usize][j as usize] =
|
||||
unsafe { std::ptr::read(self.get_mut(CoordPair::from_axes(i, j))) };
|
||||
});
|
||||
});
|
||||
n
|
||||
}
|
||||
|
||||
pub const fn get_mut(&mut self, coords: CoordPair) -> &mut T {
|
||||
&mut self.0[coords.0 as usize]
|
||||
}
|
||||
|
||||
pub const fn get(&self, coords: CoordPair) -> &T {
|
||||
&self.0[coords.0 as usize]
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user