diff --git a/Cargo.toml b/Cargo.toml index c36b303..b3684ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,20 @@ readme = "Readme.md" license = "MIT" [dependencies] -rand = "0.3" -ordered-float = "0.5.0" -log = "0.3" +log = "0.4" fnv = "1.0" +serde = { version = "1.0", optional = true } +serde_derive = { version = "1.0", optional = true } + +[target.'cfg(not(features="serde_derive"))'.dependencies.ordered-float] +version = "1.0" + +[target.'cfg(features="serde_derive")'.dependencies.ordered-float] +version = "1.0" +features = ["serde"] + +[dev-dependencies] +serde_test = "1.0" + +[features] +serde_support = ["serde", "serde_derive"] \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 658cc99..560834a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,10 +9,16 @@ #[macro_use] extern crate log; -extern crate rand; extern crate ordered_float; extern crate fnv; +#[cfg(feature = "serde_support")] +extern crate serde; + +#[cfg(feature = "serde_support")] +#[macro_use] +extern crate serde_derive; + mod geometry; mod point; mod dcel; diff --git a/src/point.rs b/src/point.rs index 78ba934..ac59f90 100644 --- a/src/point.rs +++ b/src/point.rs @@ -1,4 +1,3 @@ -use rand::{Rand, Rng, random}; use std::ops::{Sub, Mul, Add}; use std::fmt; use ordered_float::OrderedFloat; @@ -6,6 +5,7 @@ use std::cmp::Ordering; /// A point in two dimensions #[derive(Clone, Copy, PartialEq, Eq)] +#[cfg_attr(feature = "serde_support", derive(Serialize, Deserialize))] pub struct Point { /// x coordinate pub x: OrderedFloat, @@ -36,13 +36,6 @@ impl fmt::Debug for Point { } } -#[allow(unused_variables)] -impl Rand for Point { - fn rand(rng: &mut R) -> Point { - Point::new(random::(), random::()) - } -} - impl Mul for Point { type Output = Point;