Use IntoInterator to simplify write_entries() usage

This commit is contained in:
Greg Fitzgerald 2018-07-02 01:04:19 -06:00 committed by Greg Fitzgerald
parent 6806a14a3f
commit 4e3526394e
3 changed files with 8 additions and 7 deletions

View File

@ -792,10 +792,8 @@ mod tests {
// Write the given entries to a file and then return a file iterator to them.
fn to_file_iter(entries: impl Iterator<Item = Entry>) -> impl Iterator<Item = Entry> {
let entries: Vec<_> = entries.collect();
let mut file = Cursor::new(vec![]);
EntryWriter::write_entries(&mut file, &entries).unwrap();
EntryWriter::write_entries(&mut file, entries).unwrap();
file.seek(SeekFrom::Start(0)).unwrap();
let reader = BufReader::new(file);

View File

@ -26,6 +26,6 @@ fn main() -> Result<(), Box<error::Error>> {
let mint: Mint = serde_json::from_str(&buffer)?;
let mut writer = stdout();
EntryWriter::write_entries(&mut writer, &mint.create_entries())?;
EntryWriter::write_entries(&mut writer, mint.create_entries())?;
Ok(())
}

View File

@ -19,13 +19,16 @@ impl<'a, W: Write> EntryWriter<'a, W> {
}
fn write_entry(writer: &mut W, entry: &Entry) -> io::Result<()> {
let serialized = serde_json::to_string(&entry).unwrap();
let serialized = serde_json::to_string(entry).unwrap();
writeln!(writer, "{}", serialized)
}
pub fn write_entries(writer: &mut W, entries: &[Entry]) -> io::Result<()> {
pub fn write_entries<I>(writer: &mut W, entries: I) -> io::Result<()>
where
I: IntoIterator<Item = Entry>,
{
for entry in entries {
Self::write_entry(writer, entry)?;
Self::write_entry(writer, &entry)?;
}
Ok(())
}