Rust je jedan od najboljih izbora za izradu CLI aplikacija. Započnite izgradnjom osnovne aplikacije za dohvaćanje kripto podataka.

CLI (Command Line Interfaces) ključan je u razvoju softvera i administraciji sustava. CLI-ovi su lagani tekstualni programi koji nude pojednostavljen način interakcije s računalima koja su povoljna za programere i napredne korisnike za višestruke slučajeve upotrebe, uključujući automatizaciju, skriptiranje i daljinsko korištenje uprave.

Rust postaje sve popularniji za izradu CLI aplikacija. Rust pruža moćne značajke kao što je fina kontrola nad dodjelom memorije i sigurnošću niti, sigurnošću memorije, konkurentnošću i paralelizmom koje možete iskoristiti za izradu moćnih CLI aplikacija. Rust se također može pohvaliti uspješnim ekosustavom biblioteka i okvira koji su eksplicitno skrojeni za izgradnju CLI aplikacija.

Početak izrade CLI aplikacija s Rustom

Postoji nekoliko paketa trećih strana za izradu CLI aplikacija u Rustu, uključujući Pljesnuti, StructOpt, i Termion sanduke. Ovi sanduci pružaju značajke koje su vam potrebne za razvoj modernih CLI alata.

instagram viewer

Također, Rust pruža a std:: env sanduk u svojoj standardnoj biblioteci koja pruža funkcionalnost za rad s varijablama okruženja i argumentima naredbenog retka. The std:: env sanduk nudi niz metoda i vrsta za rad s okruženjima na način neovisan o platformi.

Koristiti std:: env sanduk, vaši Rust programi mogu komunicirati s okolinom i prilagoditi svoje ponašanje na temelju razne čimbenike, uključujući varijable okruženja, argumente naredbenog retka i trenutni rad imenik.

Pokrenite ovu naredbu za stvaranje novog Rust projekta za vašu CLI aplikaciju s Cargom, Rustovim alatom za upravljanje paketima:

teret novi crypto_cli

Naučit ćete kako izraditi CLI aplikaciju koja poziva Coinmarketcapov API s Reqwest sanduk koji pruža značajke za izradu HTTP zahtjevi u Rustu.

Otvori svoju Teret.toml datoteku i dodajte reqwest i tokio kutije ovisnosti vašeg projekta:

[ovisnosti]
tokio = { verzija = "1.15", karakteristike = ["pun"] }
reqwest = { verzija = "0.11", karakteristike = ["json"] }
serde = { verzija = "1.0", karakteristike = ["izvesti"] }
serde_json = "1.0"

The tokio sanduk je asinkrona knjižnica za vrijeme izvođenja koja interoperira s reqwest za asinkrono programiranje. The serde i serde_json sanduci pomoći s JSON serijalizacija i deserijalizacija.

u src mapu vašeg Rust projekta, kreirajte api.rs i cli.rs datoteke u kojima ćete implementirati API poziv i CLI funkcije.

dodir src/api.rs src/cli.rs

Naredba bi trebala stvoriti željene datoteke u radnom direktoriju vašeg projekta. Nakon što napišete funkcije u njihove određene datoteke za odvajanje problema, pozvati ćete funkcije u glavni funkcija u vašem glavni.rs datoteka.

Upućivanje API zahtjeva za CoinMarketCap API s Reqwestom

CoinMarketCap API omogućuje vam pristup i integraciju podataka o kriptovaluti u njihove aplikacije. API pruža krajnje točke za popise, tržišne kotacije, informacije o razmjeni, alate za konverziju, povijesne podatke i metapodatke.

Kada se prijavite, možete se prijaviti za CoinMarketCap račun i dohvatiti svoj API ključ na stranici razvojnog programera Coinmarketcapa. Također možete pogledati dokumentaciju za detaljne upute i ograničenja stope.

Za upućivanje API zahtjeva na /v2/cryptocurrency/quotes/latest krajnju točku koja vraća najnoviju tržišnu kotaciju za jednu ili više kriptovaluta, morat ćete definirati strukture za podatke koje želite izvući iz API-ja i navedite atribute sa Serdeovom značajkom izvođenja.

Zatim možete zatražiti API do krajnje točke i koristiti serde_json sanduk za deserijalizaciju JSON podataka u strukturu za lakše operacije na Rust tipovima podataka.

Evo definicija strukture koji vraća iskaznica, Ime, simbol, i citat podatke o navedenim kriptovalutama

#[derive (Debug, Deserialize, Serialize)]
strukturiratiApiResponse {
podaci: podaci,
}

#[derive (Debug, Deserialize, Serialize)]
strukturiratiPodaci {
// Dodajte polja koja su vam potrebna iz podatkovnog objekta
#[serde (preimenuj = "1")]
crypto_1: kriptovaluta,

#[serde (preimenuj = "2")]
crypto_2: kriptovaluta,

#[serde (preimenuj = "3")]
crypto_3: kriptovaluta,

#[serde (preimenuj = "4")]
crypto_4: kriptovaluta,
}

#[derive (Debug, Deserialize, Serialize)]
strukturiratiKriptovaluta {
iskaznica: u32,
Ime: Niz,
simbol: Niz,
// Dodajte ostala polja po potrebi
Citat: Citat,
}

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

#[derive (Debug, Deserialize, Serialize)]
strukturiratiQuoteDetails {
cijena: f64,
volumen_24h: f64,
// Dodajte ostala polja po potrebi
}

API vraća podatke koji mogu biti više nego što vam je potrebno, ali s serde sanduk, možete navesti točne podatke koji su vam potrebni, kao što je prikazano gore.

Sada možete zatražiti krajnju točku s Reqwestom stvaranjem novog klijenta koji šalje GET zahtjev sa potrebnim parametrima.

koristiti reqwest:: klijent;
koristiti reqwest:: Greška;

pubasinkronifnkripto() -> Proizlaziti {
neka klijent = Klijent:: novi();

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

neka parametri = [
("iskaznica", "1,2,3,4"),
("Pretvoriti", "USD"), // Pretvorite tržišne vrijednosti u USD
];

neka odgovor = client.get (url)
.Zaglavlje("X-CMC_PRO_API_KEY", "VAŠ API KLJUČ OVDJE")
.upit(&parametri)
.poslati().čekati?;
;

neka rezultat: ApiResponse = serde_json:: from_str(&*response.text().čekati?;).razmotati();

println!("{:#?}", rezultat);
U redu(())
}

The kripto funkcija je asinkrona funkcija omogućena za Tokio koja zahtijeva krajnju točku s klijent.dobiti funkciju nakon stvaranja klijentske instance s Klijent:: novo metoda.

The Zaglavlje poziv funkcije na instanci graditelja zahtjeva uzima vaš API ključ, upit funkcija preuzima parametre, a poslati funkcija šalje zahtjev.

The kripto funkcija deserijalizira JSON odgovor sa serde_json-om from_str metoda koja uzima JSON niz.

Konačno, kripto funkcija ispisuje rezultat operacije deserijalizacije na konzolu.

Dohvaćanje CLI argumenata u Rustu

U vašem cli.rs datoteku, uvest ćete kripto funkcija iz api.rs datoteku i pozovite funkciju ako korisnik unese "crypto" kao argument za pokretanje projekta s vožnja tereta naredba.

Evo kako možete koristiti std:: env funkcija za dohvaćanje argumenta iz naredbenog retka:

koristiti std:: env;
koristiti sanduk:: api:: kripto;

pubasinkronifncli() {
neka args: Vec<Niz> = env:: args().collect();

ako args.len() > 1 && argumenti[1] == "kripto" {
kripto().čekati.razmotati();
} drugo {
println!("Nevažeća naredba. Upotreba: cargo run kripto");
}
}

The cli funkcija dohvaća sve argumente iz naredbenog retka s env:: args().collect() funkcija. The ako-drugače izjava provjerava postoji li dodatni argument, "crypto". Ako uvjet procjenjuje istinito, cli funkcija poziva kripto funkcija; inače, cli funkcija ispisuje niz na konzolu.

Konačno, možete nazvati cli funkcija u glavni funkcija. Morate dodati #[tokio:: glavni] atribut jer glavni funkcije ne mogu biti asinkrone u Rustu.

mod api;
mod cli;
koristiti sanduk:: cli:: cli;

#[tokio:: glavni]
asinkronifnglavni() {
cli().čekati;
}

The glavni funkcija poziva cli funkcija s čekati funkcija koja obustavlja izvršenje do rezultata a Budućnost je spreman.

Ovo je rezultat pokretanja cargo run kripto naredba:

Možete izraditi sofisticirane web aplikacije u Rustu

Rust je svestran programski jezik s mnogo slučajeva upotrebe i aplikacija. Možete iskoristiti web okvire trećih strana kao što su Actix, Rocket i Warp za izradu web aplikacija u Rustu. Ti okviri pružaju većinu funkcija potrebnih za izradu modernih web-aplikacija.