Nozioni fondamentali - AWS SDK for Rust

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.

I seguenti strumenti opzionali possono essere installati nell'IDE per facilitare il completamento del codice e la risoluzione dei problemi.

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'.rsestensione di file. Vedi Hello, Cargo! .

    • Cargo.tomlPossono 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, consulta cargo-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 tipo X 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 Sintassi impl delle parole chiave e 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, pulisce panic! 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.

  • 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, consulta Enum std::borrow::Cow.

    • Il tipo Arc è un puntatore intelligente Atomically Reference Counted che conta le istanze allocate. Per informazioni, consulta Struct 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 diaws-sdk-[servicename], ad esempio e. 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 chiamatoaws-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 eseguendocargo add [crateName], ad esempio. 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'useistruzione per inserire gli oggetti contenuti nelle loro casse nel campo Scope. Vedi Utilizzo di pacchetti esterni sul 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.rs e 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 il main metodo, come illustrato di seguito:

    #[tokio::main] async fn main() -> Result<(), Error> {