39 lines
950 B
Rust
39 lines
950 B
Rust
![]() |
use crate::types::Keyword;
|
||
|
use crate::types::Object;
|
||
|
use crate::types::PlainList;
|
||
|
|
||
|
pub struct AffiliatedKeyword<'s> {
|
||
|
name: &'s str,
|
||
|
}
|
||
|
|
||
|
pub enum AffiliatedKeywordValue<'s> {
|
||
|
SingleString(&'s str),
|
||
|
ListOfStrings(Vec<&'s str>),
|
||
|
ListOfObjects(Vec<Object<'s>>),
|
||
|
}
|
||
|
|
||
|
pub trait GetAffiliatedKeywords<'s> {
|
||
|
type ItemIterator: Iterator<Item = &'s Keyword<'s>>;
|
||
|
|
||
|
fn get_affiliated_keywords<'r: 's>(&'r self) -> Self::ItemIterator;
|
||
|
}
|
||
|
|
||
|
pub trait HandleAffiliatedKeywords<'s> {
|
||
|
fn get_stuff(&self) -> &'s str;
|
||
|
}
|
||
|
|
||
|
impl<'s> GetAffiliatedKeywords<'s> for PlainList<'s> {
|
||
|
type ItemIterator = std::slice::Iter<'s, Keyword<'s>>;
|
||
|
|
||
|
fn get_affiliated_keywords<'r: 's>(&'r self) -> Self::ItemIterator {
|
||
|
self.affiliated_keywords.iter()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl<'s, I: GetAffiliatedKeywords<'s>> HandleAffiliatedKeywords<'s> for I {
|
||
|
fn get_stuff(&self) -> &'s str {
|
||
|
self.get_affiliated_keywords().count();
|
||
|
todo!()
|
||
|
}
|
||
|
}
|