PosMap: optimize into_2d
This commit is contained in:
parent
bd5ddba5bc
commit
9c0c4e02a0
@ -24,18 +24,24 @@ impl<T: Copy> PosMap<T> {
|
|||||||
n
|
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] =
|
let mut n: [[T; Board::SIZE as usize]; Board::SIZE as usize] =
|
||||||
unsafe { MaybeUninit::zeroed().assume_init() };
|
unsafe { MaybeUninit::zeroed().assume_init() };
|
||||||
|
|
||||||
const_for!(i in 0..Board::SIZE => {
|
const_for!(i in 0..Board::SIZE => {
|
||||||
const_for!(j 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
|
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 {
|
pub const fn get(&self, coords: CoordPair) -> &T {
|
||||||
&self.0[coords.0 as usize]
|
&self.0[coords.0 as usize]
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user