Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/cfg_flag.rs')
| -rw-r--r-- | crates/project-model/src/cfg_flag.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/project-model/src/cfg_flag.rs b/crates/project-model/src/cfg_flag.rs index c134b78ab3..2a4767970c 100644 --- a/crates/project-model/src/cfg_flag.rs +++ b/crates/project-model/src/cfg_flag.rs @@ -4,6 +4,7 @@ use std::{fmt, str::FromStr}; use cfg::CfgOptions; +use serde::Serialize; #[derive(Clone, Eq, PartialEq, Debug)] pub enum CfgFlag { @@ -38,6 +39,18 @@ impl<'de> serde::Deserialize<'de> for CfgFlag { } } +impl Serialize for CfgFlag { + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: serde::Serializer, + { + match self { + CfgFlag::Atom(s) => serializer.serialize_str(s), + CfgFlag::KeyValue { .. } => serializer.serialize_str(&format!("{}", &self)), + } + } +} + impl Extend<CfgFlag> for CfgOptions { fn extend<T: IntoIterator<Item = CfgFlag>>(&mut self, iter: T) { for cfg_flag in iter { |