Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Nozioni fondamentali
Prerequisiti
Per poter utilizzare AWS SDK for Rust, è necessario che Rust and Cargo siano installati.
-
Installa la toolchain Rust: https://www.rust-lang. org/tools/install
-
Installa lo
cargo-component
strumentoeseguendo il comando: cargo install cargo-component
Strumenti consigliati:
I seguenti strumenti opzionali possono essere installati nell'IDE per facilitare il completamento del codice e la risoluzione dei problemi.
-
L'estensione rust-analyzer, vedi Rust in Visual
Studio Code. -
Amazon Q Developer, consulta Installazione dell'estensione o del plug-in Amazon Q Developer nel tuo IDE.
Nozioni di base su Rust
Di seguito sono riportate alcune nozioni di base del linguaggio di programmazione Rust che sarebbe utile conoscere. Tutti i riferimenti per ulteriori informazioni provengono da The Rust Programming Language
-
Cargo.toml
è il file di configurazione standard del progetto Rust, contiene le dipendenze e alcuni metadati sul progetto. I file sorgente di Rust hanno un'.rs
estensione di file. Vedi Hello, Cargo!. -
Cargo.toml
Possono essere personalizzati con profili, vedere Personalizzazione delle build con profili di rilascio. Questi profili sono completamente indipendenti e indipendenti dall' AWS uso dei profili all'interno del file condiviso. AWS config
-
Un modo comune per aggiungere dipendenze di libreria al progetto e a questo file consiste nell'utilizzare.
cargo add
Per informazioni, consultacargo-add
.
-
-
Rust ha una struttura funzionale di base come la seguente. La
let
parola chiave dichiara una variabile e potrebbe essere abbinata a assignment (=). Se non si specifica un tipo dopolet
, il compilatore ne dedurrà uno. Vedi Variabili e mutabilità.fn main() { let w = "world"; println!("Hello {}!", w); }
-
Per dichiarare una variabile
x
con un tipo esplicitoT
, Rust utilizza la sintassi.x: T
Vedi Tipi di dati. -
struct X {}
definisce il nuovo tipoX
. I metodi sono implementati sul tipo di struttura personalizzatoX
. I metodi per il tipoX
sono dichiarati con blocchi di implementazione preceduti da una parola chiaveimpl
. All'interno del blocco di implementazione,self
si riferisce all'istanza della struttura su cui è stato chiamato il metodo. Vedi Sintassiimpl
delle parole chiavee del metodo . -
Se è un punto esclamativo («!») segue quella che sembra essere una definizione di funzione o una chiamata di funzione, quindi il codice definisce o chiama una macro. Vedi Macro
. -
In Rust, gli errori irreversibili sono rappresentati dalla macro.
panic!
Quando un programma incontra una, smette di funzionare, stampa un messaggio di errore, si riavvia, puliscepanic!
lo stack e si chiude. Vedi Errori irrecuperabili con.panic!
-
Rust non supporta l'ereditarietà delle funzionalità dalle classi base come fanno gli altri linguaggi di programmazione; è così che Rust fornisce il
traits
sovraccarico dei metodi. Si potrebbe pensare che i tratti siano concettualmente simili a un'interfaccia. Tuttavia, le caratteristiche e le interfacce reali presentano differenze e vengono spesso utilizzate in modo diverso nel processo di progettazione. Vedi Tratti: definizione del comportamento condiviso. -
Il polimorfismo si riferisce al codice che supporta funzionalità per più tipi di dati senza doverli scrivere singolarmente. Rust supporta il polimorfismo tramite enumerazioni, tratti e generici. Vedi Ereditarietà come sistema di tipi e come condivisione di codice
.
-
-
Rust è molto esplicito sulla memoria. I puntatori intelligenti «sono strutture di dati che agiscono come un puntatore ma hanno anche metadati e funzionalità aggiuntivi». Vedi Smart Pointers.
-
Il tipo
Cow
è un puntatore clone-on-write intelligente che aiuta a trasferire la proprietà della memoria al chiamante quando necessario. Per informazioni, consultaEnum std::borrow::Cow
. -
Il tipo
Arc
è un puntatore intelligente Atomically Reference Counted che conta le istanze allocate. Per informazioni, consultaStruct std::sync::Arc
.
-
-
L'SDK per Rust utilizza spesso il pattern builder per costruire tipi complessi.
AWS SDK for Rust crea i fondamenti
-
La libreria SDK for Rust è suddivisa in diverse casse di libreria ciascuna. Servizio AWSQueste casse sono disponibili all'indirizzo https://docs.rs/.
-
Servizio AWS le casse seguono la convenzione di denominazione di
aws-sdk-
, ad esempio e.[servicename]
aws-sdk-s3
aws-sdk-dynamodb
-
La cassetta principale per la funzionalità SDK for Rust è.
aws-config
È inclusa nella maggior parte dei progetti perché fornisce funzionalità per leggere la configurazione dall'ambiente.-
Non confondetelo con Servizio AWS quello che viene chiamato AWS Config. Poiché si tratta di un servizio, segue la convenzione standard e viene chiamato
aws-sdk-config
.
-
Configurazione del progetto con cui lavorare Servizi AWS
-
Dovrai aggiungere una cassa al tuo progetto per ogni cassa Servizio AWS che desideri venga utilizzata dall'applicazione.
-
Il modo consigliato per aggiungere una cassa è utilizzare la riga di comando nella directory del progetto eseguendo
cargo add
, ad esempio.[crateName]
cargo add aws-sdk-s3
-
Questo aggiungerà una riga nella parte
Cargo.toml
inferiore[dependencies]
del progetto. -
Per impostazione predefinita, questo aggiungerà la versione più recente della cassa al tuo progetto.
-
-
Nel file sorgente, utilizzate l'
use
istruzione per inserire gli oggetti contenuti nelle loro casse nel campo Scope. Vedi Utilizzo di pacchetti esternisul sito Web del linguaggio di programmazione Rust. -
I nomi delle casse sono spesso sillabati, ma i trattini vengono convertiti in caratteri di sottolineatura quando si utilizza effettivamente la cassa. Ad esempio, la
aws-config
cassa viene utilizzata nell'istruzione del codice come:.use
use aws_config
-
-
La configurazione è un argomento complesso. La configurazione può avvenire direttamente nel codice o essere specificata esternamente in variabili di ambiente o file di configurazione. Per ulteriori informazioni, consulta Opzioni di configurazione.
-
Quando l'SDK carica la configurazione, vengono registrati i valori non validi anziché interrompere l'esecuzione, poiché la maggior parte delle impostazioni ha valori predefiniti ragionevoli. Per informazioni su come attivare la registrazione, consulta. Abilita la registrazione del codice AWS SDK for Rust
-
La maggior parte delle variabili di ambiente e delle impostazioni dei file di configurazione vengono caricate una volta all'avvio del programma. Eventuali aggiornamenti ai valori non verranno visualizzati fino al riavvio del programma.
-
Runtime Tokio
-
Tokio è un runtime asincrono per il linguaggio di programmazione SDK for Rust, esegue le attività.
async
Vedi tokio.rse docs.rs/tokio. -
L'SDK per Rust richiede un runtime asincrono. Ti consigliamo di aggiungere la seguente cassa ai tuoi progetti:
$
cargo add tokio --features=full -
La macro di
tokio::main
attributi crea un punto di ingresso principale asincrono al programma. Per utilizzare questa macro, aggiungetela alla riga che precede ilmain
metodo, come illustrato di seguito:#[tokio::main] async fn main() -> Result<(), Error> {