Rugina este una dintre cele mai bune alegeri pentru construirea de aplicații CLI. Începeți prin a crea o aplicație de bază pentru preluarea datelor cripto.
CLI (Command Line Interfaces) este crucială în dezvoltarea de software și administrarea sistemului. CLI-urile sunt programe ușoare bazate pe text care oferă o modalitate simplificată de a interacționa cu computere care sunt favorabile pentru dezvoltatori și utilizatori cu putere deopotrivă pentru mai multe cazuri de utilizare, inclusiv automatizare, scriptare și distanță administrare.
Rust câștigă popularitate pentru construirea de aplicații CLI. Rust oferă funcții puternice, cum ar fi controlul fin asupra alocării memoriei și siguranța firelor, siguranța memoriei, concurența și paralelismul pe care le puteți folosi pentru a crea aplicații CLI puternice. Rust se mândrește, de asemenea, cu un ecosistem înfloritor de biblioteci și cadre adaptate în mod explicit pentru construirea de aplicații CLI.
Noțiuni introductive de a construi aplicații CLI cu Rust
Există mai multe pachete terță parte pentru construirea de aplicații CLI în Rust, inclusiv Bate, StructOpt, și Termion lăzi. Aceste lăzi oferă caracteristicile de care aveți nevoie pentru a dezvolta instrumente CLI moderne.
De asemenea, Rust oferă un std:: env crate în biblioteca sa standard care oferă funcționalitate pentru lucrul cu variabilele de mediu și argumentele din linia de comandă. The std:: env crate oferă o gamă largă de metode și tipuri de lucru cu medii într-un mod independent de platformă.
Folosind std:: env ladă, programele dvs. Rust pot interacționa cu mediul și își pot adapta comportamentul pe baza diverși factori, inclusiv variabilele de mediu, argumentele liniei de comandă și funcționarea curentă director.
Rulați această comandă pentru a crea un nou proiect Rust pentru aplicația dvs. CLI cu Cargo, instrumentul de gestionare a pachetelor Rust:
cargo new crypto_cli
Veți învăța cum să construiți o aplicație CLI care apelează API-ul Coinmarketcap cu Reqwest ladă care oferă caracteristici pentru realizarea Solicitări HTTP în Rust.
Deschide-ți Marfă.toml fișier și adăugați reqwest și tokio lăzi la dependențele proiectului dvs.:
[dependențe]
tokio = { versiunea = "1.15", caracteristici = ["deplin"] }
reqwest = { versiunea = "0.11", caracteristici = ["json"] }
serde = { versiunea = "1.0", caracteristici = ["deriva"] }
serde_json = "1.0"
The tokio crate este o bibliotecă de rulare asincronă cu care interoperează reqwest pentru programare asincronă. The serde și serde_json cutii ajuta cu Serializare și deserializare JSON.
În src folderul proiectului dvs. Rust, creați api.rs și cli.rs fișierele în care veți implementa apelul API și funcționalitățile CLI.
atingeți src/api.rs src/cli.rs
Comanda ar trebui să creeze fișierele dorite în directorul de lucru al proiectului. După ce scrieți funcționalitățile în fișierele lor desemnate pentru separarea preocupărilor, veți apela funcțiile din fișierul principal funcția în dvs principal.rs fişier.
Efectuarea de solicitări API către API-ul CoinMarketCap cu Reqwest
API-ul CoinMarketCap vă permite să accesați și să integrați datele criptomonedei în aplicațiile lor. API-ul oferă puncte finale pentru listări, cotații de piață, informații de schimb, instrumente de conversie, date istorice și metadate.
Când vă conectați, vă puteți înscrie pentru un cont CoinMarketCap și puteți prelua cheia API pe pagina dezvoltatorului Coinmarketcap. De asemenea, puteți consulta documentația pentru instrucțiuni detaliate și limitele de rată.
Pentru a face o solicitare API către /v2/cryptocurrency/quotes/latest punctul final care returnează cea mai recentă cotație de piață pentru una sau mai multe criptomonede, va trebui să definiți structuri pentru datele pe care doriți să le extrageți din API și specificați atributele cu trăsătura derivată a lui Serde.
Apoi puteți solicita un API la punctul final și puteți utiliza serde_json crate pentru a deserializa datele JSON în structura pentru operațiuni mai ușoare pe tipuri de date Rust.
Iată definiția structurii care recuperează id, Nume, simbol, și citat datele criptomonedelor specificate
#[derivare (depanare, deserializare, serializare)]
structApiResponse {
date: date,
}#[derivare (depanare, deserializare, serializare)]
structDate {
// Adăugați câmpuri de care aveți nevoie din obiectul de date
#[serde (redenumiți = "1")]
crypto_1: Criptomonedă,#[serde (redenumiți = "2")]
crypto_2: Criptomonedă,#[serde (redenumiți = "3")]
crypto_3: Criptomonedă,#[serde (redenumiți = "4")]
crypto_4: Criptomonedă,
}#[derivare (depanare, deserializare, serializare)]
structCriptomonedă {
id: u32,
Nume: Şir,
simbol: Şir,
// Adăugați alte câmpuri după cum este necesar
citat: citat,
}#[derivare (depanare, deserializare, serializare)]
structCitat {
USD: Detalii cotație,
}
#[derivare (depanare, deserializare, serializare)]
structCitat Detalii {
Preț: f64,
volum_24h: f64,
// Adăugați alte câmpuri după cum este necesar
}
API-ul returnează date care pot fi mai multe decât aveți nevoie, dar cu serde ladă, puteți specifica datele exacte de care aveți nevoie, așa cum se arată mai sus.
Acum, puteți solicita punctul final cu Reqwest creând un nou client care face cererea GET cu parametrii necesari.
utilizare reqwest:: Client;
utilizare reqwest:: Eroare;cârciumăasincronfncripto() -> Rezultat {
lăsa client = Client:: nou();lăsa url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";
lăsa parametri = [
("id", "1,2,3,4"),
("convertit", "USD"), // Convertiți valorile de piață în USD
];lăsa răspuns = client.get (url)
.antet(„X-CMC_PRO_API_KEY”, „CHEIA DVS. API AICI”)
.query(¶ms)
.trimite().așteaptă?;
;lăsa rezultat: ApiResponse = serde_json:: from_str(&*response.text().așteaptă?;).unwrap();
println!("{:#?}", rezultat);
Bine(())
}
The cripto funcția este o funcție asincronă activată pentru tokio care solicită punctul final cu client.get funcția după crearea unei instanțe client cu Client:: nou metodă.
The antet apelul de funcție pe instanța generatorului de cereri preia cheia API, the interogare funcția preia parametrii și trimite funcția trimite cererea.
The cripto funcția deserializează răspunsul JSON cu serde_json din_str metodă care preia un șir JSON.
În cele din urmă, cel cripto funcția imprimă rezultatul operației de deserializare pe consolă.
Preluarea argumentelor CLI în Rust
În dumneavoastră cli.rs fișier, veți importa fișierul cripto funcția de la api.rs fișier și apelați funcția dacă utilizatorul specifică „crypto” ca argument pentru rularea proiectului cu rulare de marfă comanda.
Iată cum puteți utiliza std:: env funcție pentru a prelua argumentul din linia de comandă:
utilizare std:: env;
utilizare crate:: api:: crypto;cârciumăasincronfncli() {
lăsa argumente: Vec<Şir> = env:: args().collect();
dacă args.len() > 1 && argumente[1] == "cripto" {
cripto().așteaptă.unwrap();
} altfel {
println!("Comandă invalidă. Utilizare: cargo run crypto");
}
}
The cli funcția preia toate argumentele din linia de comandă cu env:: args().collect() funcţie. The dacă-altfel declarația verifică dacă există un argument suplimentar, „cripto”. Dacă condiționalul evaluează adevărat, atunci cli funcția apelează cripto funcţie; în caz contrar, cel cli funcția imprimă un șir pe consolă.
În cele din urmă, puteți apela cli funcţia în principal funcţie. Trebuie să adăugați #[tokio:: principal] atribut din moment ce principal funcțiile nu pot fi asincrone în Rust.
mod api;
mod cli;
utilizare crate:: cli:: cli;
#[tokio:: principal]
asincronfnprincipal() {
cli().așteaptă;
}
The principal funcția apelează cli funcţionează cu așteaptă funcție care suspendă execuția până la rezultatul a Viitor este gata.
Iată rezultatul rulării cargo run crypto comanda:
Puteți construi aplicații web sofisticate în Rust
Rust este un limbaj de programare versatil cu multe cazuri de utilizare și aplicații. Puteți utiliza cadre web terțe precum Actix, Rocket și Warp pentru a construi aplicații web în Rust. Aceste cadre oferă majoritatea funcționalităților necesare pentru a construi aplicații web moderne.