如何将空字符串解析为None?
将空字符串解析为 aNone而不是 a的惯用方法是Some("")什么?
let handle: Option<String> = x.get(0).and_then(|v| v.parse().ok());
回答
如果你从一个开始String:
let string = String::new();
let handle = Some(string).filter(String::is_empty);
从 Rust 1.50 开始,您也可以使用bool::then(感谢 sebpuetz)
let handle = string.is_empty().not().then(|| string);
// or
let handle = (!string.is_empty()).then(|| string);
使用您的代码:
let handle = x.get(0)
.and_then(|v| v.parse().ok())
.filter(String::is_empty);
文档
- 字符串::is_empty
- 选项::过滤器
- 布尔::然后