我有个问题要问.让我们看一下以下代码:

use std::collection::BTreeMap;

fn main() {
  let mut hm: BTreeMap<String, String> = BTreeMap::new();
  hm.insert("asdf".to_owned(), "zxcv".to_owned());
  println!("{:?}", hm.get("asdf"));
}

因此,尽管BTreeMap保持Strings,但它接受其他类型,可以与键类型进行比较.

但这不仅仅是Vec<T>人的情况.因此,以下代码将是一个错误:

fn main() {
  let v: Vec<String> = vec!["hello".to_owned()];
  println!("{:?}", v.binary_search("hello"));
}

这段代码将无法编译,因为binary_search次调用都是对所提供值的完全相同类型的引用.我有点搞不懂为什么.

推荐答案

an attempt人将binary_search的签名更改为支持接受borrow 版本的值,但it broke stuffwas declined除外.

事实上,有点惊讶的是,新版中没有考虑到这一点.我想binary_search_by提供了一个解决方法(正如上面@Dogbert所 comments 的),这一事实使得补救这一问题的优先级很低.

Rust相关问答推荐

无需通过ASIO输入音频,并使用cpal进行反馈示例

为什么对不可复制数据的引用的取消引用没有O权限来避免Rust中的双重释放?

关联类型(类型参数)命名约定

使用Rust s serde_json对混合数据类型进行优化'

如何使用字符串迭代器执行查找?

当一个箱子有自己的依赖关系时,两个人如何克服S每箱1库+n箱的限制?

限制未使用的泛型导致编译错误

铁 rust 中双倍或更多换行符的更好练习?

如何创建一个可变的嵌套迭代器?

如何在嵌套的泛型 struct 中调用泛型方法?

Rust从关联函数启动线程

如何将生存期参数添加到框<>;具有dyn类型别名

有没有一种方法可以创建一个闭包来计算Rust中具有随机系数的n次多项式?

Rust 中多个 & 符号的内存表示

Rust中的一生语法有什么作用?

bcrypt 有长度限制吗?

&str 的编译时拆分是否可能?

使用 HashMap 条目时如何避免字符串键的短暂克隆?

当我在 struct 中存储异步函数时,为什么它需要生命周期

Rust:如果我知道只有一个实例,那么将可变borrow 转换为指针并返回(以安抚borrow 判断器)是否安全?