teo_parser/traits/
info_provider.rs

1use crate::traits::has_availability::HasAvailability;
2use crate::traits::identifiable::Identifiable;
3use crate::traits::named_identifiable::NamedIdentifiable;
4
5pub trait InfoProvider: Identifiable + NamedIdentifiable + HasAvailability {
6
7    fn namespace_skip(&self) -> usize;
8
9    fn namespace_str_path(&self) -> Vec<&str> {
10        self.string_path().iter().rev().skip(self.namespace_skip()).rev().map(AsRef::as_ref).collect()
11    }
12
13    fn namespace_string_path(&self) -> Vec<String> {
14        self.string_path().iter().rev().skip(self.namespace_skip()).rev().map(|s| s.to_owned()).collect()
15    }
16
17    fn namespace_path(&self) -> Vec<usize> {
18        self.path().iter().rev().skip(self.namespace_skip()).rev().map(|u| *u).collect()
19    }
20}