### Result型
Result
fn main(){
let n = 8;
let m = 2;
match i32div(n, m){
Ok(result) => println!("{}/{}={}", n, m, result),
Err(msg) => println!("エラー:{}", msg),
}
}
fn i32div(n: i32, m: i32) -> Result<i32, &'static str> {
if m != 0 {
Ok(n/m)
} else {
Err("ZEROで割ろうとしています")
}
}
### main()関数の戻り値
他の関数と同じように値を返すことができる。返された値はOSが受け取る
main()の宣言で ->io::Result<()>を追加
use std::io;
fn main() -> io::Result<()> {
let x = 0;
let x > 0 {
println!("{}は正の数です。", x);
Ok(())
} else {
println!("{}は正の数ではありません。", x);
Err(io::Error::new(io::ErrorKind::Other, "error!"))
}
}
### Option型
Option
pub enum Option<T> {
Some(T),
None,
}
fn getvalue(a:&Vec<i32>, n: i32) -> Option<i32> {
for x in a.iter(){
if x == &n {
return Some(n);
}
}
None
}
fn main() {
let a = vec![1, 3, 5, 7, 9];
let n = 5;
match getvalue(&a, n) {
Some(result) => println!("値{}があります。", result),
None => println!("値は{}はありません", n),
}
}