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 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(()) }
MaliciousKebab@sh.itjust.works 9 months ago
Yeah I was trying to do something like reading the first line by getting an iterator and just looping through the other lines normally, since first line was kind of a special case but it got messy quick. I realized halfway that my collects were redundant but couldn’t really simplify it. Thanks