Skip to content

Commit a63cb60

Browse files
committed
Remove use of serde_macros
1 parent 28ad0f9 commit a63cb60

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ encoding = "0.2"
2121
heapsize = {version = ">=0.1.1, <0.4.0", optional = true}
2222
matches = "0.1"
2323
serde = {version = ">=0.6.6, <0.8", optional = true}
24-
serde_macros = {version = ">=0.6.5, <0.8", optional = true}
2524

2625
[features]
27-
serde-serialization = [ "serde", "serde_macros" ]
26+
serde-serialization = [ "serde" ]
2827
heap_size = [ "heapsize" ]

src/color.rs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ use std::fmt;
66

77
use super::{Token, Parser, ToCss};
88

9+
#[cfg(feature = "serde")]
10+
use serde::{Deserialize, Deserializer, Serialize, Serializer};
911

1012
/// A color with red, green, blue, and alpha components.
1113
#[derive(Clone, Copy, PartialEq, Debug)]
12-
#[cfg_attr(feature = "serde-serialization", derive(Deserialize, Serialize))]
1314
pub struct RGBA {
1415
/// The red channel. Nominally in 0.0 ... 1.0.
1516
pub red: f32,
@@ -21,6 +22,31 @@ pub struct RGBA {
2122
pub alpha: f32,
2223
}
2324

25+
#[cfg(feature = "serde")]
26+
impl Serialize for RGBA {
27+
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
28+
where S: Serializer
29+
{
30+
(self.red, self.green, self.blue, self.alpha).serialize(serializer)
31+
}
32+
}
33+
34+
#[cfg(feature = "serde")]
35+
impl Deserialize for RGBA {
36+
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
37+
where D: Deserializer
38+
{
39+
let (red, green, blue, alpha) =
40+
try!(Deserialize::deserialize(deserializer));
41+
Ok(RGBA {
42+
red: red,
43+
green: green,
44+
blue: blue,
45+
alpha: alpha,
46+
})
47+
}
48+
}
49+
2450
#[cfg(feature = "heapsize")]
2551
known_heap_size!(0, RGBA);
2652

src/lib.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
#![crate_type = "rlib"]
77

88
#![deny(missing_docs)]
9-
#![cfg_attr(feature = "serde-serialization", feature(custom_derive))]
10-
#![cfg_attr(feature = "serde-serialization", feature(plugin))]
11-
#![cfg_attr(feature = "serde-serialization", plugin(serde_macros))]
129

1310
/*!
1411
@@ -72,7 +69,7 @@ extern crate encoding;
7269
#[macro_use] extern crate matches;
7370
#[cfg(test)] extern crate tempdir;
7471
#[cfg(test)] extern crate rustc_serialize;
75-
#[cfg(feature = "serde-serialization")] extern crate serde;
72+
#[cfg(feature = "serde")] extern crate serde;
7673
#[cfg(feature = "heapsize")] #[macro_use] extern crate heapsize;
7774

7875
pub use tokenizer::{Token, NumericValue, PercentageValue, SourceLocation};

0 commit comments

Comments
 (0)