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