### 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), } }