Data Types - The Rust Programming Language
スカラー型(Scalar):4種類
- 整数型(Integer)
- 浮動小数点型(Floating-point)
- 真理値型(Boolean)
- 文字型(Character)
Integer Overflow
ランタイムエラーが発生した場合、debugモードでコンパイルした時はpanicを起こす。
fn main(){ let x: u8 = "hello".len() as u8; let y: u8 = x + u8::MAX; println!("{}", y); }
cargo run --release
で実行すると、256から0に戻って処理をする。上記の場合はy=4となる。
wrapping_*()メソッド
--releaseと同じ挙動になる。
fn main(){ let x: u8 = "hello".len() as u8; let y = x.wrapping_add(u8::MAX); println!("{}", y); }
checked_*()メソッド
オーバーフロー時はNoneを返す。
fn main(){ let x: u8 = "hello".len() as u8; match x.checked_add(u8::MAX) { Some(result) => println!("result: {}", result), None => println!("overflow"), } }
overflowing_*()メソッド
結果とオーバーフローの有無をboolean型で返却する
fn main(){ let x: u8 = "hello".len() as u8; let (result, overflow) = x.overflowing_add(u8::MAX); println!("result: {}, overflow: {}", result, overflow); }
saturating_*()メソッド
オーバーフロー時に型の最小値または最大値を返す
fn main(){ let x: u8 = "hello".len() as u8; let y = x.saturating_add(u8::MAX); println!("{}", y); //255を返す }
add(足し算)の他に、sub: 引き算、mul: 掛け算、div: 割り算、neg: 符号反転(符号付き整数のみ)がある
複合型(Compound):2種類
- タプル型(Tuple)
- 配列(Array)