Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Aspectos fundamentales del AWS SDK para Rust
Conozca los aspectos fundamentales de la programación con el AWS SDK para Rust, por ejemplo: los aspectos fundamentales del lenguaje de programación Rust, la información sobre el SDK para las cajas de Rust, la configuración de proyectos y el uso del tiempo de ejecución de Tokio por parte del SDK para Rust.
Requisitos previos
Para poder utilizar el AWS SDK para Rust, debe tener Rust y Cargo instalados.
-
Instale la cadena de herramientas de Rust: https://www.rust-lang.org/tools/install
. -
Instale la herramienta
cargo-componentejecutando el comando: cargo install cargo-component
Herramientas recomendadas:
Las siguientes herramientas opcionales se pueden instalar en el IDE para facilitar la finalización del código y la solución de problemas.
-
La extensión rust-analyzer, consulte Rust en Visual Studio Code
. -
Amazon Q Developer, consulte Instalación de la extensión o el complemento de Amazon Q Developer en el IDE.
Aspectos fundamentales de Rust
A continuación se presentan algunos conceptos básicos del lenguaje de programación Rust que sería útil conocer. Todas las referencias para obtener más información proceden de El lenguaje programación Rust
-
Cargo.tomles el archivo de configuración estándar de proyectos de Rust, que contiene las dependencias y algunos metadatos sobre el proyecto. Los archivos fuente de Rust tienen la extensión de archivo.rs. Consulte ¡Hola, Cargo!-
El archivo
Cargo.tomlse puede personalizar con perfiles; consulte Personalización de compilaciones con perfiles de versión. Estos perfiles no tienen ninguna relación con el uso que AWS hace de los perfiles en el archivo configde AWS compartido y son totalmente independientes de él. -
Una forma habitual de agregar dependencias de biblioteca al proyecto y a este archivo es usar
cargo add. Consultecargo-add.
-
-
Rust tiene una estructura de funciones básica como la que se muestra a continuación. La palabra clave
letdeclara una variable y puede combinarse con una asignación (=). Si no especifica ningún tipo después delet, el compilador inferirá uno. Consulte Variables y mutabilidad.fn main() { let w = "world"; println!("Hello {}!", w); } -
Para declarar una variable
xcon un tipo explícitoT, Rust usa la sintaxisx: T. Consulte Tipos de datos. -
struct X {}define el nuevo tipoX. Los métodos se implementan en el tipo de estructura personalizadaX. Los métodos para el tipoXse declaran con bloques de implementación prefijados con la palabra claveimpl. Dentro del bloque de implementación,selfse refiere a la instancia de la estructura en la que se llamó el método. Consulte Palabra claveimply Sintaxis de métodos . -
Si es un signo de exclamación («!») sigue a lo que parece ser una definición de función o una llamada a una función, entonces el código define o llama a una macro. Consulte Macros
. -
En Rust, los errores irrecuperables se representan mediante la macro
panic!Cuando un programa encuentra unpanic!, deja de ejecutarse, imprime un mensaje de error, se deshace, limpia la pila y se cierra. Consulte Errores irrecuperables conpanic! -
Rust no admite la herencia de funciones de clases base como otros lenguajes de programación; los
traitsson la forma en que Rust proporciona la sobrecarga de métodos. Los indicadores pueden considerarse conceptualmente similares a una interfaz. Sin embargo, los indicadores y las interfaces verdaderas tienen diferencias y, a menudo, se utilizan de forma diferente en el proceso de diseño. Consulte Indicadores: definición del comportamiento compartido. -
El polimorfismo se refiere al código que admite la funcionalidad de varios tipos de datos sin tener que escribir cada uno de ellos de manera individual. Rust admite el polimorfismo mediante enumeraciones, indicadores y genéricos. Consulte La herencia como sistema de tipos y como código compartido
.
-
-
Rust es muy explícito en cuanto a la memoria. Los indicadores inteligentes «son estructuras de datos que actúan como un indicador, pero también tienen metadatos y capacidades adicionales». Consulte Indicadores inteligentes
. -
El tipo
Cowes un indicador inteligente clonado al escribir que ayuda a transferir la propiedad de la memoria al llamante cuando es necesario. ConsulteEnum std::borrow::Cow. -
El tipo
Arces un indicador inteligente con recuento de referencias atómico que cuenta las instancias asignadas. ConsulteStruct std::sync::Arc.
-
-
El SDK de Rust utiliza con frecuencia el patrón generador para crear tipos complejos.
Aspectos fundamentales de la caja AWS SDK para Rust
-
La caja principal de la funcionalidad del SDK para Rust es
aws-config. Se incluye en la mayoría de los proyectos porque proporciona la funcionalidad de leer la configuración del entorno.$cargo add aws-config-
No confundirlo con el Servicio de AWS llamado AWS Config. Dado que se trata de un servicio, sigue la convención estándar de las cajas de Servicio de AWS y se llama
aws-sdk-config.
-
-
La biblioteca del SDK para Rust se divide en diferentes cajas de biblioteca según cada Servicio de AWS. Estas cajas están disponibles en https://docs.rs/
. -
Las cajas de Servicio de AWS siguen la convención de nomenclatura de
aws-sdk-, como[servicename]aws-sdk-s3yaws-sdk-dynamodb.
Configuración del proyecto para trabajar con Servicios de AWS
-
Deberá agregar una caja a su proyecto para cada Servicio de AWS que desee que utilice la aplicación.
-
La forma recomendada de agregar una caja es mediante la línea de comandos en el directorio del proyecto, ejecutando
cargo add, por ejemplo[crateName]cargo add aws-sdk-s3.-
Se agregará una línea al archivo
Cargo.tomldel proyecto en[dependencies]. -
De forma predeterminada, se agregará la última versión de la caja al proyecto.
-
-
En el archivo fuente, utilice la instrucción
usepara incluir elementos de sus cajas al ámbito. Consulte Uso de paquetes externosen el sitio web del lenguaje de programación Rust. -
Los nombres de las cajas suelen estar separados con guiones, pero estos se convierten en guiones bajos cuando se utiliza la caja. Por ejemplo, la caja
aws-configse usa en la instrucciónusedel código como:use aws_config.
-
-
La configuración es un tema complejo. La configuración puede realizarse directamente en el código o especificarse externamente en variables de entorno o archivos de configuración. Para obtener más información, consulte Configuración externa de clientes de servicio de AWS SDK para Rust.
-
Cuando el SDK carga la configuración, se registran los valores no válidos en lugar de detener la ejecución, ya que la mayoría de las configuraciones tienen valores predeterminados razonables. Para obtener información sobre el registro, consulte Configuración y uso del registro en AWS SDK de Rust.
-
La mayoría de las variables de entorno y los ajustes del archivo de configuración se cargan una vez al iniciarse el programa. Las actualizaciones de los valores no se verán hasta que reinicie el programa.
-
Tiempo de ejecución de Tokio
-
Tokio es un tiempo de ejecución asíncrono para el lenguaje de programación del SDK para Rust, que ejecuta las tareas
async. Consulte tokio.rsy docs.rs/tokio . -
El SDK para Rust requiere un tiempo de ejecución asíncrono. Se recomienda agregar la siguiente caja a los proyectos:
$cargo add tokio --features=full -
La macro de atributos
tokio::maincrea un punto de entrada principal asíncrono al programa. Para poder utilizar esta macro, agréguela a la línea anterior al métodomain, como se muestra a continuación:#[tokio::main] async fn main() -> Result<(), Error> {