1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use crate::traits::has_availability::HasAvailability;
use crate::traits::identifiable::Identifiable;
use crate::traits::named_identifiable::NamedIdentifiable;

pub trait InfoProvider: Identifiable + NamedIdentifiable + HasAvailability {

    fn namespace_skip(&self) -> usize;

    fn namespace_str_path(&self) -> Vec<&str> {
        self.string_path().iter().rev().skip(self.namespace_skip()).rev().map(AsRef::as_ref).collect()
    }

    fn namespace_path(&self) -> Vec<usize> {
        self.path().iter().rev().skip(self.namespace_skip()).rev().map(|u| *u).collect()
    }
}