I'm trying to write a function that calls serde_json::to_writer
twice to write two things, but I can't figure out how.
Here's one attempt (playground link):
extern crate serde_json;
fn main() {
let mut out = std::fs::File::create("out.txt").unwrap();
write_stuff(&mut out);
}
fn write_stuff<W: ?Sized>(out: &mut W) -> Result<(), std::io::Error>
where
W: std::io::Write,
{
serde_json::to_writer(out, &1).unwrap(); // `out`: value moved here
serde_json::to_writer(out, &2).unwrap(); // `out`: value used here after move
Ok(())
}
Edit: Figured out a way to get things to compile, but is there an easier way (playground link):
extern crate serde_json;
fn main() {
let mut out = std::fs::File::create("out.txt").unwrap();
write_stuff(&mut out);
}
fn write_stuff<W: ?Sized>(out: &mut W)
where
W: std::io::Write,
{
write_wrapper(out);
write_wrapper(out);
}
fn write_wrapper<W: ?Sized>(out: &mut W)
where
W: std::io::Write,
{
serde_json::to_writer(out, &1).unwrap();
}