diff --git a/Cargo.toml b/Cargo.toml index e0c0860..016947d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,13 +25,13 @@ unstable = [] default = [] [dev-dependencies] +serde = "1.0" serde_json = "1.0" rand = "0.3" rustc-serialize = "0.3" [dependencies] libc = "0.2" -serde = "1.0" [dependencies.rand] version = "0.3" @@ -41,3 +41,8 @@ optional = true version = "0.3" optional = true +[dependencies.serde] +version = "1.0" +optional = true + + diff --git a/src/key.rs b/src/key.rs index b249d2b..f572d41 100644 --- a/src/key.rs +++ b/src/key.rs @@ -15,10 +15,10 @@ //! # Public and secret keys -use std::marker; +#[cfg(any(test, feature = "serde"))] use std::marker; #[cfg(any(test, feature = "rand"))] use rand::Rng; #[cfg(any(test, feature = "rustc-serialize"))] use serialize::{Decoder, Decodable, Encoder, Encodable}; -use serde::{Serialize, Deserialize, Serializer, Deserializer}; +#[cfg(any(test, feature = "serde"))] use serde::{Serialize, Deserialize, Serializer, Deserializer}; use super::{Secp256k1, ContextFlag}; use super::Error::{self, IncapableContext, InvalidPublicKey, InvalidSecretKey}; @@ -300,6 +300,7 @@ impl Encodable for PublicKey { } } +#[cfg(any(test, feature = "serde"))] impl<'de> Deserialize<'de> for PublicKey { fn deserialize(d: D) -> Result where D: Deserializer<'de> @@ -360,6 +361,7 @@ impl<'de> Deserialize<'de> for PublicKey { } } +#[cfg(any(test, feature = "serde"))] impl Serialize for PublicKey { fn serialize(&self, s: S) -> Result where S: Serializer diff --git a/src/lib.rs b/src/lib.rs index 8cefe20..1bdd9f2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -38,12 +38,11 @@ #![cfg_attr(all(test, feature = "unstable"), feature(test))] #[cfg(all(test, feature = "unstable"))] extern crate test; +#[cfg(any(test, feature = "serde"))] extern crate serde; #[cfg(test)] extern crate serde_json as json; #[cfg(any(test, feature = "rand"))] extern crate rand; #[cfg(any(test, feature = "rustc-serialize"))] extern crate rustc_serialize as serialize; -extern crate serde; - extern crate libc; use libc::size_t; @@ -201,6 +200,7 @@ impl Signature { } } +#[cfg(any(test, feature = "serde"))] impl serde::Serialize for Signature { fn serialize(&self, s: S) -> Result where S: serde::Serializer @@ -210,6 +210,7 @@ impl serde::Serialize for Signature { } } +#[cfg(any(test, feature = "serde"))] impl<'de> serde::Deserialize<'de> for Signature { fn deserialize(d: D) -> Result where D: serde::Deserializer<'de> diff --git a/src/macros.rs b/src/macros.rs index 8a7df11..92eccbf 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -146,6 +146,7 @@ macro_rules! impl_array_newtype { } } + #[cfg(any(test, feature = "serde"))] impl<'de> ::serde::Deserialize<'de> for $thing { fn deserialize(d: D) -> Result<$thing, D::Error> where D: ::serde::Deserializer<'de> @@ -190,6 +191,7 @@ macro_rules! impl_array_newtype { } } + #[cfg(any(test, feature = "serde"))] impl ::serde::Serialize for $thing { fn serialize(&self, s: S) -> Result where S: ::serde::Serializer