use compact_str::CompactString;
use std::hash::Hash;
#[derive(Debug, PartialEq, Eq, Clone)]
pub struct HierName(pub Vec<CompactString>);
type HierNameRevIter<'i> = std::iter::Rev<std::slice::Iter<'i, CompactString>>;
impl<'i> IntoIterator for &'i HierName {
type Item = &'i CompactString;
type IntoIter = HierNameRevIter<'i>;
#[inline]
fn into_iter(self) -> HierNameRevIter<'i> {
self.0.iter().rev()
}
}
impl HierName {
#[inline]
pub fn iter(&self) -> HierNameRevIter {
(&self).into_iter()
}
}
impl Hash for HierName {
#[inline]
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
for s in self.iter() {
s.hash(state);
}
}
}