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