Added observation iterator.
[?]
Apr 17, 2021, 2:50 AM
4CQS5CR3KBOZ2GIUQJ5AZQMZ44TLYZHIWEIYN3SHCUJE43E4TIGQCDependencies
Change contents
- edit in src/response.rs at line 5
use std::iter::Iterator; - edit in src/response.rs at line 45
- edit in src/response.rs at line 55
}pub struct SeriesItemsIter<'a> {data: &'a SeriesItems,count: usize,}impl<'a> Iterator for SeriesItemsIter<'a> {type Item = &'a SeriesItem;fn next(&mut self) -> Option<Self::Item> {if self.count == self.data.0.len() {None} else {self.count += 1;Some(&self.data.0[self.count - 1])}}}#[derive(Debug, Deserialize)]pub struct SeriesItems(Vec<SeriesItem>);impl SeriesItems {pub fn iter<'a>(&'a self) -> SeriesItemsIter {SeriesItemsIter {data: &self,count: 0,}}/// Include only series with series equal to title.pub fn equals_one_of(&self, titles: Vec<&str>) -> SeriesItems {let mut v = Vec::new();for series in self.iter() {if titles.iter().any(|title| *title == series.title) {v.push(series.clone());}}SeriesItems(v)}/// Exclude if includes phrase.pub fn exclude_phrases(&self, phrases: Vec<&str>) -> SeriesItems {let mut v = Vec::new();for series in self.iter() {if !phrases.iter().any(|title| series.title.contains(title)) {v.push(series.clone());}}SeriesItems(v)}/// Only include if includes phrase.pub fn only_include(&self, phrases: Vec<&str>) -> SeriesItems {let mut v = Vec::new();for series in &self.0 {if phrases.iter().any(|title| series.title.contains(title)) {v.push(series.clone());}}SeriesItems(v)}pub fn inner(&self) -> Vec<SeriesItem> {(*self.0).to_vec()} - edit in src/response.rs at line 125
impl fmt::Display for SeriesItems {fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {let mut s = String::new();for (i, series) in self.0.iter().enumerate() {s.push_str(&format!("Series {}\n", i));s.push_str(&series.to_string());s.push('\n');};write!(f, "{}", s)}} - replacement in src/response.rs at line 146
pub seriess: Vec<SeriesItem>,pub seriess: SeriesItems, - replacement in src/response.rs at line 152
for (i, series) in self.seriess.iter().enumerate() {for (i, series) in self.seriess.0.iter().enumerate() { - replacement in src/response.rs at line 288
pub seriess: Vec<SeriesItem>,pub seriess: SeriesItems, - replacement in src/response.rs at line 390
pub seriess: Vec<SeriesItem>,pub seriess: SeriesItems, - replacement in src/response.rs at line 400
for item in &self.seriess {for item in &self.seriess.0 { - replacement in src/response.rs at line 407
#[derive(Debug, Deserialize)]#[derive(Clone, Debug, Deserialize)] - edit in src/response.rs at line 454
#[derive(Debug, Deserialize)]pub struct Observations(Vec<Observation>);impl Observations {pub fn iter<'a>(&'a self) -> ObservationsIter {ObservationsIter {data: &self,count: 0,}}}impl fmt::Display for Observations {fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {let mut s = String::new();for obs in self.iter() {s.push_str(&obs.to_string());s.push('\n');}s.pop();write!(f, "{}", s)}}pub struct ObservationsIter<'a> {data: &'a Observations,count: usize,}impl<'a> Iterator for ObservationsIter<'a> {type Item = &'a Observation;fn next(&mut self) -> Option<Self::Item> {if self.count == self.data.0.len() {None} else {self.count += 1;Some(&self.data.0[self.count - 1])}}} - replacement in src/response.rs at line 511
pub observations: Vec<Observation>,pub observations: Observations, - edit in src/response.rs at line 521
}impl fmt::Display for Observation {fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {write!(f, "{}, {}", self.date, self.value)} - replacement in src/response.rs at line 547
pub seriess: Vec<SeriesItem>,pub seriess: SeriesItems, - replacement in src/response.rs at line 613
pub seriess: Vec<SeriesItem>,pub seriess: SeriesItems, - replacement in src/response.rs at line 693
pub seriess: Vec<SeriesItem>,pub seriess: SeriesItems, - replacement in src/response.rs at line 699
for series in &self.seriess {for series in &self.seriess.0 { - replacement in src/response.rs at line 710
for (i, s) in self.seriess.iter().enumerate() {for (i, s) in self.seriess.0.iter().enumerate() { - edit in src/lib.rs at line 174
}/// Return the series request as JSON.pub fn series_json(series_id: &str) -> String {response("series",vec!(format!("series_id={}", series_id)),) - edit in src/lib.rs at line 206
/// Return the series_observations request as JSON.pub fn series_observations_json(series_id: &str) -> String {response("series/observations",vec!(format!("series_id={}", series_id)),)}