From 650147031210a338d296d7adc968e7a36abe5d6c Mon Sep 17 00:00:00 2001 From: Paul Woolcock Date: Tue, 21 Aug 2018 15:26:34 -0400 Subject: [PATCH] Change `PageIter` to `ItemsIter` --- src/entities/{pageiter.rs => itemsiter.rs} | 10 +++++----- src/entities/mod.rs | 3 +-- src/page.rs | 8 +++++--- 3 files changed, 11 insertions(+), 10 deletions(-) rename src/entities/{pageiter.rs => itemsiter.rs} (86%) diff --git a/src/entities/pageiter.rs b/src/entities/itemsiter.rs similarity index 86% rename from src/entities/pageiter.rs rename to src/entities/itemsiter.rs index 93bcdd9..5217827 100644 --- a/src/entities/pageiter.rs +++ b/src/entities/itemsiter.rs @@ -12,16 +12,16 @@ use serde::Deserialize; /// // do something with `status` /// } /// ``` -pub struct PageIter<'a, T: Clone + for<'de> Deserialize<'de>> { +pub struct ItemsIter<'a, T: Clone + for<'de> Deserialize<'de>> { page: Page<'a, T>, buffer: Vec, cur_idx: usize, use_initial: bool, } -impl<'a, T: Clone + for<'de> Deserialize<'de>> PageIter<'a, T> { - pub(crate) fn new(page: Page<'a, T>) -> PageIter<'a, T> { - PageIter { +impl<'a, T: Clone + for<'de> Deserialize<'de>> ItemsIter<'a, T> { + pub(crate) fn new(page: Page<'a, T>) -> ItemsIter<'a, T> { + ItemsIter { page: page, buffer: vec![], cur_idx: 0, @@ -50,7 +50,7 @@ impl<'a, T: Clone + for<'de> Deserialize<'de>> PageIter<'a, T> { } } -impl<'a, T: Clone+ for<'de> Deserialize<'de>> Iterator for PageIter<'a, T> { +impl<'a, T: Clone+ for<'de> Deserialize<'de>> Iterator for ItemsIter<'a, T> { type Item = T; fn next(&mut self) -> Option { diff --git a/src/entities/mod.rs b/src/entities/mod.rs index a2ec942..9da56b3 100644 --- a/src/entities/mod.rs +++ b/src/entities/mod.rs @@ -6,7 +6,7 @@ pub mod instance; pub mod list; pub mod mention; pub mod notification; -pub(crate) mod pageiter; +pub(crate) mod itemsiter; pub mod relationship; pub mod report; pub mod search_result; @@ -28,7 +28,6 @@ pub mod prelude { pub use super::list::List; pub use super::mention::Mention; pub use super::notification::Notification; - pub use super::pageiter::PageIter; pub use super::relationship::Relationship; pub use super::report::Report; pub use super::search_result::SearchResult; diff --git a/src/page.rs b/src/page.rs index 94a8ae1..6648be9 100644 --- a/src/page.rs +++ b/src/page.rs @@ -3,7 +3,7 @@ use reqwest::Response; use reqwest::header::{Link, RelationType}; use serde::Deserialize; use url::Url; -use entities::pageiter::PageIter; +use entities::itemsiter::ItemsIter; pub struct Page<'a, T: for<'de> Deserialize<'de>> { mastodon: &'a Mastodon, @@ -55,8 +55,10 @@ impl<'a, T: for<'de> Deserialize<'de>> Page<'a, T> { } impl<'a, T: Clone + for<'de> Deserialize<'de>> Page<'a, T> { - pub fn items_iter(self) -> PageIter<'a, T> { - PageIter::new(self) + pub fn items_iter(self) -> impl Iterator + 'a + where T: 'a + { + ItemsIter::new(self) } }