From a6acab93c3e22e901fa7ab816bfeb257bb4b78f4 Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Mon, 15 Apr 2013 07:09:43 +1000 Subject: [PATCH] Simplify trait bounds Requires the latest version of numeric --- src/mat.rs | 25 ++++++++++++------------- src/projection.rs | 9 +++------ src/quat.rs | 7 +++---- src/vec.rs | 35 +++++++++++++++++------------------ 4 files changed, 35 insertions(+), 41 deletions(-) diff --git a/src/mat.rs b/src/mat.rs index 62ce93d..073e92e 100644 --- a/src/mat.rs +++ b/src/mat.rs @@ -1,4 +1,3 @@ -use core::num::{Zero, One}; use core::num::Zero::zero; use core::num::One::one; use std::cmp::{FuzzyEq, FUZZY_EPSILON}; @@ -313,7 +312,7 @@ pub trait BaseMat4: BaseMat { #[deriving(Eq)] pub struct Mat2 { x: Vec2, y: Vec2 } -impl + Add + Sub + Mul + Div + Neg> BaseMat> for Mat2 { +impl BaseMat> for Mat2 { #[inline(always)] fn col(&self, i: uint) -> Vec2 { self[i] } @@ -538,7 +537,7 @@ impl + Add + Sub + Mul + } } -impl + Add + Sub + Mul + Div + Neg> BaseMat2> for Mat2 { +impl BaseMat2> for Mat2 { /** * Construct a 2 x 2 matrix * @@ -645,14 +644,14 @@ impl Index> for Mat2 { } } -impl + Add + Sub + Mul + Div + Neg> Neg> for Mat2 { +impl Neg> for Mat2 { #[inline(always)] fn neg(&self) -> Mat2 { BaseMat2::from_cols(-self[0], -self[1]) } } -impl> FuzzyEq for Mat2 { +impl FuzzyEq for Mat2 { #[inline(always)] fn fuzzy_eq(&self, other: &Mat2) -> bool { self.fuzzy_eq_eps(other, &num::cast(FUZZY_EPSILON)) @@ -723,7 +722,7 @@ mat2_type!(Mat2f64) #[deriving(Eq)] pub struct Mat3 { x: Vec3, y: Vec3, z: Vec3 } -impl + Add + Sub + Mul + Div + Neg> BaseMat> for Mat3 { +impl BaseMat> for Mat3 { #[inline(always)] fn col(&self, i: uint) -> Vec3 { self[i] } @@ -997,7 +996,7 @@ impl + Add + Sub + Mul + } } -impl + Add + Sub + Mul + Div + Neg> BaseMat3> for Mat3 { +impl BaseMat3> for Mat3 { /** * Construct a 3 x 3 matrix * @@ -1229,14 +1228,14 @@ impl Index> for Mat3 { } } -impl + Add + Sub + Mul + Div + Neg> Neg> for Mat3 { +impl Neg> for Mat3 { #[inline(always)] fn neg(&self) -> Mat3 { BaseMat3::from_cols(-self[0], -self[1], -self[2]) } } -impl + Add + Sub + Mul + Div + Neg> FuzzyEq for Mat3 { +impl FuzzyEq for Mat3 { #[inline(always)] fn fuzzy_eq(&self, other: &Mat3) -> bool { self.fuzzy_eq_eps(other, &num::cast(FUZZY_EPSILON)) @@ -1312,7 +1311,7 @@ mat3_type!(Mat3f64) #[deriving(Eq)] pub struct Mat4 { x: Vec4, y: Vec4, z: Vec4, w: Vec4 } -impl + Add + Sub + Mul + Div + Neg> BaseMat> for Mat4 { +impl BaseMat> for Mat4 { #[inline(always)] fn col(&self, i: uint) -> Vec4 { self[i] } @@ -1685,7 +1684,7 @@ impl + Add + Sub + Mul + } } -impl + Add + Sub + Mul + Div + Neg> BaseMat4> for Mat4 { +impl BaseMat4> for Mat4 { /** * Construct a 4 x 4 matrix * @@ -1749,7 +1748,7 @@ impl + Add + Sub + Mul + } } -impl + Add + Sub + Mul + Div + Neg> Neg> for Mat4 { +impl Neg> for Mat4 { #[inline(always)] fn neg(&self) -> Mat4 { BaseMat4::from_cols(-self[0], -self[1], -self[2], -self[3]) @@ -1763,7 +1762,7 @@ impl Index> for Mat4 { } } -impl> FuzzyEq for Mat4 { +impl FuzzyEq for Mat4 { #[inline(always)] fn fuzzy_eq(&self, other: &Mat4) -> bool { self.fuzzy_eq_eps(other, &num::cast(FUZZY_EPSILON)) diff --git a/src/projection.rs b/src/projection.rs index 15b05a6..646f2c3 100644 --- a/src/projection.rs +++ b/src/projection.rs @@ -1,8 +1,5 @@ -use core::num::{Zero, One}; use numeric::*; -use std::cmp::FuzzyEq; - use mat::{Mat4, BaseMat4}; /** @@ -14,7 +11,7 @@ use mat::{Mat4, BaseMat4}; * can be found [here](http://www.opengl.org/wiki/GluPerspective_code). */ #[inline(always)] -pub fn perspective + Add + Sub + Mul + Div + Neg>(fovy: T, aspectRatio: T, near: T, far: T) -> Mat4 { +pub fn perspective(fovy: T, aspectRatio: T, near: T, far: T) -> Mat4 { let _2: T = num::cast(2); let ymax = near * tan(radians(fovy / _2)); @@ -30,7 +27,7 @@ pub fn perspective + Add + Sub + Add + Sub + Mul + Div + Neg>(left: T, right: T, bottom: T, top: T, near: T, far: T) -> Mat4 { +pub fn frustum(left: T, right: T, bottom: T, top: T, near: T, far: T) -> Mat4 { let _0: T = num::cast(0); let _1: T = num::cast(1); let _2: T = num::cast(2); @@ -68,7 +65,7 @@ pub fn frustum + Add + Sub + * (http://www.opengl.org/sdk/docs/man2/xhtml/glOrtho.xml) function. */ #[inline(always)] -pub fn ortho + Add + Sub + Mul + Div + Neg>(left: T, right: T, bottom: T, top: T, near: T, far: T) -> Mat4 { +pub fn ortho(left: T, right: T, bottom: T, top: T, near: T, far: T) -> Mat4 { let _0: T = num::cast(0); let _1: T = num::cast(1); let _2: T = num::cast(2); diff --git a/src/quat.rs b/src/quat.rs index cdf76d0..021926d 100644 --- a/src/quat.rs +++ b/src/quat.rs @@ -7,7 +7,6 @@ * Sir William Hamilton */ -use core::num::{Zero, One}; use core::num::Zero::zero; use core::num::One::one; use std::cmp::{FuzzyEq, FUZZY_EPSILON}; @@ -32,7 +31,7 @@ use vec::{vec3, dvec3, Vec3f, Vec3f32, Vec3f64}; #[deriving(Eq)] pub struct Quat { s: T, v: Vec3 } -pub impl + Add + Sub + Mul + Div + Neg> Quat { +pub impl Quat { /** * Construct the quaternion from one scalar component and three * imaginary components @@ -377,14 +376,14 @@ impl Index for Quat { } } -impl + Add + Sub + Mul + Div + Neg> Neg> for Quat { +impl Neg> for Quat { #[inline(always)] fn neg(&self) -> Quat { Quat::new(-self[0], -self[1], -self[2], -self[3]) } } -impl> FuzzyEq for Quat { +impl FuzzyEq for Quat { #[inline(always)] fn fuzzy_eq(&self, other: &Quat) -> bool { self.fuzzy_eq_eps(other, &num::cast(FUZZY_EPSILON)) diff --git a/src/vec.rs b/src/vec.rs index 0456800..4ca7918 100644 --- a/src/vec.rs +++ b/src/vec.rs @@ -1,4 +1,3 @@ -use core::num::{Zero, One}; use core::num::Zero::zero; use core::num::One::one; use std::cmp::{FuzzyEq, FUZZY_EPSILON}; @@ -562,7 +561,7 @@ impl Index for Vec2 { } } -impl + Sub + Mul + Div + Neg> NumVec for Vec2 { +impl NumVec for Vec2 { #[inline(always)] fn identity() -> Vec2 { BaseVec2::new(one::(), one::()) @@ -652,14 +651,14 @@ impl + Sub + Mul + Div + } } -impl + Sub + Mul + Div + Neg> Neg> for Vec2 { +impl Neg> for Vec2 { #[inline(always)] fn neg(&self) -> Vec2 { BaseVec2::new(-self[0], -self[1]) } } -impl + Sub + Mul + Div + Neg> NumVec2 for Vec2 { +impl NumVec2 for Vec2 { #[inline(always)] fn unit_x() -> Vec2 { BaseVec2::new(one::(), zero::()) @@ -676,14 +675,14 @@ impl + Sub + Mul + Div + } } -impl ToHomogeneous> for Vec2 { +impl ToHomogeneous> for Vec2 { #[inline(always)] fn to_homogeneous(&self) -> Vec3 { BaseVec3::new(self.x, self.y, zero()) } } -impl + Sub + Mul + Div + Neg> AffineVec for Vec2 { +impl AffineVec for Vec2 { #[inline(always)] fn length2(&self) -> T { self.dot(self) @@ -742,7 +741,7 @@ impl + Sub + Mul + Div + N } } -impl> FuzzyEq for Vec2 { +impl> FuzzyEq for Vec2 { #[inline(always)] fn fuzzy_eq(&self, other: &Vec2) -> bool { self.fuzzy_eq_eps(other, &num::cast(FUZZY_EPSILON)) @@ -941,7 +940,7 @@ impl Index for Vec3 { } } -impl + Sub + Mul + Div + Neg> NumVec for Vec3 { +impl NumVec for Vec3 { #[inline(always)] fn identity() -> Vec3 { BaseVec3::new(one::(), one::(), one::()) @@ -1034,14 +1033,14 @@ impl + Sub + Mul + Div + } } -impl + Sub + Mul + Div + Neg> Neg> for Vec3 { +impl Neg> for Vec3 { #[inline(always)] fn neg(&self) -> Vec3 { BaseVec3::new(-self[0], -self[1], -self[2]) } } -impl + Sub + Mul + Div + Neg> NumVec3 for Vec3 { +impl NumVec3 for Vec3 { #[inline(always)] fn unit_x() -> Vec3 { BaseVec3::new(one::(), zero::(), zero::()) @@ -1070,14 +1069,14 @@ impl + Sub + Mul + Div + } } -impl + Sub + Mul + Div + Neg> ToHomogeneous> for Vec3 { +impl ToHomogeneous> for Vec3 { #[inline(always)] fn to_homogeneous(&self) -> Vec4 { BaseVec4::new(self.x, self.y, self.z, zero()) } } -impl + Sub + Mul + Div + Neg> AffineVec for Vec3 { +impl AffineVec for Vec3 { #[inline(always)] fn length2(&self) -> T { self.dot(self) @@ -1136,7 +1135,7 @@ impl + Sub + Mul + Div + N } } -impl> FuzzyEq for Vec3 { +impl> FuzzyEq for Vec3 { #[inline(always)] fn fuzzy_eq(&self, other: &Vec3) -> bool { self.fuzzy_eq_eps(other, &num::cast(FUZZY_EPSILON)) @@ -1339,7 +1338,7 @@ impl Index for Vec4 { } } -impl + Sub + Mul + Div + Neg> NumVec for Vec4 { +impl NumVec for Vec4 { #[inline(always)] fn identity() -> Vec4 { BaseVec4::new(one::(), one::(), one::(), one::()) @@ -1435,14 +1434,14 @@ impl + Sub + Mul + Div + } } -impl + Sub + Mul + Div + Neg> Neg> for Vec4 { +impl Neg> for Vec4 { #[inline(always)] fn neg(&self) -> Vec4 { BaseVec4::new(-self[0], -self[1], -self[2], -self[3]) } } -impl NumVec4 for Vec4 { +impl NumVec4 for Vec4 { #[inline(always)] fn unit_x() -> Vec4 { BaseVec4::new(one::(), zero::(), zero::(), zero::()) @@ -1464,7 +1463,7 @@ impl NumVec4 for Vec4 { } } -impl + Sub + Mul + Div + Neg> AffineVec for Vec4 { +impl AffineVec for Vec4 { #[inline(always)] fn length2(&self) -> T { self.dot(self) @@ -1523,7 +1522,7 @@ impl + Sub + Mul + Div + N } } -impl> FuzzyEq for Vec4 { +impl> FuzzyEq for Vec4 { #[inline(always)] fn fuzzy_eq(&self, other: &Vec4) -> bool { self.fuzzy_eq_eps(other, &num::cast(FUZZY_EPSILON))