diff --git a/Cargo.toml b/Cargo.toml index 238f21d..456c6e0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,12 @@ futures-fs = "0.0.4" http = "0.1.5" log = "0.4.1" mime = "0.3.5" +serde = { version = "1.0", optional = true } +serde_derive = { version = "1.0", optional = true } + +[features] +default = [] +with-serde = ["serde", "serde_derive"] [dev-dependencies] env_logger = "0.5.9" diff --git a/src/lib.rs b/src/lib.rs index 666ea94..1953ec3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,12 @@ extern crate http; extern crate log; extern crate mime; +#[cfg(feature = "with-serde")] +extern crate serde; +#[cfg(feature = "with-serde")] +#[macro_use] +extern crate serde_derive; + use std::path::PathBuf; mod error; diff --git a/src/types.rs b/src/types.rs index ab6a557..c705761 100644 --- a/src/types.rs +++ b/src/types.rs @@ -6,6 +6,7 @@ use futures_cpupool::CpuPool; use super::FilenameGenerator; #[derive(Clone, Debug, PartialEq)] +#[cfg_attr(feature = "with-serde", derive(Deserialize, Serialize))] pub enum NamePart { Map(String), Array, @@ -278,6 +279,7 @@ pub type MultipartHash = (Vec, MultipartContent); pub type MultipartForm = Vec; #[derive(Clone, Debug, PartialEq)] +#[cfg_attr(feature = "with-serde", derive(Deserialize, Serialize))] pub enum MultipartContent { File { filename: String,