首页 文章

问号在类型参数中的含义是什么意思?

提问于
浏览
28

我找到了std::borrow::BorrowMut的定义:

pub trait BorrowMut<Borrowed>: Borrow<Borrowed>
where
    Borrowed: ?Sized,
{
    fn borrow_mut(&mut self) -> &mut Borrowed;
}

Sized 前面的问号是什么意思在这个类型参数绑定( Borrowed: ?Sized )?

我咨询过:

但没有找到解释 . 请在答案中提供参考 .


¹特别参见第5.20节特征
²和6.1.9部分特征

1 回答

  • 19

    这意味着特征是可选的 . 当前语法是在DST syntax RFC中引入的 .

    我所知道的唯一适用于 ? 的特征是 Sized .

    在这个具体的例子中,我们可以为未确定的类型实现 BorrowMut ,比如 [T] - 注意这里没有 &

    一个内置实现利用了:

    impl<T> BorrowMut<[T]> for Vec<T>
    

    Matthieu M. adds

    这是一个扩大的范围;一般来说,边界会施加更多限制,但在大小的情况下,除非另有说明,否则将认为通用T将被假定为大小 . 注意相反的方法是标记它?大小(“可能大小”) .

相关问题