Los punteros inteligentes son punteros con capacidades extendidas, como cheques vinculados y gestión de memoria automática. Los punteros inteligentes también incluyen metadatos adicionales. Ahora, el concepto de punteros inteligentes no es nuevo, especialmente para los programadores de C ++.
Para este artículo, exploraremos varios consejos inteligentes como se define en la biblioteca de Rust Standard.
Puntos clave
En Rust, los punteros inteligentes son estructuras de datos, sin embargo, a diferencia de los punteros normales, los punteros inteligentes en realidad pueden poseer datos. Se implementan comúnmente utilizando estructuras pero difieren de las estructuras normales en el sentido de que implementan los rasgos Deref y caen.
Hay 5 consejos inteligentes que saber en Rust:
NOTA: En óxido se refiere al tipo de datos.
Tenga en cuenta que no cubrirá todos los consejos inteligentes en este artículo.
Caja
El cuadro Smart Pointer proporciona una forma de hacer referencia a los datos almacenados en la memoria del montón. Por defecto, Rust asigna todo en la memoria de la pila. Usando el puntero Smart Smart, podemos acceder a los datos en el montón, incurriendo en una sobrecarga de rendimiento.
El puntero inteligente de la caja también obedece las reglas de propiedad y préstamos. Por lo tanto, tiene un solo propietario de datos y puede tener solo una referencia mutable y cualquier número de referencias inmutables.
fn main ()En el ejemplo anterior, tenemos un puntero inteligente de caja que almacena el valor 5 en el montón. Tenga en cuenta que la caja en sí se almacena en la pila.
Una vez que se finaliza el programa, el cuadro se desacalta desde la memoria.
Desagüe
Como su nombre indica, el puntero inteligente Deref se usa para permitir la manipulación de la operación de deserencia. Usando el puntero inteligente Deref, puede crear una estructura que pueda funcionar con el puntero inteligente y las referencias.
Un código de ejemplo es como se muestra a continuación:
use std :: ops :: deref;Gota
El puntero Smart Smart se usa para la memoria libre que se asigna en el montón. El rasgo de caída en el óxido maneja la memoria cuando una variable sale del alcance. No necesitamos llamar a este rasgo manualmente, ya que Rust hará esto por nosotros. Sin embargo, podemos implementarlo para tipos personalizados como se muestra.
estructurar mystructLo anterior implementa el rasgo de caída para el rasgo personalizado. La salida es como se muestra:
Dropping: 200
Dropping: 100
Conclusión
En este artículo, cubrimos cómo crear y trabajar con consejos inteligentes comunes en el lenguaje de programación de óxido. Puede obtener más información sobre los punteros Smart Rust en el recurso a continuación:
https: // doc.lang óxido.org/book/ch15-00-smart-pointers.html