]> git.lizzy.rs Git - rust.git/blobdiff - crates/cfg/src/lib.rs
Replace some String usages with SmolStr in completions
[rust.git] / crates / cfg / src / lib.rs
index 417ba6091972edb77f479a3c0d0c3a583de521c1..f867a903b01049020001fb0dcc9a47dd6000c8c0 100644 (file)
@@ -66,24 +66,21 @@ pub fn apply_diff(&mut self, diff: CfgDiff) {
         }
     }
 
-    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_keys(&self) -> impl Iterator<Item = &SmolStr> {
+        self.enabled.iter().map(|x| match x {
+            CfgAtom::Flag(key) => key,
+            CfgAtom::KeyValue { key, .. } => key,
+        })
     }
 
-    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()
+    pub fn get_cfg_values<'a>(
+        &'a self,
+        cfg_key: &'a str,
+    ) -> impl Iterator<Item = &'a SmolStr> + 'a {
+        self.enabled.iter().filter_map(move |x| match x {
+            CfgAtom::KeyValue { key, value } if cfg_key == key => Some(value),
+            _ => None,
+        })
     }
 }