◾️はじめに
https://dk521123.hatenablog.com/entry/2025/11/30/222255
で「Rustには class がない」っていう話をしたが、 今回は、「Rustには null がない」って話。
目次
【0】Rustには null がない 【1】Option型 【2】関連メソッド 1)unwrap() 2)unwrap_or() 3)is_some() / is_none() 【3】その他Tips 1)match式 2)? 演算子 (Try Operator)
【0】Rustには null がない
* Rust には、Javaなどの null がない => 代わりに、Option型(Some/None)で実装する
https://qiita.com/CRUD5th/items/acd7f632e5cccc1069c1
【1】Option型
* Scala の Option型とほぼ同じ => 値があるかないかを表す型で 「Some」と「None」の2種類のサブクラスを持っている cf. None(代名詞) = 1つも〜ない
Scala ~ 基本編 / Option型 ~
https://dk521123.hatenablog.com/entry/2023/03/09/000000
// enumなんだ、、、ここは、Scalaと違う、、、 enum Option<T> { Some(T), None, }
【2】関連メソッド
1)unwrap()
fn main() { let value1: Option<i32> = Some(3); // Result: 3 println!("Result: {}", value1.unwrap()); let value2: Option<i32> = None; // thread 'main' (3920593) panicked at src/main.rs println!("Result: {}", value2.unwrap()); }
2)unwrap_or()
fn main() { let value1: Option<i32> = Some(3); // Result: 3 println!("Result: {}", value1.unwrap_or(-1)); let value2: Option<i32> = None; // Result: -1 println!("Result: {}", value2.unwrap_or(-1)); }
3)is_some() / is_none()
fn main() { let value1: Option<i32> = Some(3); // Result: true println!("Result: {}", value1.is_some()); let value2: Option<i32> = None; // Result: true println!("Result: {}", value2.is_none()); }
【3】その他Tips
1)match式
fn main() { let value1: Option<i32> = Some(3); match value1 { // some value = 3 Some(v) => println!("some value = {}", v), None => println!("none value"), }; let result1 = match value1 { Some(v) => format!("There is a value ({})", v), None => "There is no value".into(), }; // Result: There is a value println!("Result: {}", result1); let value2: Option<i32> = None; match value2 { Some(v) => println!("some value = {}", v), // none value None => println!("none value"), }; }
2)? 演算子 (Try Operator)
* 以下の関連記事を参照のこと
Rust ~ Error handling(Result型 / ?演算子) ~
https://dk521123.hatenablog.com/entry/2025/12/02/000346
参考文献
https://zenn.dev/mebiusbox/books/22d4c1ed9b0003/viewer/0d7a68
https://qiita.com/take4s5i/items/c890fa66db3f71f41ce7
関連記事
Rust ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/22/234808
Rust ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/11/26/224648
Rust ~ 変数 / データ型 ~
https://dk521123.hatenablog.com/entry/2025/12/05/000647
Rust ~ 保有権 ~
https://dk521123.hatenablog.com/entry/2023/05/04/213726
Rust ~ enum / 列挙型 ~
https://dk521123.hatenablog.com/entry/2025/12/03/000831
Rust ~ mod ~
https://dk521123.hatenablog.com/entry/2025/11/29/221911
Rust ~ struct/impl/trait ~
https://dk521123.hatenablog.com/entry/2025/11/30/222255
Rust ~ Error handling(Result型 / ?演算子) ~
https://dk521123.hatenablog.com/entry/2025/12/02/000346
Rust ~ Axum / 入門編 ~
https://dk521123.hatenablog.com/entry/2023/09/02/224707
Rust ~ Axum / REST ~
https://dk521123.hatenablog.com/entry/2025/11/27/145159