// dictionary
論理値型.
真偽値を表すプリミティブ型です。
取りうる値はtrueとfalseの2つのみで、メモリ上は1バイト(8ビット)で表現されます。
fn main() {
let stock: u32 = 0;
let in_stock: bool = stock > 0; // 在庫があるかどうか
if in_stock {
println!("購入可能です");
} else {
println!("売り切れです");
}
}Playgroundで開く補足
数値への変換と大小比較
boolはOrdを実装しており、false < trueとして順序付けられます。
整数型への変換はasによるキャストまたはFrom<bool>で行え、falseは0、trueは1になります。逆方向(整数からbool)への変換は、Rust 1.95.0でTryFrom<u8>等が安定化されましたが、それ以前のバージョンとの互換性も考え、ここではmatchで0・1以外の値を明示的に扱う例を示します。
fn main() {
assert!(false < true);
assert_eq!(true as i32, 1);
assert_eq!(i32::from(false), 0);
let raw: u8 = 2;
let parsed = match raw {
0 => Ok(false),
1 => Ok(true),
_ => Err("0/1以外は無効な値"),
};
assert!(parsed.is_err());
}Playgroundで開くこの辞書が使われているページ
backlinks 10