我找到了std::borrow::BorrowMut
的定义:
pub trait BorrowMut<Borrowed>: Borrow<Borrowed>
where
Borrowed: ?Sized,
{
fn borrow_mut(&mut self) -> &mut Borrowed;
}
Sized
前面的问号在此类型参数中的含义是什么(Borrowed: ?Sized
)?
我咨询过:
但未找到解释。请在答案中提供参考。
答案 0 :(得分:25)
这意味着特征是可选。当前语法是在DST syntax RFC。
中引入的我所知道的唯一适用于?
的特征是Sized
。
在这个具体示例中,我们可以为未归类型实施BorrowMut
,例如[T]
- 请注意,此处没有&
!
一个内置实现使用它:
impl<T> BorrowMut<[T]> for Vec<T>
这是加宽界限的情况;通常,边界强加更多约束,但在
Sized
的情况下,除非另有说明,否则将确定通用T
将被假定为Sized
。注意相反的方法是将其标记为?Sized
(“可能Sized
”)。