diff --git a/Cargo.toml b/Cargo.toml index 22058b89..ebf35496 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,3 +14,6 @@ license = "BSD-3-Clause" [lib] name = "nalgebra" path = "src/lib.rs" + +[dependencies] +rustc-serialize = "*" diff --git a/src/lib.rs b/src/lib.rs index 2e3bda31..506ddbb9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -86,7 +86,7 @@ Feel free to add your project to this list if you happen to use **nalgebra**! #![feature(globs)] #![doc(html_root_url = "http://nalgebra.org/doc")] -extern crate serialize; +extern crate "rustc-serialize" as rustc_serialize; #[cfg(test)] extern crate test; diff --git a/src/structs/iso.rs b/src/structs/iso.rs index 93dd94bd..3e54a2b2 100644 --- a/src/structs/iso.rs +++ b/src/structs/iso.rs @@ -18,7 +18,7 @@ use structs::rot::{Rot2, Rot3, Rot4}; /// /// This is the composition of a rotation followed by a translation. /// Isometries conserve angles and distances, hence do not allow shearing nor scaling. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Copy)] pub struct Iso2 { /// The rotation applicable by this isometry. pub rotation: Rot2, @@ -30,7 +30,7 @@ pub struct Iso2 { /// /// This is the composition of a rotation followed by a translation. /// Isometries conserve angles and distances, hence do not allow shearing nor scaling. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Copy)] pub struct Iso3 { /// The rotation applicable by this isometry. pub rotation: Rot3, @@ -41,7 +41,7 @@ pub struct Iso3 { /// Four dimensional isometry. /// /// Isometries conserve angles and distances, hence do not allow shearing nor scaling. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Copy)] pub struct Iso4 { /// The rotation applicable by this isometry. pub rotation: Rot4, diff --git a/src/structs/mat.rs b/src/structs/mat.rs index 7db026e8..88de6af4 100644 --- a/src/structs/mat.rs +++ b/src/structs/mat.rs @@ -17,7 +17,7 @@ use linalg; /// Special identity matrix. All its operation are no-ops. -#[deriving(Eq, PartialEq, Decodable, Clone, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcDecodable, Clone, Rand, Show, Copy)] pub struct Identity; impl Identity { @@ -29,7 +29,7 @@ impl Identity { } /// Square matrix of dimension 1. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Mat1 { pub m11: N } @@ -73,7 +73,7 @@ outer_impl!(Vec1, Mat1); eigen_qr_impl!(Mat1, Vec1); /// Square matrix of dimension 2. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Mat2 { pub m11: N, pub m21: N, pub m12: N, pub m22: N @@ -121,7 +121,7 @@ outer_impl!(Vec2, Mat2); eigen_qr_impl!(Mat2, Vec2); /// Square matrix of dimension 3. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Mat3 { pub m11: N, pub m21: N, pub m31: N, pub m12: N, pub m22: N, pub m32: N, @@ -203,7 +203,7 @@ outer_impl!(Vec3, Mat3); eigen_qr_impl!(Mat3, Vec3); /// Square matrix of dimension 4. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Mat4 { pub m11: N, pub m21: N, pub m31: N, pub m41: N, pub m12: N, pub m22: N, pub m32: N, pub m42: N, @@ -303,7 +303,7 @@ outer_impl!(Vec4, Mat4); eigen_qr_impl!(Mat4, Vec4); /// Square matrix of dimension 5. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Mat5 { pub m11: N, pub m21: N, pub m31: N, pub m41: N, pub m51: N, pub m12: N, pub m22: N, pub m32: N, pub m42: N, pub m52: N, @@ -417,7 +417,7 @@ outer_impl!(Vec5, Mat5); eigen_qr_impl!(Mat5, Vec5); /// Square matrix of dimension 6. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Mat6 { pub m11: N, pub m21: N, pub m31: N, pub m41: N, pub m51: N, pub m61: N, pub m12: N, pub m22: N, pub m32: N, pub m42: N, pub m52: N, pub m62: N, diff --git a/src/structs/ortho.rs b/src/structs/ortho.rs index a6789fee..a4381b21 100644 --- a/src/structs/ortho.rs +++ b/src/structs/ortho.rs @@ -5,7 +5,7 @@ use structs::{Pnt3, Vec3, Mat4}; /// A 3D orthographic projection stored without any matrix. /// /// Reading or modifying its individual properties is cheap but applying the transformation is costly. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Copy)] pub struct Ortho3 { width: N, height: N, @@ -16,7 +16,7 @@ pub struct Ortho3 { /// A 3D orthographic projection stored as a 4D matrix. /// /// Reading or modifying its individual properties is costly but applying the transformation is cheap. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Copy)] pub struct OrthoMat3 { mat: Mat4 } diff --git a/src/structs/persp.rs b/src/structs/persp.rs index 0a06645e..d302b9c9 100644 --- a/src/structs/persp.rs +++ b/src/structs/persp.rs @@ -4,7 +4,7 @@ use structs::{Pnt3, Vec3, Mat4}; /// A 3D perspective projection stored without any matrix. /// /// Reading or modifying its individual properties is cheap but applying the transformation is costly. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Copy)] pub struct Persp3 { aspect: N, fov: N, @@ -15,7 +15,7 @@ pub struct Persp3 { /// A 3D perspective projection stored as a 4D matrix. /// /// Reading or modifying its individual properties is costly but applying the transformation is cheap. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Copy)] pub struct PerspMat3 { mat: Mat4 } diff --git a/src/structs/pnt.rs b/src/structs/pnt.rs index 06dcb11d..6a6128cc 100644 --- a/src/structs/pnt.rs +++ b/src/structs/pnt.rs @@ -14,7 +14,7 @@ use structs::vec::{Vec1, Vec2, Vec3, Vec4, Vec5, Vec6}; /// Point of dimension 0. -#[deriving(Eq, PartialEq, Decodable, Clone, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcDecodable, Clone, Rand, Show, Copy)] pub struct Pnt0; impl Pnt0 { @@ -32,7 +32,7 @@ impl Pnt0 { } /// Point of dimension 1. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Pnt1 { /// First component of the point. pub x: N @@ -70,7 +70,7 @@ pnt_from_homogeneous_impl!(Pnt1, Pnt2, y, x); num_float_pnt_impl!(Pnt1, Vec1); /// Point of dimension 2. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Pnt2 { /// First component of the point. pub x: N, @@ -110,7 +110,7 @@ pnt_from_homogeneous_impl!(Pnt2, Pnt3, z, x, y); num_float_pnt_impl!(Pnt2, Vec2); /// Point of dimension 3. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Pnt3 { /// First component of the point. pub x: N, @@ -152,7 +152,7 @@ pnt_from_homogeneous_impl!(Pnt3, Pnt4, w, x, y, z); num_float_pnt_impl!(Pnt3, Vec3); /// Point of dimension 4. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Pnt4 { /// First component of the point. pub x: N, @@ -196,7 +196,7 @@ pnt_from_homogeneous_impl!(Pnt4, Pnt5, a, x, y, z, w); num_float_pnt_impl!(Pnt4, Vec4); /// Point of dimension 5. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Pnt5 { /// First component of the point. pub x: N, @@ -242,7 +242,7 @@ pnt_from_homogeneous_impl!(Pnt5, Pnt6, b, x, y, z, w, a); num_float_pnt_impl!(Pnt5, Vec5); /// Point of dimension 6. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Pnt6 { /// First component of the point. pub x: N, diff --git a/src/structs/quat.rs b/src/structs/quat.rs index 464884f0..4d4ef875 100644 --- a/src/structs/quat.rs +++ b/src/structs/quat.rs @@ -14,7 +14,7 @@ use traits::structure::{Cast, Indexable, Iterable, IterableMut, Dim, Shape, Base use traits::geometry::{Norm, Rotation, Rotate, Transform}; /// A quaternion. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Quat { /// The scalar component of the quaternion. pub w: N, @@ -140,7 +140,7 @@ impl + BaseFloat> Div, Quat> for Quat { } /// A unit quaternion that can represent a 3D rotation. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Show, Copy)] pub struct UnitQuat { q: Quat } diff --git a/src/structs/rot.rs b/src/structs/rot.rs index 09ecea2a..a8d76630 100644 --- a/src/structs/rot.rs +++ b/src/structs/rot.rs @@ -13,7 +13,7 @@ use structs::mat::{Mat2, Mat3, Mat4, Mat5}; /// Two dimensional rotation matrix. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Hash, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Hash, Copy)] pub struct Rot2 { submat: Mat2 } @@ -90,7 +90,7 @@ impl AbsoluteRotate> for Rot2 { * 3d rotation */ /// Three dimensional rotation matrix. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Hash, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Hash, Copy)] pub struct Rot3 { submat: Mat3 } @@ -288,7 +288,7 @@ impl AbsoluteRotate> for Rot3 { } /// Four dimensional rotation matrix. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Hash, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Hash, Copy)] pub struct Rot4 { submat: Mat4 } diff --git a/src/structs/vec.rs b/src/structs/vec.rs index 16e242df..c2c27bd1 100644 --- a/src/structs/vec.rs +++ b/src/structs/vec.rs @@ -15,7 +15,7 @@ use structs::pnt::{Pnt1, Pnt2, Pnt3, Pnt4, Pnt5, Pnt6}; /// Vector of dimension 0. -#[deriving(Eq, PartialEq, Decodable, Clone, Rand, Zero, Show, Copy)] +#[deriving(Eq, PartialEq, RustcDecodable, Clone, Rand, Zero, Show, Copy)] pub struct Vec0; impl Vec0 { @@ -33,7 +33,7 @@ impl Vec0 { } /// Vector of dimension 1. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Show, Copy)] pub struct Vec1 { /// First component of the vector. pub x: N @@ -82,7 +82,7 @@ num_float_vec_impl!(Vec1); absolute_vec_impl!(Vec1, x); /// Vector of dimension 2. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Zero, Show, Copy)] pub struct Vec2 { /// First component of the vector. pub x: N, @@ -133,7 +133,7 @@ num_float_vec_impl!(Vec2); absolute_vec_impl!(Vec2, x, y); /// Vector of dimension 3. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Zero, Show, Copy)] pub struct Vec3 { /// First component of the vector. pub x: N, @@ -187,7 +187,7 @@ absolute_vec_impl!(Vec3, x, y, z); /// Vector of dimension 4. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Zero, Show, Copy)] pub struct Vec4 { /// First component of the vector. pub x: N, @@ -242,7 +242,7 @@ num_float_vec_impl!(Vec4); absolute_vec_impl!(Vec4, x, y, z, w); /// Vector of dimension 5. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Zero, Show, Copy)] pub struct Vec5 { /// First component of the vector. pub x: N, @@ -299,7 +299,7 @@ num_float_vec_impl!(Vec5); absolute_vec_impl!(Vec5, x, y, z, w, a); /// Vector of dimension 6. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Hash, Rand, Zero, Show, Copy)] pub struct Vec6 { /// First component of the vector. pub x: N, diff --git a/src/traits/operations.rs b/src/traits/operations.rs index a32bc25b..a1eac60c 100644 --- a/src/traits/operations.rs +++ b/src/traits/operations.rs @@ -4,7 +4,7 @@ use std::num::{Float, SignedInt}; use traits::structure::SquareMat; /// Result of a partial ordering. -#[deriving(Eq, PartialEq, Encodable, Decodable, Clone, Show, Copy)] +#[deriving(Eq, PartialEq, RustcEncodable, RustcDecodable, Clone, Show, Copy)] pub enum POrdering { /// Result of a strict comparison. PartialLess,