rust - 如何测试一个值是否在一个范围内?

标签 rust

我希望能够创建一个 Range然后测试该范围内是否包含变量。看起来像这样的东西:

fn main() {
    let a = 3..5;
    assert!(a.contains(4));
}

现在,我看到的唯一明显的事情就是使用 Iterator::any .这很丑陋,因为它需要 O(1) 操作并使其成为 O(n):

fn main() {
    let mut a = 3..5;
    assert!(a.any(|v: i32| v == 4));
}

最佳答案

从 Rust 1.35 开始,原始代码将几乎1 使用 Range::contains 按原样编译:

fn main() {
    let a = 3..5;
    assert!(a.contains(&4));
}

1&4 而不是 4 传递给 contains()

关于rust - 如何测试一个值是否在一个范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28265036/

相关文章:

rust - 使用 gcc :Config? 时如何添加自己的编译器标志

rust - 一次实现多种类型的特征

rust - 带有过程的命令 panic 无法访问已使用的文件

multithreading - 为什么 Condvar 不唤醒最后一个线程?

enums - 在宏中匹配类似元组的枚举变量,其中枚举类型和变量是元变量: how do I write the matching pattern?

rust - 使用 docopt 和 Rust 解析带有参数的命令行标志,类似于 getopt

json - 如何通过属性将 JSON 对象数组整理成包含每个对象属性向量的结构?

rust - 为什么 Index 特征允许返回对临时值的引用?

rust - 如何在编译时创建静态字符串

macos - 无法在 OS X 上编译 Rust 0.9