【发布时间】:2019-09-20 10:43:44
【问题描述】:
在Programming Rust 的第 297 页上,您可以找到以下内容
impl HashMap<K, V> where K: Eq + Hash
{
fn get<Q: ?Sized>(&self, key: &Q) -> Option<&V>
where K: Borrow<Q>,
Q: Eq + Hash
}
我以前见过?Sized 是自己编写的,而其余的特征边界在不同的行上?这是一个约定吗?据我了解,以上内容实际上与以下内容相同?
impl HashMap<K, V> where K: Eq + Hash
{
fn get<Q>(&self, key: &Q) -> Option<&V>
where K: Borrow<Q>,
Q: Eq + Hash + ?Sized
}
为什么?Sized 被拆分了?您可以在page 295 上的类似示例中看到这一点,
...
where T: AsRef<U>
T: ?Sized, U: ?Sized
...
【问题讨论】: