// Note that none of these fields are *actually* 'static. // Rather, they are tied to the lifetime of the `ZeroCopy` that contains this `Name`. use std::collections::hash_set::Iter; use std::collections::HashSet; pub struct Capabilities(pub(crate) HashSet<&'static str>); use std::borrow::Borrow; use std::hash::Hash; impl Capabilities { pub fn has(&self, s: &S) -> bool where for<'a> &'a str: Borrow, S: Hash + Eq, { self.0.contains(s) } pub fn iter(&self) -> Iter<&str> { self.0.iter() } pub fn len(&self) -> usize { self.0.len() } pub fn is_empty(&self) -> bool { self.0.is_empty() } }