在以下情形中:
#[derive(PartialEq, Eq, Hash)]
struct Key(String);
fn get_from_map(map: HashMap<Key, i32>, key: &str) {
// ???
}
我可以使用Borrow
特征来实现这一点,因此我不需要&Key
,只需&str
即可:
impl Borrow<str> for Key {
fn borrow(&self) -> &str {
&self.0
}
}
fn get_from_map(map: HashMap<Key, i32>, key: &str) {
map.get(key);
}
但是,当我的密钥是枚举时,无法实现Borrow
:
#[derive(PartialEq, Eq, Hash)]
enum Key {
Text(String),
Binary(Vec<u8>)
}
fn get_from_map(map: HashMap<Key, i32>, key: &str) {
// ???
}
是否有符合人体工程学的方式来实现get_from_map
,而无需克隆key
,以便它只能查找Text
个键?
我的第一直觉是Borrow
新类型的实现BorrowedKey
,但由于Borrow
需要返回引用,因此似乎无效。