Also, anyhow::Context provides a convenient way to turn Option<T> and Result<T, Into<anyhow::Error>> into anyhow::Result<T>
Like this:
use anyhow::Context;
// to my understanding it's better to // specify the types when their names // are the same as in prelude to improve// readability and reduce name clashingfnmain() -> anyhow::Result<()> {
lettext = "seeds: 79 14 55 13\nwhatever";
letseeds: Vec<u32> = text
.lines()
.next()
.context("No first line!")? // This line has changed
.split_whitespace()
.skip(1)
.map(str::parse)
.collect::<Result<_, _>>()?;
println!("seeds: {:?}", seeds);
Ok(())
}
Also,
anyhow::Context
provides a convenient way to turnOption<T>
andResult<T, Into<anyhow::Error>>
intoanyhow::Result<T>
Like this:
use anyhow::Context; // to my understanding it's better to // specify the types when their names // are the same as in prelude to improve // readability and reduce name clashing fn main() -> anyhow::Result<()> { let text = "seeds: 79 14 55 13\nwhatever"; let seeds: Vec<u32> = text .lines() .next() .context("No first line!")? // This line has changed .split_whitespace() .skip(1) .map(str::parse) .collect::<Result<_, _>>()?; println!("seeds: {:?}", seeds); Ok(()) }
Edit: line breaks