Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Demo

Example with anyhow

[package]
name = "with-anyhow"
version = "0.1.0"
edition = "2024"

[dependencies]
anyhow = "1.0.97"
use anyhow::bail;

fn main() -> anyhow::Result<()> {
    let args = std::env::args().collect::<Vec<_>>();
    if args.len() != 2 {
        bail!("Usage: {} <number>", args[0]);
    }
    let number: i32 = args[1].parse().map_err(|_| anyhow::anyhow!("Invalid number"))?;
    do_something(number)?;

    Ok(())
}


fn do_something(answer: i32) -> anyhow::Result<()> {
    println!("Doing something!");
    if answer != 42 {
        bail!("Invalid number: {}", answer);
    }

    println!("The answer is 42!");
    Ok(())
}
[package]
name = "with-anyhow"
version = "0.1.0"
edition = "2024"

[dependencies]
anyhow = "1.0.97"
use anyhow::bail;

fn main() {
    match do_something(42) {
        Ok(_) => println!("Success!"),
        Err(err) => println!("Error: {}", err),
    }

    match do_something(23) {
        Ok(_) => println!("Success!"),
        Err(err) => println!("Error: {}", err),
    }

}


fn do_something(answer: i32) -> anyhow::Result<()> {
    println!("Doing something!");
    if answer != 42 {
        bail!("An error occurred");
    }

    println!("The answer is 42!");
    Ok(())
}