1个稳定版本
1.0.0 | 2019年11月17日 |
---|
#19 in #chaining
41 每月下载量
6KB
59 行
intoif
此库提供了两个方便的特性,允许您根据提供的谓词将值转换为Option或Result。它与boolinator crate有些相似,但您不需要创建布尔值——谓词会为您完成。这在例如编写一个以fold结束的长链,您想将其转换为Option或Result时很有用。
use intoif::IntoOption;
use boolinator::Boolinator;
fn fizz_buzz(n: u32) -> String {
[(3, "Fizz"), (5, "Buzz")]
.iter()
.filter_map(|(x, s)| (n % x == 0).as_some(*s))
.collect::<String>()
.none_if(String::is_empty)
.unwrap_or_else(|| n.to_string())
}
lib.rs
:
此库提供了两个方便的特性,允许您根据提供的谓词将值转换为Option
或Result
。它与boolinator crate有些相似,但您不需要创建布尔值——谓词会为您完成。这在例如编写一个以fold结束的长链,您想将其转换为Option
或Result
时很有用。
use intoif::IntoOption;
fn fizz_buzz(n: u32) -> String {
[(3, "Fizz"), (5, "Buzz")]
.iter()
.filter_map(|(x, s)| if n % x == 0 { Some(*s) } else { None })
.collect::<String>()
.none_if(String::is_empty)
.unwrap_or_else(|| n.to_string())
}