#options #conditional #take #if

take-if

一个用于条件性地从Option中取出内容的微型实用工具

2个版本 (1个稳定版)

1.0.0 2020年5月2日
0.1.0 2020年5月2日

#2092 in Rust模式

每月22次下载

MIT许可证

5KB

take-if

一个从Option中条件性地取出内容的微型实用工具。另请参阅Option::take

use take_if::TakeIf;

let mut maybe_greeting = Some("Hello, World!");

if let Some(greeting) = maybe_greeting.take_if(|greeting| greeting.starts_with("Hello")) {
    println!(r#"Greeting {:?} starts with "Hello""#, greeting);
} else {
    println!(r#"There was no greeting, or it didn't start with "Hello""#);
}

用法

将take-if添加到您的Cargo.toml

[dependencies]
take-if = "1.0.0"

在您的模块中导入TakeIf特质,以将take_if方法添加到Option

use take_if::TakeIf;

let taken = maybe_value.take_if(|value| value.id == 5);

lib.rs:

从option中条件性地取出一个值。

此crate向Option添加了take_if扩展方法,该方法条件性地从option中取出值,如果取出了值,则在该位置留下None。只有当option是Some时,才会调用谓词函数,并且接收option内容的引用。

如果您不需要条件性地取出值,即您总是需要取出值,请使用Option::take代替。

示例

use take_if::TakeIf;

let mut maybe_greeting = Some("Hello, World!");

if let Some(greeting) = maybe_greeting.take_if(|greeting| greeting.starts_with("Hello")) {
    println!(r#"Greeting {:?} starts with "Hello""#, greeting);
} else {
    println!(r#"There was no greeting, or it didn't start with "Hello""#);
}

无运行时依赖