Farih.co.id
Home Programming Cara Membuat Aplikasi CLI Dasar di Rust

Cara Membuat Aplikasi CLI Dasar di Rust

rust foundation

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 bagi pengembang dan pengguna daya untuk berbagai kasus penggunaan, termasuk otomatisasi, skrip, dan administrasi jarak jauh.


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 Tepuk, StructOptitDan 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 direktori kerja saat ini.

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

 cargo new crypto_cli

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

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

 [dependencies]
tokio = { version = "1.15", features = ["full"] }
reqwest = { version = "0.11", features = ["json"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

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

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

 touch 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

logo coinmarketcap diatur di atas fitur bagan

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/terbaru titik akhir yang mengembalikan kutipan pasar terbaru untuk satu atau lebih cryptocurrency, Anda harus menentukan struct untuk data yang ingin Anda ekstrak dari API dan menentukan 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.

Inilah definisi struct yang mengambil file pengenal, nama, simbol, Dan mengutip data cryptocurrency yang ditentukan

 #[derive(Debug, Deserialize, Serialize)]
struct ApiResponse {
    data: Data,
}

#[derive(Debug, Deserialize, Serialize)]
struct Data {
    
    #[serde(rename = "1")]
    crypto_1: Cryptocurrency,

    #[serde(rename = "2")]
    crypto_2: Cryptocurrency,

    #[serde(rename = "3")]
    crypto_3: Cryptocurrency,

    #[serde(rename = "4")]
    crypto_4: Cryptocurrency,
}

#[derive(Debug, Deserialize, Serialize)]
struct Cryptocurrency {
    id: u32,
    name: String,
    symbol: String,
    
    quote: Quote,
}

#[derive(Debug, Deserialize, Serialize)]
struct Quote {
    USD: QuoteDetails,
}

#[derive(Debug, Deserialize, Serialize)]
struct QuoteDetails {
    price: f64,
    volume_24h: f64,
    
}

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.

 use reqwest::Client;
use reqwest::Error;

pub async fn crypto() -> Result<(), Error> {
    let client = Client::new();

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

    let params = [
        ("id", "1,2,3,4"),
        ("convert", "USD"),
    ];

    let response = client.get(url)
        .header("X-CMC_PRO_API_KEY", "YOUR API KEY HERE")
        .query(&params)
        .send().await?;
    ;

    let result: ApiResponse = serde_json::from_str(&*response.text().await?;).unwrap();

    println!("{:#?}", result);
    Ok(())
}

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 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:

 use std::env;
use crate::api::crypto;

pub async fn cli() {
    let args: Vec<String> = env::args().collect();

    if args.len() > 1 && args[1] == "crypto" {
        crypto().await.unwrap();
    } else {
        println!("Invalid command. Usage: cargo 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::main] atribut sejak utama fungsi tidak bisa asinkron di Rust.

 mod api;
mod cli;
use crate::cli::cli;

#[tokio::main]
async fn main() {
    cli().await;
}

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:

hasil dari membuat permintaan

Anda Dapat Membuat 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.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

beli jitu https://167.71.217.241/ https://188.166.210.27/ https://103.253.147.8/ https://139.59.194.132/ https://152.42.192.54/ https://152.42.187.123/ https://188.166.196.248/ https://163.47.9.78/ https://157.230.245.144/ http://68.183.96.87/ http://147.182.210.122/ http://147.182.128.234/ http://167.172.1.184/ http://157.245.5.74/ http://139.59.217.59/ http://163.47.9.16/ http://144.126.251.215/ http://139.59.217.128/ http://103.186.0.254/ http://161.35.251.176/ http://157.245.29.71/ https://170.64.254.102/ https://www.markas303.ac.id/ https://www.markas303.or.id/ https://www.markas303.sch.id/ http://103.172.205.75/ http://103.245.38.119/ http://138.197.224.231/ http://138.197.224.231/

Ad

BIJI18 BIJI18 https://goremekoop.com/ AGEN77 3DBET OBOR138 GACOR168JP YING77 RUMAH258 POHONHOKI99 ASALBET88 PARIS128 66KBET LONG111 DESA333 DEWAGACOR89 YING77
https://146.190.200.68/ https://188.166.204.36/