rust - ps4 - ¿Cuáles son los tipos de óxido señalados con un solo apóstrofo?
rust traduccion (1)
Me he encontrado con varios tipos en Rust señalados con un solo apóstrofo:
''static
''r
''a
¿Cuál es el significado de ese apóstrofo? Tal vez es un modificador de referencias ( &
)? Tipo genérico específico para las referencias? No tengo idea de dónde se esconde la documentación para esto.
Estos son los tiempos de vida nombrados de Rust.
Citando de The Rust Programming Language :
Cada referencia en Rust tiene un tiempo de vida, que es el alcance para el cual esa referencia es válida. La mayor parte del tiempo de vida está implícito e inferido, al igual que la mayoría de los tipos de tiempo se infieren. De manera similar a cuando tenemos que anotar tipos porque son posibles múltiples tipos, hay casos en los que las vidas de las referencias se pueden relacionar de diferentes maneras, por lo que Rust nos necesita anotar las relaciones usando parámetros genéricos de por vida para que pueda asegurarse de que las referencias reales utilizadas en tiempo de ejecución definitivamente serán válidas.
Las anotaciones de por vida no cambian la duración de ninguna de las referencias involucradas. De la misma manera que las funciones pueden aceptar cualquier tipo cuando la firma especifica un parámetro de tipo genérico, las funciones pueden aceptar referencias de cualquier duración cuando la firma especifique un parámetro genérico de duración. Lo que hacen las anotaciones de por vida es relacionar las vidas de múltiples referencias entre sí.
Las anotaciones de por vida tienen una sintaxis levemente inusual: los nombres de los parámetros de por vida deben comenzar con un apóstrofo
''
. Los nombres de los parámetros de por vida generalmente son minúsculos y, al igual que los tipos genéricos, sus nombres suelen ser muy cortos.''a
es el nombre que la mayoría de la gente usa como valor predeterminado. Las anotaciones de parámetros de por vida van después de&
de una referencia, y un espacio separa la anotación de por vida del tipo de referencia.
Dicho de otra manera, el tiempo de vida se aproxima al período de ejecución durante el cual los datos a los que apunta una referencia son válidos. El compilador de Rust inferirá de manera conservadora el tiempo de vida más corto posible para estar seguro. Si desea decirle al compilador que una referencia vive más tiempo que la estimación más corta, puede asignarle un nombre, diciendo que la referencia de salida, por ejemplo, tiene la misma duración que una referencia de entrada dada.
La ''static
vida ''static
es una vida especial, la vida más larga de todas las vidas, por la duración del programa. Un ejemplo típico son los "literales" de cadena que siempre estarán disponibles durante la vida útil del programa / módulo.
Puede obtener más información de este mazo de diapositivas , comenzando en la diapositiva 29.
Lifetimes in Rust también discute vidas con cierta profundidad.