RustでNoneはSomeより小さい

March 24, 2026, 1:57 p.m. edited March 24, 2026, 2:03 p.m.

#Rust 

タイトル通り。書いてたコードでなぜかテストケースを通らない、なんで??となって、Codexに聞いたら None は常に Some より小さいと言ってきたので、嘘でしょ!?となったので実験。

以下のコードをWandboxで実行した

fn main() {
    if None < Some(-5) {
        println!("None is less than Some(-5)");
    }
    else {
        println!("None is larger than or equal to Some(-5)");
    }

    let a: Option<usize> = None;
    if a == None {
        println!("None is equal to None");
    }
}

出力結果は

None is less than Some(-5)
None is equal to None

であり、確かに NoneSome より小さかった。そうなんだ……(PythonとかだとNoneと比較すると例外が飛ぶので気づけるが、これだと気づけないので真面目に .is_none() とかで確認しないと……)

関連文献