use std::collections::HashMap;
use smol_str::SmolStr;
#[derive(Default)]
pub struct FieldMask {
children: HashMap<SmolStr, FieldMask>,
}
impl FieldMask {
pub fn new<'a, I: IntoIterator<Item = &'a str>>(iter: I) -> FieldMask {
let mut mask = FieldMask::default();
for path in iter {
let path = path.split('.');
let mut new_mask = &mut mask;
for p in path {
new_mask = new_mask.children.entry(SmolStr::new(p)).or_default();
}
}
mask
}
pub fn child(&self, path: &SmolStr) -> Option<&FieldMask> {
self.children.get(path)
}
}