forked from M-Labs/nalgebra
Rename the matrix slice constructors from ::new_*
to _from_slice_*
.
This commit is contained in:
parent
fefba2ef4e
commit
d89e3dbac6
@ -1,6 +1,6 @@
|
|||||||
use core::{MatrixSliceMN, MatrixSliceMutMN, Scalar};
|
|
||||||
use core::dimension::{Dim, DimName, Dynamic, U1};
|
use core::dimension::{Dim, DimName, Dynamic, U1};
|
||||||
use core::matrix_slice::{SliceStorage, SliceStorageMut};
|
use core::matrix_slice::{SliceStorage, SliceStorageMut};
|
||||||
|
use core::{MatrixSliceMN, MatrixSliceMutMN, Scalar};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
@ -8,13 +8,14 @@ use core::matrix_slice::{SliceStorage, SliceStorageMut};
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
||||||
MatrixSliceMN<'a, N, R, C, RStride, CStride> {
|
MatrixSliceMN<'a, N, R, C, RStride, CStride>
|
||||||
|
{
|
||||||
/// Creates, without bound-checking, a matrix slice from an array and with dimensions and strides specified by generic types instances.
|
/// Creates, without bound-checking, a matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
///
|
///
|
||||||
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
||||||
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_with_strides_generic_unchecked(
|
pub unsafe fn from_slice_with_strides_generic_unchecked(
|
||||||
data: &'a [N],
|
data: &'a [N],
|
||||||
start: usize,
|
start: usize,
|
||||||
nrows: R,
|
nrows: R,
|
||||||
@ -35,7 +36,7 @@ impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
|||||||
/// Panics if the input data array dose not contain enough elements.
|
/// Panics if the input data array dose not contain enough elements.
|
||||||
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_with_strides_generic(
|
pub fn from_slice_with_strides_generic(
|
||||||
data: &'a [N],
|
data: &'a [N],
|
||||||
nrows: R,
|
nrows: R,
|
||||||
ncols: C,
|
ncols: C,
|
||||||
@ -51,19 +52,21 @@ impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
|||||||
"Matrix slice: input data buffer to small."
|
"Matrix slice: input data buffer to small."
|
||||||
);
|
);
|
||||||
|
|
||||||
unsafe { Self::new_with_strides_generic_unchecked(data, 0, nrows, ncols, rstride, cstride) }
|
unsafe {
|
||||||
|
Self::from_slice_with_strides_generic_unchecked(data, 0, nrows, ncols, rstride, cstride)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
||||||
MatrixSliceMutMN<'a, N, R, C, RStride, CStride> {
|
MatrixSliceMutMN<'a, N, R, C, RStride, CStride>
|
||||||
|
{
|
||||||
/// Creates, without bound-checking, a mutable matrix slice from an array and with dimensions and strides specified by generic types instances.
|
/// Creates, without bound-checking, a mutable matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
///
|
///
|
||||||
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
||||||
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_with_strides_generic_mut_unchecked(
|
pub unsafe fn from_slice_with_strides_generic_unchecked(
|
||||||
data: &'a mut [N],
|
data: &'a mut [N],
|
||||||
start: usize,
|
start: usize,
|
||||||
nrows: R,
|
nrows: R,
|
||||||
@ -84,7 +87,7 @@ impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
|||||||
/// Panics if the input data array dose not contain enough elements.
|
/// Panics if the input data array dose not contain enough elements.
|
||||||
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
/// The generic types `R`, `C`, `RStride`, `CStride` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_with_strides_generic_mut(
|
pub fn from_slice_with_strides_generic(
|
||||||
data: &'a mut [N],
|
data: &'a mut [N],
|
||||||
nrows: R,
|
nrows: R,
|
||||||
ncols: C,
|
ncols: C,
|
||||||
@ -101,7 +104,7 @@ impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim>
|
|||||||
);
|
);
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
Self::new_with_strides_generic_mut_unchecked(data, 0, nrows, ncols, rstride, cstride)
|
Self::from_slice_with_strides_generic_unchecked(data, 0, nrows, ncols, rstride, cstride)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -112,8 +115,13 @@ impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMN<'a, N, R, C> {
|
|||||||
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
||||||
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_generic_unchecked(data: &'a [N], start: usize, nrows: R, ncols: C) -> Self {
|
pub unsafe fn from_slice_generic_unchecked(
|
||||||
Self::new_with_strides_generic_unchecked(data, start, nrows, ncols, U1, nrows)
|
data: &'a [N],
|
||||||
|
start: usize,
|
||||||
|
nrows: R,
|
||||||
|
ncols: C,
|
||||||
|
) -> Self {
|
||||||
|
Self::from_slice_with_strides_generic_unchecked(data, start, nrows, ncols, U1, nrows)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a matrix slice from an array and with dimensions and strides specified by generic types instances.
|
/// Creates a matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
@ -121,8 +129,8 @@ impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMN<'a, N, R, C> {
|
|||||||
/// Panics if the input data array dose not contain enough elements.
|
/// Panics if the input data array dose not contain enough elements.
|
||||||
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_generic(data: &'a [N], nrows: R, ncols: C) -> Self {
|
pub fn from_slice_generic(data: &'a [N], nrows: R, ncols: C) -> Self {
|
||||||
Self::new_with_strides_generic(data, nrows, ncols, U1, nrows)
|
Self::from_slice_with_strides_generic(data, nrows, ncols, U1, nrows)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,13 +140,13 @@ impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMutMN<'a, N, R, C> {
|
|||||||
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
/// This method is unsafe because the input data array is not checked to contain enough elements.
|
||||||
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_generic_mut_unchecked(
|
pub unsafe fn from_slice_generic_unchecked(
|
||||||
data: &'a mut [N],
|
data: &'a mut [N],
|
||||||
start: usize,
|
start: usize,
|
||||||
nrows: R,
|
nrows: R,
|
||||||
ncols: C,
|
ncols: C,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self::new_with_strides_generic_mut_unchecked(data, start, nrows, ncols, U1, nrows)
|
Self::from_slice_with_strides_generic_unchecked(data, start, nrows, ncols, U1, nrows)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a mutable matrix slice from an array and with dimensions and strides specified by generic types instances.
|
/// Creates a mutable matrix slice from an array and with dimensions and strides specified by generic types instances.
|
||||||
@ -146,8 +154,8 @@ impl<'a, N: Scalar, R: Dim, C: Dim> MatrixSliceMutMN<'a, N, R, C> {
|
|||||||
/// Panics if the input data array dose not contain enough elements.
|
/// Panics if the input data array dose not contain enough elements.
|
||||||
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
/// The generic types `R` and `C` can either be type-level integers or integers wrapped with `Dynamic::new()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_generic_mut(data: &'a mut [N], nrows: R, ncols: C) -> Self {
|
pub fn from_slice_generic(data: &'a mut [N], nrows: R, ncols: C) -> Self {
|
||||||
Self::new_with_strides_generic_mut(data, nrows, ncols, U1, nrows)
|
Self::from_slice_with_strides_generic(data, nrows, ncols, U1, nrows)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,14 +166,14 @@ macro_rules! impl_constructors(
|
|||||||
///
|
///
|
||||||
/// Panics if `data` does not contain enough elements.
|
/// Panics if `data` does not contain enough elements.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(data: &'a [N], $($args: usize),*) -> Self {
|
pub fn from_slice(data: &'a [N], $($args: usize),*) -> Self {
|
||||||
Self::new_generic(data, $($gargs),*)
|
Self::from_slice_generic(data, $($gargs),*)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates, without bound checking, a new matrix slice from the given data array.
|
/// Creates, without bound checking, a new matrix slice from the given data array.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_unchecked(data: &'a [N], start: usize, $($args: usize),*) -> Self {
|
pub unsafe fn from_slice_unchecked(data: &'a [N], start: usize, $($args: usize),*) -> Self {
|
||||||
Self::new_generic_unchecked(data, start, $($gargs),*)
|
Self::from_slice_generic_unchecked(data, start, $($gargs),*)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,14 +182,14 @@ macro_rules! impl_constructors(
|
|||||||
///
|
///
|
||||||
/// Panics if `data` does not contain enough elements.
|
/// Panics if `data` does not contain enough elements.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_with_strides(data: &'a [N], $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
pub fn from_slice_with_strides(data: &'a [N], $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
||||||
Self::new_with_strides_generic(data, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
Self::from_slice_with_strides_generic(data, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates, without bound checking, a new matrix slice with the specified strides from the given data array.
|
/// Creates, without bound checking, a new matrix slice with the specified strides from the given data array.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_with_strides_unchecked(data: &'a [N], start: usize, $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
pub unsafe fn from_slice_with_strides_unchecked(data: &'a [N], start: usize, $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
||||||
Self::new_with_strides_generic_unchecked(data, start, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
Self::from_slice_with_strides_generic_unchecked(data, start, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -215,14 +223,14 @@ macro_rules! impl_constructors_mut(
|
|||||||
///
|
///
|
||||||
/// Panics if `data` does not contain enough elements.
|
/// Panics if `data` does not contain enough elements.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(data: &'a mut [N], $($args: usize),*) -> Self {
|
pub fn from_slice(data: &'a mut [N], $($args: usize),*) -> Self {
|
||||||
Self::new_generic_mut(data, $($gargs),*)
|
Self::from_slice_generic(data, $($gargs),*)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates, without bound checking, a new mutable matrix slice from the given data array.
|
/// Creates, without bound checking, a new mutable matrix slice from the given data array.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_unchecked(data: &'a mut [N], start: usize, $($args: usize),*) -> Self {
|
pub unsafe fn from_slice_unchecked(data: &'a mut [N], start: usize, $($args: usize),*) -> Self {
|
||||||
Self::new_generic_mut_unchecked(data, start, $($gargs),*)
|
Self::from_slice_generic_unchecked(data, start, $($gargs),*)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,15 +239,15 @@ macro_rules! impl_constructors_mut(
|
|||||||
///
|
///
|
||||||
/// Panics if `data` does not contain enough elements.
|
/// Panics if `data` does not contain enough elements.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new_with_strides(data: &'a mut [N], $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
pub fn from_slice_with_strides_mut(data: &'a mut [N], $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
||||||
Self::new_with_strides_generic_mut(
|
Self::from_slice_with_strides_generic(
|
||||||
data, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
data, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates, without bound checking, a new mutable matrix slice with the specified strides from the given data array.
|
/// Creates, without bound checking, a new mutable matrix slice with the specified strides from the given data array.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn new_with_strides_unchecked(data: &'a mut [N], start: usize, $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
pub unsafe fn from_slice_with_strides_unchecked(data: &'a mut [N], start: usize, $($args: usize,)* rstride: usize, cstride: usize) -> Self {
|
||||||
Self::new_with_strides_generic_mut_unchecked(
|
Self::from_slice_with_strides_generic_unchecked(
|
||||||
data, start, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
data, start, $($gargs,)* Dynamic::new(rstride), Dynamic::new(cstride))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,7 @@ an optimized set of tools for computer graphics and physics. Those features incl
|
|||||||
#![deny(unused_qualifications)]
|
#![deny(unused_qualifications)]
|
||||||
#![deny(unused_results)]
|
#![deny(unused_results)]
|
||||||
#![deny(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
|
#![deny(incoherent_fundamental_impls)]
|
||||||
#![doc(html_root_url = "http://nalgebra.org/rustdoc")]
|
#![doc(html_root_url = "http://nalgebra.org/rustdoc")]
|
||||||
|
|
||||||
#[cfg(feature = "arbitrary")]
|
#[cfg(feature = "arbitrary")]
|
||||||
@ -111,22 +112,22 @@ extern crate typenum;
|
|||||||
extern crate alga;
|
extern crate alga;
|
||||||
|
|
||||||
pub mod core;
|
pub mod core;
|
||||||
pub mod linalg;
|
|
||||||
pub mod geometry;
|
|
||||||
#[cfg(feature = "debug")]
|
#[cfg(feature = "debug")]
|
||||||
pub mod debug;
|
pub mod debug;
|
||||||
|
pub mod geometry;
|
||||||
|
pub mod linalg;
|
||||||
|
|
||||||
pub use core::*;
|
pub use core::*;
|
||||||
pub use linalg::*;
|
|
||||||
pub use geometry::*;
|
pub use geometry::*;
|
||||||
|
pub use linalg::*;
|
||||||
|
|
||||||
use std::cmp::{self, Ordering, PartialOrd};
|
use std::cmp::{self, Ordering, PartialOrd};
|
||||||
|
|
||||||
use num::Signed;
|
|
||||||
use alga::general::{Additive, AdditiveGroup, Identity, Inverse, JoinSemilattice, Lattice,
|
use alga::general::{Additive, AdditiveGroup, Identity, Inverse, JoinSemilattice, Lattice,
|
||||||
MeetSemilattice, Multiplicative, SupersetOf};
|
MeetSemilattice, Multiplicative, SupersetOf};
|
||||||
use alga::linear::SquareMatrix as AlgaSquareMatrix;
|
use alga::linear::SquareMatrix as AlgaSquareMatrix;
|
||||||
use alga::linear::{EuclideanSpace, FiniteDimVectorSpace, InnerSpace, NormedSpace};
|
use alga::linear::{EuclideanSpace, FiniteDimVectorSpace, InnerSpace, NormedSpace};
|
||||||
|
use num::Signed;
|
||||||
|
|
||||||
pub use alga::general::{Id, Real};
|
pub use alga::general::{Id, Real};
|
||||||
|
|
||||||
|
@ -209,13 +209,13 @@ fn new_slice() {
|
|||||||
let expected3x2 = Matrix3x2::from_column_slice(&data);
|
let expected3x2 = Matrix3x2::from_column_slice(&data);
|
||||||
|
|
||||||
{
|
{
|
||||||
let m2 = MatrixSlice2::new(&data);
|
let m2 = MatrixSlice2::from_slice(&data);
|
||||||
let m3 = MatrixSlice3::new(&data);
|
let m3 = MatrixSlice3::from_slice(&data);
|
||||||
let m2x3 = MatrixSlice2x3::new(&data);
|
let m2x3 = MatrixSlice2x3::from_slice(&data);
|
||||||
let m3x2 = MatrixSlice3x2::new(&data);
|
let m3x2 = MatrixSlice3x2::from_slice(&data);
|
||||||
let m2xX = MatrixSlice2xX::new(&data, 3);
|
let m2xX = MatrixSlice2xX::from_slice(&data, 3);
|
||||||
let mXx3 = MatrixSliceXx3::new(&data, 2);
|
let mXx3 = MatrixSliceXx3::from_slice(&data, 2);
|
||||||
let mXxX = DMatrixSlice::new(&data, 2, 3);
|
let mXxX = DMatrixSlice::from_slice(&data, 2, 3);
|
||||||
|
|
||||||
assert!(m2.eq(&expected2));
|
assert!(m2.eq(&expected2));
|
||||||
assert!(m3.eq(&expected3));
|
assert!(m3.eq(&expected3));
|
||||||
@ -246,31 +246,31 @@ fn new_slice_mut() {
|
|||||||
9.0, 10.0, 11.0, 12.0 ];
|
9.0, 10.0, 11.0, 12.0 ];
|
||||||
|
|
||||||
let mut data_mut = data.clone();
|
let mut data_mut = data.clone();
|
||||||
MatrixSliceMut2::new(&mut data_mut).fill(0.0);
|
MatrixSliceMut2::from_slice(&mut data_mut).fill(0.0);
|
||||||
assert!(data_mut == expected2);
|
assert!(data_mut == expected2);
|
||||||
|
|
||||||
let mut data_mut = data.clone();
|
let mut data_mut = data.clone();
|
||||||
MatrixSliceMut3::new(&mut data_mut).fill(0.0);
|
MatrixSliceMut3::from_slice(&mut data_mut).fill(0.0);
|
||||||
assert!(data_mut == expected3);
|
assert!(data_mut == expected3);
|
||||||
|
|
||||||
let mut data_mut = data.clone();
|
let mut data_mut = data.clone();
|
||||||
MatrixSliceMut2x3::new(&mut data_mut).fill(0.0);
|
MatrixSliceMut2x3::from_slice(&mut data_mut).fill(0.0);
|
||||||
assert!(data_mut == expected2x3);
|
assert!(data_mut == expected2x3);
|
||||||
|
|
||||||
let mut data_mut = data.clone();
|
let mut data_mut = data.clone();
|
||||||
MatrixSliceMut3x2::new(&mut data_mut).fill(0.0);
|
MatrixSliceMut3x2::from_slice(&mut data_mut).fill(0.0);
|
||||||
assert!(data_mut == expected3x2);
|
assert!(data_mut == expected3x2);
|
||||||
|
|
||||||
let mut data_mut = data.clone();
|
let mut data_mut = data.clone();
|
||||||
MatrixSliceMut2xX::new(&mut data_mut, 3).fill(0.0);
|
MatrixSliceMut2xX::from_slice(&mut data_mut, 3).fill(0.0);
|
||||||
assert!(data_mut == expected2x3);
|
assert!(data_mut == expected2x3);
|
||||||
|
|
||||||
let mut data_mut = data.clone();
|
let mut data_mut = data.clone();
|
||||||
MatrixSliceMutXx3::new(&mut data_mut, 2).fill(0.0);
|
MatrixSliceMutXx3::from_slice(&mut data_mut, 2).fill(0.0);
|
||||||
assert!(data_mut == expected2x3);
|
assert!(data_mut == expected2x3);
|
||||||
|
|
||||||
let mut data_mut = data.clone();
|
let mut data_mut = data.clone();
|
||||||
DMatrixSliceMut::new(&mut data_mut, 2, 3).fill(0.0);
|
DMatrixSliceMut::from_slice(&mut data_mut, 2, 3).fill(0.0);
|
||||||
assert!(data_mut == expected2x3);
|
assert!(data_mut == expected2x3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user