]> git.lizzy.rs Git - rust.git/blobdiff - crates/cfg/src/lib.rs
Improve completion of cfg attributes
[rust.git] / crates / cfg / src / lib.rs
index 916d39a0b4a2bf3b41c78139de8215df821142bf..9a4baa636949009beaa02bc41cf7ee3302d534fa 100644 (file)
@@ -50,6 +50,26 @@ pub fn apply_diff(&mut self, diff: CfgDiff) {
             self.enabled.remove(&atom);
         }
     }
+
+    pub fn get_cfg_keys(&self) -> Vec<&SmolStr> {
+        self.enabled
+            .iter()
+            .map(|x| match x {
+                CfgAtom::Flag(key) => key,
+                CfgAtom::KeyValue { key, .. } => key,
+            })
+            .collect()
+    }
+
+    pub fn get_cfg_values(&self, cfg_key: &str) -> Vec<&SmolStr> {
+        self.enabled
+            .iter()
+            .filter_map(|x| match x {
+                CfgAtom::KeyValue { key, value } if cfg_key == key => Some(value),
+                _ => None,
+            })
+            .collect()
+    }
 }
 
 #[derive(Clone, Debug, PartialEq, Eq)]