diff --git a/Cargo.toml b/Cargo.toml index 6554189..32df254 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ keywords = ["gamedev", "math", "matrix", "vector", "quaternion"] name = "cgmath" [features] +default = ["rand"] unstable = [] swizzle = [] @@ -24,7 +25,7 @@ swizzle = [] approx = "0.3" mint = { version = "0.5", optional = true } num-traits = "0.2" -rand = "0.6" +rand = { version = "0.6", optional = true } serde = { version = "1.0", features = ["serde_derive"], optional = true } simd = { version = "0.2", optional = true } diff --git a/src/angle.rs b/src/angle.rs index f932914..75e46c9 100644 --- a/src/angle.rs +++ b/src/angle.rs @@ -20,9 +20,11 @@ use std::f64; use std::iter; use std::ops::*; -use rand::Rng; -use rand::distributions::{Distribution, Standard}; -use rand::distributions::uniform::SampleUniform; +#[cfg(feature = "rand")] +use rand::{ + Rng, + distributions::{Distribution, Standard, uniform::SampleUniform}, +}; use num_traits::{cast, Bounded}; use structure::*; @@ -209,6 +211,7 @@ macro_rules! impl_angle { } } + #[cfg(feature = "rand")] impl Distribution<$Angle> for Standard where Standard: Distribution, S: BaseFloat + SampleUniform { diff --git a/src/euler.rs b/src/euler.rs index f281e3d..ea09969 100644 --- a/src/euler.rs +++ b/src/euler.rs @@ -13,8 +13,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -use rand::distributions::{Distribution, Standard}; -use rand::Rng; +#[cfg(feature = "rand")] +use rand::{ + Rng, + distributions::{Distribution, Standard}, +}; use num_traits::cast; use structure::*; @@ -186,6 +189,7 @@ impl approx::UlpsEq for Euler { } } +#[cfg(feature = "rand")] impl Distribution> for Standard where Standard: Distribution, A: Angle { diff --git a/src/lib.rs b/src/lib.rs index b840cb8..bf06094 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -58,6 +58,7 @@ extern crate approx; #[cfg(feature = "mint")] pub extern crate mint; +#[cfg(feature = "rand")] extern crate rand; pub extern crate num_traits; diff --git a/src/matrix.rs b/src/matrix.rs index 3219b1b..8b50535 100644 --- a/src/matrix.rs +++ b/src/matrix.rs @@ -13,8 +13,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -use rand::distributions::{Standard, Distribution}; -use rand::Rng; +#[cfg(feature = "rand")] +use rand::{ + Rng, + distributions::{Standard, Distribution}, +}; use num_traits::{cast, NumCast}; use std::fmt; use std::iter; @@ -1536,8 +1539,9 @@ impl fmt::Debug for Matrix4 { } } +#[cfg(feature = "rand")] impl Distribution> for Standard - where + where Standard: Distribution>, S: BaseFloat { #[inline] @@ -1549,6 +1553,7 @@ impl Distribution> for Standard } } +#[cfg(feature = "rand")] impl Distribution> for Standard where Standard: Distribution>, S: BaseFloat { @@ -1562,6 +1567,7 @@ impl Distribution> for Standard } } +#[cfg(feature = "rand")] impl Distribution> for Standard where Standard: Distribution>, S: BaseFloat { diff --git a/src/quaternion.rs b/src/quaternion.rs index 1d9b4c3..3bd6b42 100644 --- a/src/quaternion.rs +++ b/src/quaternion.rs @@ -17,8 +17,11 @@ use std::iter; use std::mem; use std::ops::*; -use rand::distributions::{Distribution, Standard}; -use rand::Rng; +#[cfg(feature = "rand")] +use rand::{ + Rng, + distributions::{Distribution, Standard}, +}; use num_traits::{cast, NumCast}; use structure::*; @@ -870,7 +873,8 @@ index_operators!(S, [S], RangeTo); index_operators!(S, [S], RangeFrom); index_operators!(S, [S], RangeFull); -impl Distribution> for Standard +#[cfg(feature = "rand")] +impl Distribution> for Standard where Standard: Distribution, Standard: Distribution>, S: BaseFloat { diff --git a/src/vector.rs b/src/vector.rs index ad97329..1f569b1 100644 --- a/src/vector.rs +++ b/src/vector.rs @@ -13,8 +13,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -use rand::distributions::{Distribution, Standard}; -use rand::Rng; +#[cfg(feature = "rand")] +use rand::{ + Rng, + distributions::{Distribution, Standard}, +}; use num_traits::{Bounded, NumCast}; use std::fmt; use std::iter; @@ -245,6 +248,7 @@ macro_rules! impl_vector { } } + #[cfg(feature = "rand")] impl Distribution<$VectorN> for Standard where Standard: Distribution, S: BaseFloat { @@ -502,7 +506,8 @@ macro_rules! impl_vector_default { } } - impl Distribution<$VectorN> for Standard + #[cfg(feature = "rand")] + impl Distribution<$VectorN> for Standard where S: BaseFloat, Standard: Distribution { #[inline]