我希望能够创建一个Range然后测试变量是否包含在该范围内.看起来像这样的东西:
fn main() {
let a = 3..5;
assert!(a.contains(4));
}
Run Code Online (Sandbox Code Playgroud)
现在,我看到的唯一明显的事情是使用Iterator::any.这很丑陋,因为它需要O(1)操作并使其成为O(n):
fn main() {
let mut a = 3..5;
assert!(a.any(|v: i32| v == 4));
}
Run Code Online (Sandbox Code Playgroud)
She*_*ter 15
在更多版本中,原始代码将按原样编译.现在,Range::contains作为夜间功能存在:
fn main() {
let a = 3..5;
assert!(a.contains(&4));
}
Run Code Online (Sandbox Code Playgroud)
All*_*ain 10
您还可以使用if let,类似于match:
if let 3..=5 = 4 {
println!("Inside");
}
Run Code Online (Sandbox Code Playgroud)
分配给变量也很容易:
let s = if let 3..=5 = 4 {
"Inside"
} else {
"Outside"
};
println!("{}", s);
Run Code Online (Sandbox Code Playgroud)
它Range本身没有任何东西(目前,无论如何),但这并不困难; 毕竟,它只需要几个比较:
4 >= a.start && 4 < a.end
Run Code Online (Sandbox Code Playgroud)
您也可以使用match:
fn main() {
let v = 132;
match v {
1...100 => println!("Inside"),
_ => println!("Outside")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3264 次 |
| 最近记录: |