diff --git a/.travis.yml b/.travis.yml index 532be9d6..8d9c527f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ script: - cargo build --verbose - cargo test --verbose - cargo doc --verbose + - ([ $TRAVIS_RUST_VERSION != nightly ] || cargo test --features heap_size) after_success: | [ $TRAVIS_RUST_VERSION = nightly ] && diff --git a/Cargo.toml b/Cargo.toml index d2725565..da6848ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,10 +22,18 @@ optional = true [dependencies.serde_macros] optional = true +[dependencies.heapsize] +version = "0.1.1" +optional = true + +[dependencies.heapsize_plugin] +version = "0.0.1" +optional = true + [dependencies] encoding = "0.2" matches = "0.1" [features] serde-serialization = [ "serde", "serde_macros" ] - +heap_size = [ "heapsize", "heapsize_plugin" ] diff --git a/src/color.rs b/src/color.rs index 31debed9..c91b5b7b 100644 --- a/src/color.rs +++ b/src/color.rs @@ -11,6 +11,7 @@ use super::{Token, Parser, ToCss}; /// A color with red, green, blue, and alpha components. #[derive(Clone, Copy, PartialEq, Debug)] #[cfg_attr(feature = "serde-serialization", derive(Deserialize, Serialize))] +#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))] pub struct RGBA { /// The red channel. Nominally in 0.0 ... 1.0. pub red: f32, @@ -41,6 +42,7 @@ impl ToCss for RGBA { /// A value. #[derive(Clone, Copy, PartialEq, Debug)] +#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))] pub enum Color { /// The 'currentColor' keyword CurrentColor, diff --git a/src/lib.rs b/src/lib.rs index e63f38bd..cb0459e4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,9 @@ #![cfg_attr(feature = "serde-serialization", feature(custom_derive))] #![cfg_attr(feature = "serde-serialization", feature(plugin))] #![cfg_attr(feature = "serde-serialization", plugin(serde_macros))] +#![cfg_attr(feature = "heap_size", feature(custom_derive))] +#![cfg_attr(feature = "heap_size", feature(plugin))] +#![cfg_attr(feature = "heap_size", plugin(heapsize_plugin))] /*! @@ -71,6 +74,7 @@ extern crate encoding; #[cfg(test)] extern crate tempdir; #[cfg(test)] extern crate rustc_serialize; #[cfg(feature = "serde-serialization")] extern crate serde; +#[cfg(feature = "heap_size")] extern crate heapsize; pub use tokenizer::{Token, NumericValue, PercentageValue, SourceLocation}; pub use rules_and_declarations::{parse_important};