Rust je ena najboljših izbir za izdelavo aplikacij CLI. Začnite z izdelavo osnovne aplikacije za pridobivanje kripto podatkov.

CLI (vmesnik ukazne vrstice) je ključnega pomena pri razvoju programske opreme in sistemski administraciji. CLI so lahki besedilni programi, ki ponujajo poenostavljen način interakcije z računalniki, ki so ugodni za razvijalce in izkušene uporabnike za različne primere uporabe, vključno z avtomatizacijo, skriptiranjem in na daljavo administracija.

Rust postaja vse bolj priljubljen pri gradnji aplikacij CLI. Rust ponuja zmogljive funkcije, kot je natančen nadzor nad dodeljevanjem pomnilnika in varnostjo niti, varnostjo pomnilnika, sočasnostjo in vzporednostjo, ki jih lahko uporabite za izdelavo zmogljivih aplikacij CLI. Rust se ponaša tudi z uspešnim ekosistemom knjižnic in ogrodij, ki so izrecno prilagojeni za gradnjo aplikacij CLI.

Kako začeti ustvarjati aplikacije CLI z Rust

Obstaja več paketov tretjih oseb za gradnjo aplikacij CLI v Rust, vključno s ploskati, StructOpt

instagram viewer
, in Termion zaboji. Ti zaboji zagotavljajo funkcije, ki jih potrebujete za razvoj sodobnih orodij CLI.

Prav tako Rust zagotavlja a std:: env zaboj v svoji standardni knjižnici, ki nudi funkcionalnost za delo s spremenljivkami okolja in argumenti ukazne vrstice. The std:: env zaboj ponuja vrsto metod in tipov za delo z okolji na način, neodvisen od platforme.

Uporabljati std:: env zaboj, lahko vaši programi Rust komunicirajo z okoljem in prilagodijo svoje vedenje na podlagi različni dejavniki, vključno s spremenljivkami okolja, argumenti ukazne vrstice in trenutnim delovanjem imenik.

Zaženite ta ukaz, da ustvarite nov projekt Rust za vašo aplikacijo CLI s Cargo, Rustovim orodjem za upravljanje paketov:

tovor nov crypto_cli

Naučili se boste, kako zgraditi aplikacijo CLI, ki kliče Coinmarketcapov API z Reqwest zaboj, ki nudi funkcije za izdelavo Zahteve HTTP v Rustu.

Odpri svojo Cargo.toml datoteko in dodajte reqwest in tokio zaboji v odvisnosti vašega projekta:

[odvisnosti]
tokio = { različica = "1.15", funkcije = ["poln"] }
reqwest = { različica = "0.11", funkcije = ["json"] }
serde = { različica = "1.0", funkcije = ["izpeljati"] }
serde_json = "1.0"

The tokio crate je asinhrona izvajalna knjižnica, ki deluje z reqwest za asinhrono programiranje. The serde in serde_json zaboji pomoč pri Serializacija in deserializacija JSON.

V src mapo vašega projekta Rust, ustvarite api.rs in cli.rs datoteke, kjer boste implementirali funkcije klica API in CLI.

dotik src/api.rs src/cli.rs

Ukaz bi moral ustvariti želene datoteke v delovnem imeniku vašega projekta. Po zapisu funkcij v njihove določene datoteke za ločevanje pomislekov, boste poklicali funkcije v glavni funkcijo v vašem main.rs mapa.

Izdelava zahtev API za API CoinMarketCap z Reqwest

API CoinMarketCap omogoča dostop do podatkov o kriptovalutah in njihovo integracijo v njihove aplikacije. API zagotavlja končne točke za kotacije, tržne kotacije, informacije o borzi, orodja za pretvorbo, zgodovinske podatke in metapodatke.

Ko se prijavite, se lahko prijavite za račun CoinMarketCap in pridobite svoj ključ API na strani za razvijalce Coinmarketcap. Za podrobna navodila in omejitve hitrosti si lahko ogledate tudi dokumentacijo.

Če želite narediti zahtevo API za /v2/cryptocurrency/quotes/latest končna točka, ki vrne najnovejšo tržno ponudbo za eno ali več kriptovalut, boste morali definirati struktur za podatke, ki jih želite izvleči iz API-ja, in določite atribute s Serdejevo izpeljano lastnostjo.

Nato lahko zahtevate API do končne točke in uporabite serde_json zaboj za deserializacijo podatkov JSON v strukturo za lažje delovanje na tipih podatkov Rust.

Tukaj je definicija strukture ki pridobi id, ime, simbol, in kvota podatke navedenih kriptovalut

#[izpelji (razhroščevanje, deserializacija, serializacija)]
structApiResponse {
podatki: podatki,
}

#[izpelji (razhroščevanje, deserializacija, serializacija)]
structpodatki {
// Dodajte polja, ki jih potrebujete iz podatkovnega 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,
}

#[izpelji (razhroščevanje, deserializacija, serializacija)]
structKriptovaluta {
id: u32,
ime: Vrvica,
simbol: Vrvica,
// Po potrebi dodajte druga polja
citat: Citat,
}

#[izpelji (razhroščevanje, deserializacija, serializacija)]
structKvota {
USD: QuoteDetails,
}

#[izpelji (razhroščevanje, deserializacija, serializacija)]
structQuoteDetails {
cena: f64,
volumen_24h: f64,
// Po potrebi dodajte druga polja
}

API vrne podatke, ki jih je morda več, kot jih potrebujete, vendar z serde zaboj, lahko določite natančne podatke, ki jih potrebujete, kot je prikazano zgoraj.

Zdaj lahko zahtevate končno točko z Reqwestom, tako da ustvarite novega odjemalca, ki naredi zahtevo GET z zahtevanimi parametri.

uporaba reqwest:: odjemalec;
uporaba reqwest:: Napaka;

pubasinhfnkripto() -> Rezultat {
pustiti odjemalec = odjemalec:: novo();

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

pustiti params = [
("id", "1,2,3,4"),
("Pretvorba", "AMERIŠKI DOLAR"), // Pretvarjanje tržnih vrednosti v USD
];

pustiti odgovor = client.get (url)
.header("X-CMC_PRO_API_KEY", "VAŠ API KLJUČ TUKAJ")
.query(&params)
.pošlji().čakati?;
;

pustiti rezultat: ApiResponse = serde_json:: from_str(&*response.text().čakati?;).unwrap();

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

The kripto funkcija je asinhrona funkcija, ki jo podpira Tokio in zahteva končno točko z client.get funkcijo po ustvarjanju odjemalskega primerka z Naročnik:: nov metoda.

The glava klic funkcije na primerku graditelja zahtev prevzame vaš ključ API, poizvedbo funkcija sprejme parametre in poslati funkcija pošlje zahtevo.

The kripto deserializira odgovor JSON s serde_json from_str metoda, ki sprejme niz JSON.

Končno, kripto funkcija natisne rezultat operacije deserializacije na konzolo.

Pridobivanje argumentov CLI v Rust

V vašem cli.rs datoteko, boste uvozili kripto funkcijo od api.rs datoteko in pokličite funkcijo, če uporabnik vnese »crypto« kot argument za izvajanje projekta z vožnja tovora ukaz.

Tukaj je opisano, kako lahko uporabite std:: env funkcija za pridobivanje argumenta iz ukazne vrstice:

uporaba std:: env;
uporaba zaboj:: api:: kripto;

pubasinhfncli() {
pustiti argumenti: Vec<Vrvica> = env:: args().collect();

če args.len() > 1 && argumenti [1] == "kripto" {
kripto().čakati.unwrap();
} drugače {
println!("Neveljaven ukaz. Uporaba: cargo run crypto");
}
}

The cli funkcija pridobi vse argumente iz ukazne vrstice z env:: args().collect() funkcijo. The če potem stavek preveri, ali obstaja dodaten argument, "crypto". Če pogojnik oceni resnično, je cli funkcija pokliče kripto funkcija; sicer pa cli funkcija natisne niz na konzolo.

Končno lahko pokličete cli funkcijo v glavni funkcijo. Dodati morate #[tokio:: main] atribut odkar glavni funkcije v Rustu ne morejo biti asinhrone.

mod api;
mod cli;
uporaba zaboj:: cli:: cli;

#[tokio:: main]
asinhfnglavni() {
cli().čakati;
}

The glavni funkcija pokliče cli funkcijo z čakati funkcija, ki začasno ustavi izvajanje, dokler ni rezultat a Prihodnost je pripravljen.

Tukaj je rezultat izvajanja cargo run kripto ukaz:

V Rustu lahko sestavite prefinjene spletne aplikacije

Rust je vsestranski programski jezik s številnimi primeri uporabe in aplikacijami. Za izdelavo spletnih aplikacij v Rust lahko uporabite spletna ogrodja tretjih oseb, kot so Actix, Rocket in Warp. Ta ogrodja zagotavljajo večino funkcij, potrebnih za izdelavo sodobnih spletnih aplikacij.