gpt4 book ai didi

rust - 为什么 BTreeMap 的元素可以通过与 K 不同类型的东西得到,但 Vec 和 binary_search 却不能得到?

转载 作者:行者123 更新时间:2023-12-02 18:11:00 25 4
gpt4 key购买 nike

我有一个问题要问。我们看一下下面的代码:

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保持String它接受可以与键类型进行比较的其他类型。

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

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

此代码段将无法编译,因为 binary_search要求引用与所提供值完全相同的类型。我有点困惑为什么。

最佳答案

an attempt更改 binary_search 的签名以支持接受值的借用版本,但 it broke stuffwas declined .

实际上有点惊讶这没有被考虑用于新版本。我猜想 binary_search_by 提供了一种解决方法(正如上面 @Dogbert 所评论的那样),因此解决这个问题的优先级较低。

关于rust - 为什么 BTreeMap<K, V> 的元素可以通过与 K 不同类型的东西得到,但 Vec 和 binary_search 却不能得到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72351470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com