diff --git a/hammond-data/benches/bench.rs b/hammond-data/benches/bench.rs index b11f8e5..4a71a8e 100644 --- a/hammond-data/benches/bench.rs +++ b/hammond-data/benches/bench.rs @@ -33,7 +33,7 @@ static URLS: &[(&[u8], &str)] = &[ ]; fn index_urls() { - URLS.par_iter() + let feeds: Vec<_> = URLS.par_iter() .map(|&(buff, url)| { // Create and insert a Source into db let s = Source::from_url(url).unwrap(); @@ -41,9 +41,9 @@ fn index_urls() { let chan = rss::Channel::read_from(BufReader::new(buff)).unwrap(); Feed::from_channel_source(chan, s) }) - .for_each(|feed| { - index(&mut [feed]); - }); + .collect(); + + index(feeds); } #[bench] diff --git a/hammond-data/src/feed.rs b/hammond-data/src/feed.rs index b26a5ea..48ae6a8 100644 --- a/hammond-data/src/feed.rs +++ b/hammond-data/src/feed.rs @@ -1,5 +1,6 @@ use rayon::prelude::*; use diesel::prelude::*; +use rayon::iter::IntoParallelIterator; use diesel::Identifiable; use rss; @@ -100,13 +101,13 @@ impl Feed { } pub fn index_all() -> Result<()> { - let mut feeds = fetch_all()?; + let feeds = fetch_all()?; - index(&mut feeds); + index(feeds); Ok(()) } -pub fn index(feeds: &mut [Feed]) { +pub fn index>(feeds: F) { feeds.into_par_iter().for_each(|f| { let e = f.index(); if e.is_err() { @@ -122,7 +123,7 @@ pub fn fetch_all() -> Result> { Ok(fetch(feeds)) } -pub fn fetch(feeds: Vec) -> Vec { +pub fn fetch>(feeds: F) -> Vec { let results: Vec<_> = feeds .into_par_iter() .filter_map(|x| { @@ -140,13 +141,9 @@ pub fn fetch(feeds: Vec) -> Vec { #[cfg(test)] mod tests { - - use rss; - use models::Source; - use database::truncate_db; - use std::fs; use std::io::BufReader; + use database::truncate_db; use super::*; @@ -196,7 +193,7 @@ mod tests { truncate_db().unwrap(); - let mut feeds: Vec<_> = urls.iter() + let feeds: Vec<_> = urls.iter() .map(|&(path, url)| { // Create and insert a Source into db let s = Source::from_url(url).unwrap(); @@ -210,7 +207,7 @@ mod tests { .collect(); // Index the channels - index(&mut feeds); + index(feeds); // Assert the index rows equal the controlled results assert_eq!(dbqueries::get_sources().unwrap().len(), 4); diff --git a/hammond-gtk/src/utils.rs b/hammond-gtk/src/utils.rs index 8fc5268..69bd584 100644 --- a/hammond-gtk/src/utils.rs +++ b/hammond-gtk/src/utils.rs @@ -35,15 +35,15 @@ pub fn refresh_feed(stack: >k::Stack, source: Option>, delay: Opti } let feeds = { - if let Some(mut vec) = source { + if let Some(vec) = source { Ok(feed::fetch(vec)) } else { feed::fetch_all() } }; - if let Ok(mut x) = feeds { - feed::index(&mut x); + if let Ok(x) = feeds { + feed::index(x); sender.send(true).expect("Couldn't send data to channel");; glib::idle_add(refresh_podcasts_view);