use *;
pub struct DisciplinesIter<'a> {
client: &'a Toornament,
all: bool,
}
impl<'a> DisciplinesIter<'a> {
pub fn new(client: &'a Toornament) -> DisciplinesIter<'a> {
DisciplinesIter { client, all: true }
}
pub fn all(mut self) -> Self {
self.all = true;
self
}
}
impl<'a> DisciplinesIter<'a> {
pub fn with_id(self, discipline_id: DisciplineId) -> DisciplineIter<'a> {
DisciplineIter {
client: self.client,
discipline_id,
}
}
}
impl<'a> DisciplinesIter<'a> {
pub fn collect<T: From<Disciplines>>(self) -> Result<T> {
Ok(T::from(self.client.disciplines(None)?))
}
}
pub struct DisciplineIter<'a> {
client: &'a Toornament,
discipline_id: DisciplineId,
}
impl<'a> DisciplineIter<'a> {
pub fn new(client: &'a Toornament, discipline_id: DisciplineId) -> DisciplineIter<'a> {
DisciplineIter {
client,
discipline_id,
}
}
}
impl<'a> DisciplineIter<'a> {
pub fn matches(self) -> DisciplineMatchesIter<'a> {
DisciplineMatchesIter::new(self.client, self.discipline_id)
}
}
impl<'a> DisciplineIter<'a> {
pub fn collect<T: From<Discipline>>(self) -> Result<T> {
match self
.client
.disciplines(Some(self.discipline_id.clone()))?
.0
.first()
.take()
{
Some(d) => Ok(T::from(d.to_owned())),
None => Err(Error::Iter(IterError::NoSuchDiscipline(self.discipline_id))),
}
}
}