uso tres signos signo significa quitar que pregunta los interrogación interrogacion indican importancia hola exclamacion especiales con caracteres caracter buscar admiracion generics rust

generics - tres - ¿Qué significa el signo de interrogación en un parámetro de tipo enlazado?



quitar caracteres sql server (1)

Encontré la definición de std::borrow::BorrowMut :

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

¿Qué significa el signo de interrogación delante de Sized en este parámetro de tipo enlazado ( Borrowed: ?Sized ?)?

He consultado

Pero no encontré una explicación. Por favor dé una referencia en su respuesta.

¹ especialmente ver sección 5.20 Rasgos
² y sección 6.1.9 Rasgos

Significa que el rasgo es opcional . La sintaxis actual se introdujo en la sintaxis DST RFC .

¿El único rasgo del que soy consciente funciona ? es de Sized

En este ejemplo específico, podemos implementar BorrowMut para tipos sin tamaño , como [T] - ¡tenga en cuenta que no hay & aquí!

Una implementación incorporada hace uso de eso:

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

Como Matthieu M. agrega :

Se trata de un caso de ensanchamiento ; en general, los límites imponen más restricciones, pero en el caso de Sized se decidió que, a menos que se indique lo contrario, se supondría una T genérica. ¿La forma de observar lo contrario sería marcarlo ?Sized ("quizás Sized ").