ensure slice can be cast to Matrix
This commit is contained in:
parent
17ab18e953
commit
8383517ba3
|
@ -4,7 +4,7 @@ use num_traits::identities::Zero;
|
||||||
|
|
||||||
/// A row-major matrix
|
/// A row-major matrix
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
#[repr(C)]
|
#[repr(transparent)]
|
||||||
pub struct Matrix<T, const M: usize, const N: usize> {
|
pub struct Matrix<T, const M: usize, const N: usize> {
|
||||||
pub data: [[T; N]; M],
|
pub data: [[T; N]; M],
|
||||||
}
|
}
|
||||||
|
@ -346,4 +346,18 @@ mod flipping {
|
||||||
let flipped = m.flip_ud();
|
let flipped = m.flip_ud();
|
||||||
assert_eq!(flipped, Matrix::new([[5.0], [4.0], [3.0], [2.0], [1.0]]));
|
assert_eq!(flipped, Matrix::new([[5.0], [4.0], [3.0], [2.0], [1.0]]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn assert_castability_of_alignment() {
|
||||||
|
let m = Matrix::new([[1.0], [2.0], [3.0], [4.0_f64]]);
|
||||||
|
assert_eq!(std::mem::align_of_val(&m), std::mem::align_of::<f64>());
|
||||||
|
let m = Matrix::new([[1.0], [2.0], [3.0], [4.0_f32]]);
|
||||||
|
assert_eq!(std::mem::align_of_val(&m), std::mem::align_of::<f32>());
|
||||||
|
let m = Matrix::new([[1], [2], [3], [4_i32]]);
|
||||||
|
assert_eq!(std::mem::align_of_val(&m), std::mem::align_of::<i32>());
|
||||||
|
let m = Matrix::new([[1], [2], [3], [4_u64]]);
|
||||||
|
assert_eq!(std::mem::align_of_val(&m), std::mem::align_of::<u64>());
|
||||||
|
let m = Matrix::new([[1], [2], [3], [4_u128]]);
|
||||||
|
assert_eq!(std::mem::align_of_val(&m), std::mem::align_of::<u128>());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue