Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,10 @@ version = "0.2.1"
default-features = false
features = ["std"]

[dependencies.rustc-serialize]
optional = true
version = "0.3.19"

[dependencies.serde]
optional = true
version = ">= 0.7.0, < 0.9.0"
version = "1.0"

[features]
default = ["rustc-serialize"]
default = []
unstable = []
6 changes: 1 addition & 5 deletions ci/test_full.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@ cargo build --no-default-features
cargo test --no-default-features

# Each isolated feature should also work everywhere.
for feature in rustc-serialize serde; do
for feature in serde; do
cargo build --verbose --no-default-features --features="$feature"
cargo test --verbose --no-default-features --features="$feature"
done

# Downgrade serde and build test the 0.7.0 channel as well
cargo update -p serde --precise 0.7.0
cargo build --verbose --no-default-features --features "serde"
14 changes: 5 additions & 9 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@

extern crate num_traits as traits;

#[cfg(feature = "rustc-serialize")]
extern crate rustc_serialize;

#[cfg(feature = "serde")]
extern crate serde;

Expand Down Expand Up @@ -62,7 +59,6 @@ use traits::{Zero, One, Num, Inv, Float};
/// }
/// ```
#[derive(PartialEq, Eq, Copy, Clone, Hash, Debug, Default)]
#[cfg_attr(feature = "rustc-serialize", derive(RustcEncodable, RustcDecodable))]
#[repr(C)]
pub struct Complex<T> {
/// Real portion of the complex number
Expand Down Expand Up @@ -1077,19 +1073,19 @@ impl<T: Num + Clone> Num for Complex<T> {
impl<T> serde::Serialize for Complex<T>
where T: serde::Serialize
{
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where
S: serde::Serializer
{
(&self.re, &self.im).serialize(serializer)
}
}

#[cfg(feature = "serde")]
impl<T> serde::Deserialize for Complex<T> where
T: serde::Deserialize + Num + Clone
impl<'de, T> serde::Deserialize<'de> for Complex<T> where
T: serde::Deserialize<'de> + Num + Clone
{
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error> where
D: serde::Deserializer,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where
D: serde::Deserializer<'de>,
{
let (re, im) = try!(serde::Deserialize::deserialize(deserializer));
Ok(Complex::new(re, im))
Expand Down