🐙
RustにおけるNullチェック的な
RustにおけるNull
RustにNullはない
厳密性維持のために、コンパイラが意図しない未定義の変数を防ぐために、Nullの可能性がある実装を禁止している→コンパイルエラーになる
なので、内容があるかもしれないし、ないかもしれない場合にはOption<T>
を使う
Option<T>
は標準ライブラリで列挙子として以下のように定義されている
enum Option<T> {
Some(T),
None,
}
TypeScriptだと
例えば、TypeScriptだと値が返ってこない可能性を考慮して?
か??
を使って、安全性を確保する
const nullableFunc = async (): string => {
const maybeNull = await somethingReturnPossibleNull();
return maybeNull ?? 'nullかもね'
// return maybeNull? string|null
}
似たようなことをRustではOption<T>
を使って表現する
Rustだと
RustではNullableな値をOption<T>
でラップして、matchを使って安全性を確保する
fn maybe_null(x: NoneAble) -> Option<String>{
match x {
None => String::from("Null"),
Some(x) => String::from(x),
}
}
こうすることで、未定義な値から安全性を確保する
注意点
Option<T>
でラップしSome(T)
として用意された値を使用するには、Some(T)=>T
となるような変換が必要になる。
そこらへんはドキュメントを参照
Discussion