我找到了 std::borrow::BorrowMut
的定义:
pub trait BorrowMut<Borrowed>: Borrow<Borrowed>
where
Borrowed: ?Sized,
{
fn borrow_mut(&mut self) -> &mut Borrowed;
}
在此类型参数绑定(bind)(
Sized
)中,Borrowed: ?Sized
前面的问号是什么意思?我咨询了:
但没有找到解释。请在回答中提供引用。
¹特别请参阅5.20 Traits部分
²和6.1.9 Traits部分
最佳答案
这意味着特征是可选的。当前语法已在DST syntax RFC中引入。
我知道,唯一适用于?
的特征是Sized
。
在此特定示例中,我们可以为诸如BorrowMut
之类的大小不一的类型实现[T]
-请注意,这里没有&
!
一种内置的实现利用了这一点:
impl<T> BorrowMut<[T]> for Vec<T>
作为Matthieu M. adds: