🐙

RustにおけるNullチェック的な

2023/12/09に公開

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