Ответ 1
Это означает, что этот признак является необязательным. Текущий синтаксис был введен в синтаксис DST RFC.
Единственная черта, о которой я знаю, работает для ?
: Sized
.
В этом конкретном примере мы можем реализовать BorrowMut
для нестандартных типов, например [T]
- отметить, что здесь нет &
!
Одна встроенная реализация использует это:
impl<T> BorrowMut<[T]> for Vec<T>
Как Маттиу М. добавляет:
Это случай расширяющейся границы; в общих границах налагают больше ограничений, но в случае
Sized
было решено, что если не указано иначе, общийT
будет считатьсяSized
. Способ заметить наоборот - отметить его?Sized
( "возможно,Sized
" ).