keyring_core/
attributes.rs1use std::collections::HashMap;
7
8use crate::{Error::Invalid, Result};
9
10pub fn parse_attributes(
14 keys: &[&str],
15 attrs: Option<&HashMap<&str, &str>>,
16) -> Result<HashMap<String, String>> {
17 let mut result: HashMap<String, String> = HashMap::new();
18 if attrs.is_none() {
19 return Ok(result);
20 }
21 for (key, value) in attrs.unwrap() {
22 if keys.contains(key) {
23 result.insert(key.to_string(), value.to_string());
24 } else {
25 return Err(Invalid(key.to_string(), "unknown key".to_string()));
26 }
27 }
28 Ok(result)
29}
30
31pub fn externalize_attributes(attrs: &HashMap<&str, &str>) -> HashMap<String, String> {
33 attrs
34 .iter()
35 .map(|(k, v)| (k.to_string(), v.to_string()))
36 .collect()
37}