fn main() {
let value = check_negative(-32);
println!("{:?}", value);
let value = check_negative(10);
println!("{:?}", value);
}
fn check_negative(num: i32) -> Result<i32, Box<dyn std::error::Error>> {
if num < 0 {
return Err("負の値です".into());
}
Ok(num)
}
Compiling app v0.1.0 (/home/vagrant/dev/rust/app)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.40s
Running `target/debug/app`
Err(“負の値です”)
Ok(10)
Box
Box: ヒープ上にデータを格納するためのスマートポインタ
dyn: dynamicの略。実行時にトレイトの具体的な型を決めたいときに使う
error::Error: Rustの標準ライブラリのerrorモジュールにあるErrorトレイト
エラートレイトの何らかの値を返す
Resultを理解すると、エラー処理の書き方が変わってきますね。