signal-2024-02-01-19-47-41-855

  • lad@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    5 months ago

    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(())
    }
    

    Edit: line breaks