From c13b0388eff8dbb4c91c29d7781a7ac036f82efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Crozet?= Date: Tue, 7 Jul 2015 22:40:14 +0200 Subject: [PATCH 1/2] Remove implementations of `Rotation`, `Translation` and `Transformation` for the `Identity` type. Because most of their methods did not make sence for the (constant) identity matrix, they were set to `panic!` at runtime whenever the user tried to use them. Instead, it is much safer to completely forbid their use by removing the related trait implementation. See sebcrozet/ncollide#87. --- Makefile | 2 +- src/structs/spec/identity.rs | 116 +---------------------------------- 2 files changed, 3 insertions(+), 115 deletions(-) diff --git a/Makefile b/Makefile index 87ccbffc..fd047981 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ bench: cargo bench doc: - cargo doc + cargo doc --no-deps clean: cargo clean diff --git a/src/structs/spec/identity.rs b/src/structs/spec/identity.rs index caee2baa..36314f0d 100644 --- a/src/structs/spec/identity.rs +++ b/src/structs/spec/identity.rs @@ -1,9 +1,8 @@ use std::ops::Mul; -use num::{Zero, One}; +use num::One; use structs::mat; use traits::operations::{Inv, Transpose}; -use traits::geometry::{Translation, Translate, Rotation, Rotate, Transformation, Transform, - AbsoluteRotate}; +use traits::geometry::{Translate, Rotate, Transform, AbsoluteRotate}; impl One for mat::Identity { #[inline] @@ -42,43 +41,6 @@ impl Transpose for mat::Identity { } } -impl Translation for mat::Identity { - #[inline] - fn translation(&self) -> V { - ::zero() - } - - #[inline] - fn inv_translation(&self) -> V { - ::zero() - } - - #[inline] - fn append_translation_mut(&mut self, _: &V) { - panic!("Attempted to translate the identity matrix.") - } - - #[inline] - fn append_translation(&self, _: &V) -> mat::Identity { - panic!("Attempted to translate the identity matrix.") - } - - #[inline] - fn prepend_translation_mut(&mut self, _: &V) { - panic!("Attempted to translate the identity matrix.") - } - - #[inline] - fn prepend_translation(&self, _: &V) -> mat::Identity { - panic!("Attempted to translate the identity matrix.") - } - - #[inline] - fn set_translation(&mut self, _: V) { - panic!("Attempted to translate the identity matrix.") - } -} - impl Translate for mat::Identity { #[inline] fn translate(&self, v: &V) -> V { @@ -91,43 +53,6 @@ impl Translate for mat::Identity { } } -impl Rotation for mat::Identity { - #[inline] - fn rotation(&self) -> V { - ::zero() - } - - #[inline] - fn inv_rotation(&self) -> V { - ::zero() - } - - #[inline] - fn append_rotation_mut(&mut self, _: &V) { - panic!("Attempted to rotate the identity matrix.") - } - - #[inline] - fn append_rotation(&self, _: &V) -> mat::Identity { - panic!("Attempted to rotate the identity matrix.") - } - - #[inline] - fn prepend_rotation_mut(&mut self, _: &V) { - panic!("Attempted to rotate the identity matrix.") - } - - #[inline] - fn prepend_rotation(&self, _: &V) -> mat::Identity { - panic!("Attempted to rotate the identity matrix.") - } - - #[inline] - fn set_rotation(&mut self, _: V) { - panic!("Attempted to rotate the identity matrix.") - } -} - impl Rotate for mat::Identity { #[inline] fn rotate(&self, v: &V) -> V { @@ -147,43 +72,6 @@ impl AbsoluteRotate for mat::Identity { } } -impl Transformation for mat::Identity { - #[inline] - fn transformation(&self) -> M { - ::one() - } - - #[inline] - fn inv_transformation(&self) -> M { - ::one() - } - - #[inline] - fn append_transformation_mut(&mut self, _: &M) { - panic!("Attempted to transform the identity matrix.") - } - - #[inline] - fn append_transformation(&self, _: &M) -> mat::Identity { - panic!("Attempted to transform the identity matrix.") - } - - #[inline] - fn prepend_transformation_mut(&mut self, _: &M) { - panic!("Attempted to transform the identity matrix.") - } - - #[inline] - fn prepend_transformation(&self, _: &M) -> mat::Identity { - panic!("Attempted to transform the identity matrix.") - } - - #[inline] - fn set_transformation(&mut self, _: M) { - panic!("Attempted to transform the identity matrix.") - } -} - impl Transform for mat::Identity { #[inline] fn transform(&self, v: &V) -> V { From 4533117433e3567639963b7cbb5e049079a9105c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Crozet?= Date: Tue, 7 Jul 2015 22:55:41 +0200 Subject: [PATCH 2/2] Release v0.2.19. --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 6520023d..708e006b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nalgebra" -version = "0.2.18" +version = "0.2.19" authors = [ "Sébastien Crozet " ] # FIXME: add the contributors. description = "Linear algebra library for computer physics, computer graphics and general low-dimensional linear algebra for Rust."