如何将空字符串解析为 None?

Luk*_*ton 2 rust

将空字符串解析为 aNone而不是 a的惯用方法是Some("")什么?

let handle: Option<String> = x.get(0).and_then(|v| v.parse().ok());
Run Code Online (Sandbox Code Playgroud)

Sör*_*ren 6

如果你从一个开始String

let string = String::new();
let handle = Some(string).filter(String::is_empty);
Run Code Online (Sandbox Code Playgroud)

从 Rust 1.50 开始,您也可以使用bool::then(感谢 sebpuetz)

let handle = string.is_empty().not().then(|| string);
// or
let handle = (!string.is_empty()).then(|| string);
Run Code Online (Sandbox Code Playgroud)

使用您的代码:

let handle = x.get(0)
    .and_then(|v| v.parse().ok())
    .filter(String::is_empty);
Run Code Online (Sandbox Code Playgroud)

文档