📝
Option<T>:ライジング
enum Option<T> {
Some(T),
None,
}
↑↑↑↑↑↑↑↑↑↑↑↑これ↑↑↑↑↑↑↑↑↑↑↑↑
大変意味がわかりません。
色々調べましたが、自分は前提知識が乏しく皆様の記事を理解することはできませんでした。
結局、Grok先輩に頭下げて聞きました。いつも助かってますパイセン!
意味
Option<T>
・Option型のパラメータ。ジェネリック型。
・具体的な型を表す。(String, i32...)
例:Option<i32>であったらなら、Some(10)
Some(T)
・値が存在することを示す。
・具体的な値を保持する。Some(10)
None
・値が存在しないことを表す。
-
要するに、Some(T)の(T)の中に値をぶち込み、Option<T>の<T>にぶち込んだ値の型を入れ、ぶち込めなければNoneという風に表せるように列挙したものです。
Option Enumなのでね。
利用
基本
enum Option<T> {
Some(T),
None,
}
fn main(){
let aru = Some(String::from("aru")); // 型推論働く。
let nai: Option<String> = None; // Noneは型指定してネ。
}
当たり前ですがNoneには具体的な値がありません。そのため、Option<T>のTを推論できないので、型指定が必要なのである。
所見
Option<T>はRustの標準ライブラリ(std::option)に定義されています。
いちいち定義する必要はない(らしい)。
自分が見たライブラリでの使い方は、これ。
pub struct CentralPanel {
frame: Option<Frame>,
}
例えば、構造体を定義する際にframe: Option<Frame>と書くことで、frameフィールドの型がOption<Frame>列挙型のインスタンスであると認識してくれる(らしい)。
そして、Option<Frame>はSome(Frame)またはNoneのどちらかの値を取れる型としてコンパイラに伝わる。
明示的にSome(Frame)とNoneを書かなくていいってコト。
Discussion