From 540bd4585f7b7d05641531f74afbc408f5ee3009 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 4 Apr 2018 20:07:57 +0200 Subject: [PATCH] Revert serialization of features to string type --- src/cargo/core/summary.rs | 21 ++++++++++++++++++++- tests/testsuite/metadata.rs | 4 +--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/cargo/core/summary.rs b/src/cargo/core/summary.rs index 1c8d95b36e4..83846c8229e 100644 --- a/src/cargo/core/summary.rs +++ b/src/cargo/core/summary.rs @@ -3,6 +3,9 @@ use std::mem; use std::rc::Rc; use semver::Version; + +use serde::{Serialize, Serializer}; + use core::{Dependency, PackageId, SourceId}; use core::interning::InternedString; @@ -190,7 +193,7 @@ fn build_feature_map( /// * A feature in a depedency /// /// The selection between these 3 things happens as part of the construction of the FeatureValue. -#[derive(Clone, Debug, Serialize)] +#[derive(Clone, Debug)] pub enum FeatureValue { Feature(InternedString), Crate(InternedString), @@ -227,4 +230,20 @@ impl FeatureValue { } } +impl Serialize for FeatureValue { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + use self::FeatureValue::*; + match *self { + Feature(ref f) => serializer.serialize_str(f), + Crate(ref c) => serializer.serialize_str(c), + CrateFeature(ref c, ref f) => { + serializer.serialize_str(&[c.as_ref(), f.as_ref()].join("/")) + } + } + } +} + pub type FeatureMap = BTreeMap>; diff --git a/tests/testsuite/metadata.rs b/tests/testsuite/metadata.rs index 34720c4b222..074d5499d4a 100644 --- a/tests/testsuite/metadata.rs +++ b/tests/testsuite/metadata.rs @@ -192,9 +192,7 @@ optional_feat = [] ], "features": { "default": [ - { - "Feature": "default_feat" - } + "default_feat" ], "default_feat": [], "optional_feat": []