From b4cbcfa1a7119ff6911f7f566f3f0ba04a6f1528 Mon Sep 17 00:00:00 2001 From: Paul Woolcock Date: Sun, 5 Aug 2018 20:56:22 -0400 Subject: [PATCH] into_iter -> items_iter --- src/entities/mod.rs | 2 +- src/entities/pageiter.rs | 30 +----------------------------- src/page.rs | 6 ++++++ 3 files changed, 8 insertions(+), 30 deletions(-) diff --git a/src/entities/mod.rs b/src/entities/mod.rs index 80ddc51..a2ec942 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; -mod pageiter; +pub(crate) mod pageiter; pub mod relationship; pub mod report; pub mod search_result; diff --git a/src/entities/pageiter.rs b/src/entities/pageiter.rs index 5a61f7e..d4fa8b8 100644 --- a/src/entities/pageiter.rs +++ b/src/entities/pageiter.rs @@ -1,34 +1,6 @@ use page::Page; -use entities::{ - account::Account, - notification::Notification, - relationship::Relationship, - report::Report, - status::{Emoji, Status} -}; use serde::Deserialize; -macro_rules! into_pageiter { - ($typ:ty) => { - impl<'a> IntoIterator for Page<'a, $typ> { - type Item = $typ; - type IntoIter = PageIter<'a, $typ>; - - fn into_iter(self) -> PageIter<'a, $typ> { - PageIter::new(self) - } - } - } -} - -into_pageiter!(Status); -into_pageiter!(Account); -into_pageiter!(String); -into_pageiter!(Emoji); -into_pageiter!(Notification); -into_pageiter!(Report); -into_pageiter!(Relationship); - /// Abstracts away the `next_page` logic into a single stream of items /// /// ```ignore @@ -48,7 +20,7 @@ pub struct PageIter<'a, T: Clone + for<'de> Deserialize<'de>> { } impl<'a, T: Clone + for<'de> Deserialize<'de>> PageIter<'a, T> { - fn new(page: Page<'a, T>) -> PageIter<'a, T> { + pub(crate) fn new(page: Page<'a, T>) -> PageIter<'a, T> { PageIter { page: page, buffer: vec![], diff --git a/src/page.rs b/src/page.rs index 1a9cf98..94a8ae1 100644 --- a/src/page.rs +++ b/src/page.rs @@ -3,6 +3,7 @@ use reqwest::Response; use reqwest::header::{Link, RelationType}; use serde::Deserialize; use url::Url; +use entities::pageiter::PageIter; pub struct Page<'a, T: for<'de> Deserialize<'de>> { mastodon: &'a Mastodon, @@ -53,6 +54,11 @@ 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) + } +} fn get_links(response: &Response) -> Result<(Option, Option)> { let mut prev = None;