Karat adalah salah satu pilihan terbaik untuk membangun aplikasi CLI. Mulailah dengan membuat aplikasi pengambil data crypto dasar.

CLI (Command Line Interfaces) sangat penting dalam pengembangan perangkat lunak dan administrasi sistem. CLI adalah program berbasis teks ringan yang menawarkan cara yang efisien untuk berinteraksi dengan komputer yang menguntungkan untuk pengembang dan pengguna yang kuat untuk beberapa kasus penggunaan, termasuk otomatisasi, skrip, dan jarak jauh administrasi.

Rust semakin populer untuk membangun aplikasi CLI. Rust menyediakan fitur canggih seperti kontrol halus atas alokasi memori dan keamanan thread, keamanan memori, konkurensi, dan paralelisme yang dapat Anda manfaatkan untuk membangun aplikasi CLI yang kuat. Rust juga membanggakan ekosistem perpustakaan dan kerangka kerja yang berkembang pesat yang dirancang secara eksplisit untuk membangun aplikasi CLI.

Memulai Membangun Aplikasi CLI Dengan Rust

Ada beberapa paket pihak ketiga untuk membuat aplikasi CLI di Rust, termasuk

instagram viewer
Tepuk, StructOptit, Dan Istilah peti. Peti ini menyediakan fitur yang Anda butuhkan untuk mengembangkan alat CLI modern.

Juga, Rust menyediakan a std:: env peti di pustaka standarnya yang menyediakan fungsionalitas untuk bekerja dengan variabel lingkungan dan argumen baris perintah. Itu std:: env peti menawarkan berbagai metode dan jenis untuk bekerja dengan lingkungan dengan cara platform-independen.

Menggunakan std:: env peti, program Rust Anda dapat berinteraksi dengan lingkungan dan menyesuaikan perilakunya berdasarkan berbagai faktor, termasuk variabel lingkungan, argumen baris perintah, dan pekerjaan saat ini direktori.

Jalankan perintah ini untuk membuat proyek Rust baru untuk aplikasi CLI Anda dengan Cargo, alat manajemen paket Rust:

kargo crypto_cli baru

Anda akan belajar cara membuat aplikasi CLI yang memanggil API Coinmarketcap dengan Reqwest peti yang menyediakan fitur untuk pembuatan Permintaan HTTP di Rust.

Bukalah Kargo.toml file dan menambahkan reqwest Dan tokio peti ke dependensi proyek Anda:

[ketergantungan]
tokio = { versi = "1.15", fitur = ["penuh"] }
reqwest = { versi = "0.11", fitur = ["json"] }
serde = { versi = "1.0", fitur = ["memperoleh"] }
serde_json = "1.0"

Itu tokio peti adalah perpustakaan runtime asinkron yang beroperasi dengan reqwest untuk pemrograman asinkron. Itu serde Dan serde_json bantuan peti Serialisasi dan deserialisasi JSON.

Dalam src folder proyek Rust Anda, buat api.rs Dan cli.rs file tempat Anda akan mengimplementasikan panggilan API dan fungsi CLI.

sentuh src/api.rs src/cli.rs

Perintah harus membuat file yang diinginkan di direktori kerja proyek Anda. Setelah menulis fungsi di file yang ditunjuk untuk pemisahan masalah, Anda akan memanggil fungsi di utama berfungsi di Anda main.rs mengajukan.

Membuat Permintaan API ke API CoinMarketCap Dengan Reqwest

API CoinMarketCap memungkinkan Anda untuk mengakses dan mengintegrasikan data cryptocurrency ke dalam aplikasi mereka. API menyediakan titik akhir untuk daftar, kutipan pasar, informasi pertukaran, alat konversi, data historis, dan metadata.

Saat Anda masuk, Anda dapat mendaftar untuk akun CoinMarketCap dan mengambil kunci API Anda di halaman pengembang Coinmarketcap. Anda juga dapat merujuk ke dokumentasi untuk instruksi terperinci dan batas tarif.

Untuk membuat permintaan API ke /v2/cryptocurrency/quotes/latest titik akhir yang mengembalikan kuotasi pasar terbaru untuk satu atau beberapa mata uang kripto, Anda harus menentukan struct untuk data yang ingin Anda ekstrak dari API dan tentukan atribut dengan sifat turunan Serde.

Kemudian Anda dapat meminta API ke titik akhir dan menggunakan serde_json crate untuk membatalkan serialisasi data JSON ke dalam struct untuk pengoperasian yang lebih mudah pada tipe data Rust.

Ini dia definisi struktur yang mengambil pengenal, nama, simbol, Dan mengutip data cryptocurrency yang ditentukan

#[turunkan (Debug, Deserialisasi, Serialisasi)]
structApiResponse {
data: data,
}

#[turunkan (Debug, Deserialisasi, Serialisasi)]
structData {
// Tambahkan bidang yang Anda butuhkan dari objek data
#[serde (ganti nama = "1")]
crypto_1: Mata uang kripto,

#[serde (ganti nama = "2")]
crypto_2: Mata uang kripto,

#[serde (ganti nama = "3")]
crypto_3: Mata uang kripto,

#[serde (ganti nama = "4")]
crypto_4: Mata uang kripto,
}

#[turunkan (Debug, Deserialisasi, Serialisasi)]
structMata uang kripto {
pengenal: u32,
nama: Rangkaian,
simbol: Rangkaian,
// Tambahkan bidang lain sesuai kebutuhan
kutipan: kutipan,
}

#[turunkan (Debug, Deserialisasi, Serialisasi)]
structMengutip {
USD: Detail Kutipan,
}

#[turunkan (Debug, Deserialisasi, Serialisasi)]
structDetail Kutipan {
harga: f64,
volume_24j: f64,
// Tambahkan bidang lain sesuai kebutuhan
}

API mengembalikan data yang mungkin lebih dari yang Anda butuhkan, tetapi dengan serde peti, Anda dapat menentukan data persis yang Anda butuhkan, seperti yang ditunjukkan di atas.

Sekarang, Anda dapat meminta titik akhir dengan Reqwest dengan membuat klien baru yang membuat permintaan GET dengan parameter yang diperlukan.

menggunakan reqwest:: Klien;
menggunakan reqwest:: Kesalahan;

pubasinkronfncrypto() -> Hasil {
membiarkan klien = Klien:: baru();

membiarkan url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";

membiarkan parameter = [
("pengenal", "1,2,3,4"),
("mengubah", "USD"), // Ubah nilai pasar menjadi USD
];

membiarkan respon = client.get (url)
.tajuk("X-CMC_PRO_API_KEY", "KUNCI API ANDA DI SINI")
.query(&params)
.mengirim().menunggu?;
;

membiarkan hasil: ApiResponse = serde_json:: from_str(&*response.text().menunggu?;).membuka();

cetak!("{:#?}", hasil);
Oke(())
}

Itu crypto function adalah fungsi asinkron berkemampuan tokio yang meminta titik akhir dengan klien.dapatkan berfungsi setelah membuat instance klien dengan Klien:: baru metode.

Itu tajuk panggilan fungsi pada instance pembuat permintaan mengambil kunci API Anda, itu pertanyaan fungsi mengambil parameter, dan mengirim fungsi mengirimkan permintaan.

Itu crypto function deserializes respon JSON dengan serde_json's from_str metode yang menggunakan string JSON.

Akhirnya, crypto fungsi mencetak hasil operasi deserialisasi ke konsol.

Mengambil Argumen CLI di Rust

Di Anda cli.rs file, Anda akan mengimpor file crypto fungsi dari api.rs file dan panggil fungsi jika pengguna memilih "crypto" sebagai argumen untuk menjalankan proyek dengan lari kargo memerintah.

Inilah cara Anda dapat menggunakan std:: env berfungsi untuk mengambil argumen dari baris perintah:

menggunakan std:: env;
menggunakan peti:: api:: crypto;

pubasinkronfnkl() {
membiarkan argumen: Vec<Rangkaian> = env:: args().collect();

jika args.len() > 1 && argumen[1] == "kripto" {
kripto().menunggu.membuka();
} kalau tidak {
cetak!("Perintah tidak sah. Penggunaan: crypto run crypto");
}
}

Itu kl fungsi mengambil semua argumen dari baris perintah dengan env:: args().collect() fungsi. Itu jika-lain pernyataan memeriksa apakah ada argumen tambahan, "crypto". Jika kondisional bernilai benar, maka kl fungsi memanggil crypto fungsi; jika tidak, the kl fungsi mencetak string ke konsol.

Akhirnya, Anda dapat memanggil kl berfungsi di utama fungsi. Anda harus menambahkan #[tokio:: utama] atribut sejak utama fungsi tidak bisa asinkron di Rust.

mod api;
mod klise;
menggunakan peti:: cli:: cli;

#[tokio:: utama]
asinkronfnutama() {
cli().menunggu;
}

Itu utama fungsi memanggil kl berfungsi dengan menunggu fungsi yang menangguhkan eksekusi hingga hasil a Masa depan siap.

Inilah hasil dari menjalankan crypto menjalankan kargo memerintah:

Anda Dapat Membangun Aplikasi Web Canggih di Rust

Rust adalah bahasa pemrograman serbaguna dengan banyak kasus penggunaan dan aplikasi. Anda dapat memanfaatkan kerangka kerja web pihak ketiga seperti Actix, Rocket, dan Warp untuk membangun aplikasi web di Rust. Kerangka kerja ini menyediakan sebagian besar fungsi yang diperlukan untuk membuat aplikasi web modern.