Merge pull request #385 from rustsim/matrix_vec_no_deref
Remove the Deref implementation for MatrixVec
This commit is contained in:
commit
d702bf0382
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -35,7 +35,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
* Implement `Extend<Matrix<...>>` for matrices with dynamic storage. This will concatenate the columns of both matrices.
|
* Implement `Extend<Matrix<...>>` for matrices with dynamic storage. This will concatenate the columns of both matrices.
|
||||||
* Implement `Into<Vec>` for the `MatrixVec` storage.
|
* Implement `Into<Vec>` for the `MatrixVec` storage.
|
||||||
* Implement `Hash` for all matrices.
|
* Implement `Hash` for all matrices.
|
||||||
|
* Add a `.len()` method to retrieve the size of a `MatrixVec`.
|
||||||
|
|
||||||
### Modified
|
### Modified
|
||||||
* The orthographic projection no longer require that `bottom < top`, that `left < right`, and that `znear < zfar`. The
|
* The orthographic projection no longer require that `bottom < top`, that `left < right`, and that `znear < zfar`. The
|
||||||
only restriction now ith that they must not be equal (in which case the projection would be singular).
|
only restriction now ith that they must not be equal (in which case the projection would be singular).
|
||||||
|
@ -46,11 +47,14 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
* Renamed `.unwrap()` to `.into_inner()` for geometric types that wrap another type.
|
* Renamed `.unwrap()` to `.into_inner()` for geometric types that wrap another type.
|
||||||
This is for the case of `Unit`, `Transform`, `Orthographic3`, `Perspective3`, `Rotation`.
|
This is for the case of `Unit`, `Transform`, `Orthographic3`, `Perspective3`, `Rotation`.
|
||||||
* Deprecate several functions at the root of the crate (replaced by methods).
|
* Deprecate several functions at the root of the crate (replaced by methods).
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
* Remove the `Deref` impl for `MatrixVec` as it could cause hard-to-understand compilation errors.
|
||||||
|
|
||||||
### nalgebra-glm
|
### nalgebra-glm
|
||||||
* Add several alternative projection computations, e.g., `ortho_lh`, `ortho_lh_no`, `perspective_lh`, etc.
|
* Add several alternative projection computations, e.g., `ortho_lh`, `ortho_lh_no`, `perspective_lh`, etc.
|
||||||
* Add features matching those of nalgebra, in particular: `serde-serialize`, `abmonation-serialize`, std` (enabled by default).
|
* Add features matching those of nalgebra, in particular: `serde-serialize`, `abmonation-serialize`, std` (enabled by default).
|
||||||
|
|
||||||
## [0.16.0]
|
## [0.16.0]
|
||||||
All dependencies have been updated to their latest versions.
|
All dependencies have been updated to their latest versions.
|
||||||
|
|
||||||
|
|
|
@ -270,7 +270,7 @@ where DefaultAllocator: Allocator<N, R, C>
|
||||||
/// let vec_ptr = vec.as_ptr();
|
/// let vec_ptr = vec.as_ptr();
|
||||||
///
|
///
|
||||||
/// let matrix = Matrix::from_vec_generic(Dynamic::new(vec.len()), U1, vec);
|
/// let matrix = Matrix::from_vec_generic(Dynamic::new(vec.len()), U1, vec);
|
||||||
/// let matrix_storage_ptr = matrix.data.as_ptr();
|
/// let matrix_storage_ptr = matrix.data.as_vec().as_ptr();
|
||||||
///
|
///
|
||||||
/// // `matrix` is backed by exactly the same `Vec` as it was constructed from.
|
/// // `matrix` is backed by exactly the same `Vec` as it was constructed from.
|
||||||
/// assert_eq!(matrix_storage_ptr, vec_ptr);
|
/// assert_eq!(matrix_storage_ptr, vec_ptr);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#[cfg(feature = "abomonation-serialize")]
|
#[cfg(feature = "abomonation-serialize")]
|
||||||
use std::io::{Result as IOResult, Write};
|
use std::io::{Result as IOResult, Write};
|
||||||
use std::ops::Deref;
|
|
||||||
|
|
||||||
#[cfg(all(feature = "alloc", not(feature = "std")))]
|
#[cfg(all(feature = "alloc", not(feature = "std")))]
|
||||||
use alloc::vec::Vec;
|
use alloc::vec::Vec;
|
||||||
|
@ -51,15 +50,16 @@ impl<N, R: Dim, C: Dim> VecStorage<N, R, C> {
|
||||||
|
|
||||||
/// The underlying data storage.
|
/// The underlying data storage.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn data(&self) -> &Vec<N> {
|
pub fn as_vec(&self) -> &Vec<N> {
|
||||||
&self.data
|
&self.data
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The underlying mutable data storage.
|
/// The underlying mutable data storage.
|
||||||
///
|
///
|
||||||
/// This is unsafe because this may cause UB if the vector is modified by the user.
|
/// This is unsafe because this may cause UB if the size of the vector is changed
|
||||||
|
/// by the user.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub unsafe fn data_mut(&mut self) -> &mut Vec<N> {
|
pub unsafe fn as_vec_mut(&mut self) -> &mut Vec<N> {
|
||||||
&mut self.data
|
&mut self.data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,14 +81,11 @@ impl<N, R: Dim, C: Dim> VecStorage<N, R, C> {
|
||||||
|
|
||||||
self.data
|
self.data
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
impl<N, R: Dim, C: Dim> Deref for VecStorage<N, R, C> {
|
|
||||||
type Target = Vec<N>;
|
|
||||||
|
|
||||||
|
/// The number of elements on the underlying vector.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn deref(&self) -> &Self::Target {
|
pub fn len(&self) -> usize {
|
||||||
&self.data
|
self.data.len()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +142,7 @@ where DefaultAllocator: Allocator<N, Dynamic, C, Buffer = Self>
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_slice(&self) -> &[N] {
|
fn as_slice(&self) -> &[N] {
|
||||||
&self[..]
|
&self.data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +186,7 @@ where DefaultAllocator: Allocator<N, R, Dynamic, Buffer = Self>
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_slice(&self) -> &[N] {
|
fn as_slice(&self) -> &[N] {
|
||||||
&self[..]
|
&self.data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue