在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
分裂?您可以在第 295 页的类似示例中看到这一点,
...
where T: AsRef<U>
T: ?Sized, U: ?Sized
...