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.rs13
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 {