

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Dasar-dasar untuk AWS SDK for Rust
<a name="fundamentals"></a>

Pelajari dasar-dasar pemrograman dengan AWS SDK for Rust, seperti: dasar-dasar bahasa pemrograman Rust, informasi tentang SDK untuk peti Rust, konfigurasi proyek, dan SDK untuk penggunaan runtime Tokio oleh Rust.

## Prasyarat
<a name="prerequisites"></a>

Untuk menggunakan AWS SDK for Rust, Anda harus menginstal Rust and Cargo.
+ Instal rantai alat Rust: [https://www.rust-lang. org/tools/install](https://www.rust-lang.org/tools/install)
+ Instal `cargo-component` [alat](https://github.com/bytecodealliance/cargo-component) dengan menjalankan perintah: `cargo install cargo-component`

### Alat yang direkomendasikan:
<a name="recommended-tools"></a>

Alat opsional berikut dapat diinstal di IDE Anda untuk membantu penyelesaian kode dan pemecahan masalah.
+ Ekstensi rust-analyzer, lihat [Rust di Visual Studio Code](https://code.visualstudio.com/docs/languages/rust).
+ Pengembang Amazon Q, lihat [Menginstal ekstensi atau plugin Pengembang Amazon Q di IDE Anda](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE-setup.html).

## Dasar-dasar karat
<a name="rust-fundamentals"></a>

Berikut ini adalah beberapa dasar-dasar bahasa pemrograman Rust yang akan membantu untuk diketahui. Semua referensi untuk informasi lebih lanjut berasal dari [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html#the-rust-programming-language).
+ `Cargo.toml`adalah file konfigurasi proyek Rust standar, berisi dependensi dan beberapa metadata tentang proyek. File sumber Rust memiliki ekstensi `.rs` file. Lihat [Halo, Kargo\$1](https://doc.rust-lang.org/book/ch01-03-hello-cargo.html) .
  + `Cargo.toml`Dapat disesuaikan dengan profil, lihat [Menyesuaikan Build dengan Profil Rilis](https://doc.rust-lang.org/book/ch14-01-release-profiles.html). Profil ini sama sekali tidak terkait dan independen dari AWS penggunaan profil dalam AWS `config` file bersama. 
  + Cara umum untuk menambahkan dependensi pustaka ke proyek Anda dan file ini adalah dengan menggunakan. `cargo add` Lihat [https://doc.rust-lang.org/cargo/commands/cargo-add.html](https://doc.rust-lang.org/cargo/commands/cargo-add.html).
+ Karat memiliki struktur fungsi dasar seperti berikut ini. `let`Kata kunci mendeklarasikan variabel dan mungkin dipasangkan dengan penugasan (=). Jika Anda tidak menentukan tipe setelahnya`let`, maka kompiler akan menyimpulkan satu. Lihat [Variabel dan Mutabilitas](https://doc.rust-lang.org/book/ch03-01-variables-and-mutability.html).

  ```
  fn main() {
      let w = "world";
      println!("Hello {}!", w);
  }
  ```
+ Untuk mendeklarasikan variabel `x` dengan tipe eksplisit`T`, Rust menggunakan sintaks. `x: T` Lihat [Tipe Data](https://doc.rust-lang.org/book/ch03-02-data-types.html).
+ `struct X {}`mendefinisikan tipe `X` baru. Metode diimplementasikan pada tipe `X` struct khusus. Metode untuk tipe `X` dideklarasikan dengan blok implementasi yang diawali dengan kata kunci`impl`. Di dalam blok implementasi, `self` mengacu pada instance struct tempat metode dipanggil. Lihat [Kata Kunci `impl`](https://doc.rust-lang.org/std/keyword.impl.html) dan [Sintaks Metode](https://doc.rust-lang.org/book/ch05-03-method-syntax.html).
+ Jika tanda seru (“\$1”) mengikuti apa yang tampak sebagai definisi fungsi atau panggilan fungsi, maka kode tersebut mendefinisikan atau memanggil makro. Lihat [Makro.](https://doc.rust-lang.org/book/ch19-06-macros.html?highlight=macro#macros)
+ Di Rust, kesalahan yang tidak dapat dipulihkan diwakili oleh makro. `panic!` Ketika sebuah program bertemu dengan program `panic!` itu akan berhenti berjalan, mencetak pesan kegagalan, melepas lelah, membersihkan tumpukan, dan berhenti. Lihat Kesalahan [yang Tidak Dapat Dipulihkan](https://doc.rust-lang.org/book/ch09-01-unrecoverable-errors-with-panic.html) dengan. `panic!`
+ Rust tidak mendukung pewarisan fungsionalitas dari kelas dasar seperti bahasa pemrograman lainnya; `traits` adalah bagaimana Rust menyediakan metode yang berlebihan. Sifat mungkin dianggap secara konseptual mirip dengan antarmuka. Namun, sifat dan antarmuka sejati memiliki perbedaan dan sering digunakan secara berbeda dalam proses desain. Lihat [Sifat: Mendefinisikan Perilaku Bersama](https://doc.rust-lang.org/book/ch10-02-traits.html).
  + Polimorfisme mengacu pada kode yang mendukung fungsionalitas untuk beberapa tipe data tanpa harus menulis masing-masing. Karat mendukung polimorfisme melalui enum, sifat, dan obat generik. Lihat [Warisan sebagai Sistem Tipe dan sebagai Berbagi Kode](https://doc.rust-lang.org/book/ch17-01-what-is-oo.html?#inheritance-as-a-type-system-and-as-code-sharing).
+ Rust sangat eksplisit tentang memori. Smart pointer “adalah struktur data yang bertindak seperti pointer tetapi juga memiliki metadata dan kemampuan tambahan”. Lihat [Smart Pointer](https://doc.rust-lang.org/book/ch15-00-smart-pointers.html). 
  + Tipe `Cow` ini adalah pointer clone-on-write cerdas yang membantu mentransfer kepemilikan memori ke penelepon bila diperlukan. Lihat [https://doc.rust-lang.org/std/borrow/enum.Cow.html](https://doc.rust-lang.org/std/borrow/enum.Cow.html).
  + Tipenya `Arc` adalah penunjuk pintar Terhitung Referensi Atom yang menghitung instance yang dialokasikan. Lihat [https://doc.rust-lang.org/std/sync/struct.Arc.html](https://doc.rust-lang.org/std/sync/struct.Arc.html).
+ SDK untuk Rust sering menggunakan pola pembangun untuk membuat tipe kompleks.

## AWS SDK for Rust dasar-dasar peti
<a name="aws-sdk-crate-fundamentals"></a>
+ Peti inti utama untuk fungsionalitas SDK untuk Rust adalah. `aws-config` Ini termasuk dalam sebagian besar proyek karena menyediakan fungsionalitas untuk membaca konfigurasi dari lingkungan.

  ```
  $ cargo add aws-config
  ```
  + Jangan bingung ini dengan Layanan AWS yang disebut AWS Config. Karena itu adalah layanan, ia mengikuti konvensi standar Layanan AWS peti dan disebut`aws-sdk-config`.
+ Pustaka SDK untuk Rust dipisahkan menjadi peti pustaka yang berbeda oleh masing-masing. Layanan AWS Peti ini tersedia di [https://docs.rs/.](https://docs.rs/)
+ Layanan AWS peti mengikuti konvensi penamaan`aws-sdk-[servicename]`, seperti `aws-sdk-s3` dan`aws-sdk-dynamodb`.

## Konfigurasi proyek untuk bekerja dengan Layanan AWS
<a name="project-configuration-for-working-with-aws-services"></a>
+ Anda perlu menambahkan peti ke proyek Anda untuk setiap Layanan AWS yang Anda ingin aplikasi Anda gunakan.
+ Cara yang disarankan untuk menambahkan peti adalah menggunakan baris perintah di direktori proyek Anda dengan menjalankan`cargo add [crateName]`, seperti`cargo add aws-sdk-s3`.
  + Ini akan menambahkan baris ke proyek Anda di `Cargo.toml` bawah`[dependencies]`.
  + Secara default, ini akan menambahkan versi terbaru peti ke proyek Anda.
+ Dalam file sumber Anda, gunakan `use` pernyataan untuk membawa item dari peti mereka ke dalam ruang lingkup. Lihat [Menggunakan Paket Eksternal](https://doc.rust-lang.org/book/ch07-04-bringing-paths-into-scope-with-the-use-keyword.html#using-external-packages) di situs web Bahasa Pemrograman Rust.
  + Nama peti sering diberi tanda hubung, tetapi tanda hubung diubah menjadi garis bawah saat benar-benar menggunakan peti. Misalnya, `aws-config` peti digunakan dalam `use` pernyataan kode sebagai:`use aws_config`.
+ Konfigurasi adalah topik yang kompleks. Konfigurasi dapat terjadi secara langsung dalam kode, atau ditentukan secara eksternal dalam variabel lingkungan atau file konfigurasi. Untuk informasi selengkapnya, lihat [Mengkonfigurasi klien AWS SDK for Rust layanan secara eksternal](config-external.md).
  + Saat SDK memuat konfigurasi Anda, nilai yang tidak valid dicatat alih-alih menghentikan eksekusi karena sebagian besar pengaturan memiliki default yang wajar. Untuk mempelajari cara mengaktifkan logging, lihat[Mengkonfigurasi dan menggunakan logging di AWS SDK untuk Rust](logging.md).
  + Sebagian besar variabel lingkungan dan pengaturan file konfigurasi dimuat sekali ketika program Anda dimulai. Setiap pembaruan pada nilai tidak akan terlihat sampai Anda memulai ulang program Anda.

## Runtime Tokio
<a name="tokio-runtime"></a>
+ Tokio adalah runtime asinkron untuk SDK untuk bahasa pemrograman Rust, ia menjalankan tugas. `async` [Lihat [tokio.rs dan docs.rs/tokio](http://tokio.rs/).](http://docs.rs/tokio)
+ SDK untuk Rust memerlukan runtime async. Kami menyarankan Anda menambahkan peti berikut ke proyek Anda:

  ```
  $ cargo add tokio --features=full
  ```
+ `tokio::main`Atribut makro menciptakan titik masuk utama async ke program Anda. Untuk menggunakan makro ini, tambahkan ke baris sebelum `main` metode Anda, seperti yang ditunjukkan pada berikut ini:

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