Rūsa ir viena no labākajām izvēlēm CLI lietojumprogrammu veidošanai. Sāciet darbu, izveidojot pamata kriptovalūtu datu ienešanas lietojumprogrammu.

CLI (Command Line Interfaces) ir ļoti svarīga programmatūras izstrādē un sistēmu administrēšanā. CLI ir vieglas teksta programmas, kas piedāvā racionalizētu veidu, kā mijiedarboties ar datoriem, kas ir labvēlīgi gan izstrādātājiem, gan pieredzējušiem lietotājiem vairākos lietošanas gadījumos, tostarp automatizācijai, skriptēšanai un tālvadībai administrācija.

Rust gūst popularitāti CLI lietotņu veidošanā. Rust nodrošina jaudīgus līdzekļus, piemēram, precīzu atmiņas piešķiršanas un pavedienu drošības kontroli, atmiņas drošību, vienlaicību un paralēlismu, ko varat izmantot, lai izveidotu jaudīgas CLI lietotnes. Rust lepojas arī ar plaukstošu bibliotēku un sistēmu ekosistēmu, kas īpaši pielāgotas CLI lietojumprogrammu veidošanai.

Darba sākšana CLI lietotņu izveide, izmantojot Rust

Ir vairākas trešo pušu pakotnes CLI lietotņu izveidei Rust, tostarp

instagram viewer
Aplaudē, StructOpt, un Termiņš kastes. Šīs kastes nodrošina līdzekļus, kas nepieciešami modernu CLI rīku izstrādei.

Arī Rust nodrošina a std:: env crate savā standarta bibliotēkā, kas nodrošina funkcionalitāti darbam ar vides mainīgajiem un komandrindas argumentiem. The std:: env crate piedāvā virkni metožu un veidu darbam ar vidēm neatkarīgi no platformas.

Izmantojot std:: env crate, jūsu Rust programmas var mijiedarboties ar vidi un pielāgot savu uzvedību, pamatojoties uz to dažādi faktori, tostarp vides mainīgie, komandrindas argumenti un pašreizējā darbība direktoriju.

Palaidiet šo komandu, lai izveidotu jaunu Rust projektu savai CLI lietotnei ar Cargo, Rust pakotņu pārvaldības rīku:

kravas jauns crypto_cli

Jūs uzzināsit, kā izveidot CLI lietojumprogrammu, kas izsauc Coinmarketcap API ar Reqwest kaste, kas nodrošina izgatavošanas iespējas HTTP pieprasījumi Rust.

Atver savu Krava.toml failu un pievienojiet reqwest un tokio kastes jūsu projekta atkarībām:

[atkarības]
tokio = { versija = "1.15", funkcijas = ["pilns"] }
reqwest = { versija = "0.11", funkcijas = ["json"] }
serde = { versija = "1.0", funkcijas = ["atvasināt"] }
serde_json = "1.0"

The tokio crate ir asinhrona izpildlaika bibliotēka, kas sadarbojas ar reqwest asinhronai programmēšanai. The serde un serde_json kastes palīdz ar JSON serializācija un deserializācija.

Iekš src sava Rust projekta mapi, izveidojiet api.rs un cli.rs faili, kuros ieviesīsiet API izsaukumu un CLI funkcijas.

pieskarieties src/api.rs src/cli.rs

Komandai ir jāizveido nepieciešamie faili jūsu projekta darba direktorijā. Pēc funkcionalitātes ierakstīšanas to noteiktajos failos problēmu nošķiršanai, jūs izsauksit funkcijas sadaļā galvenais funkcija jūsu galvenais.rs failu.

API pieprasījumu veikšana CoinMarketCap API, izmantojot Reqwest

CoinMarketCap API ļauj piekļūt kriptovalūtas datiem un tos integrēt to lietojumprogrammās. API nodrošina galapunktus sarakstiem, tirgus kotācijām, informācijas apmaiņai, konvertēšanas rīkiem, vēsturiskajiem datiem un metadatiem.

Kad pierakstāties, varat reģistrēties CoinMarketCap kontam un izgūt savu API atslēgu Coinmarketcap izstrādātāja lapā. Varat arī skatīt dokumentāciju, lai iegūtu detalizētus norādījumus un tarifu ierobežojumus.

Lai veiktu API pieprasījumu, /v2/cryptocurrency/quotes/latest galapunkts, kas atgriež jaunāko tirgus cenu vienai vai vairākām kriptovalūtām, jums būs jādefinē struktūras datiem, kurus vēlaties iegūt no API, un norādiet atribūtus ar Serdes atvasināto pazīmi.

Pēc tam varat pieprasīt API galapunktam un izmantot serde_json crate, lai deserializētu JSON datus struktūrā, lai atvieglotu darbības ar Rust datu veidiem.

Lūk, struktūras definīcija kas izgūst id, nosaukums, simbols, un citāts norādīto kriptovalūtu dati

#[atvasināt (atkļūdot, deserializēt, serializēt)]
struktūraApiResponse {
dati: dati,
}

#[atvasināt (atkļūdot, deserializēt, serializēt)]
struktūraDati {
// Pievienojiet nepieciešamos laukus no datu objekta
#[serde (pārdēvēt = "1")]
crypto_1: kriptovalūta,

#[serde (pārdēvēt = "2")]
crypto_2: kriptovalūta,

#[serde (pārdēvēt = "3")]
crypto_3: kriptovalūta,

#[serde (pārdēvēt = "4")]
crypto_4: kriptovalūta,
}

#[atvasināt (atkļūdot, deserializēt, serializēt)]
struktūraKriptovalūta {
id: u32,
nosaukums: Stīga,
simbols: Stīga,
// Pievienojiet citus laukus pēc vajadzības
citāts: citāts,
}

#[atvasināt (atkļūdot, deserializēt, serializēt)]
struktūraCitāts {
USD: QuoteDetails,
}

#[atvasināt (atkļūdot, deserializēt, serializēt)]
struktūraCitātsDetaļas {
cena: f64,
volume_24h: f64,
// Pievienojiet citus laukus pēc vajadzības
}

API atgriež datus, kas var būt vairāk nekā jums nepieciešams, taču ar serde crate, varat norādīt precīzus nepieciešamos datus, kā parādīts iepriekš.

Tagad varat pieprasīt galapunktu, izmantojot Reqwest, izveidojot jaunu klientu, kas veic GET pieprasījumu ar nepieciešamajiem parametriem.

izmantot reqwest:: Klients;
izmantot reqwest:: Kļūda;

krogsasinhronsfnkriptovalūta() -> Rezultāts {
ļaut klients = Klients:: jauns();

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

ļaut parametri = [
("id", "1,2,3,4"),
("konvertēt", "USD"), // Konvertējiet tirgus vērtības uz USD
];

ļaut atbilde = client.get (url)
.header("X-CMC_PRO_API_KEY", “JŪSU API ATSLĒGA ŠEIT”)
.query(&params)
.send().gaidīt?;
;

ļaut rezultāts: ApiResponse = serde_json:: from_str(&*response.text().gaidīt?;).unwrap();

println!("{:#?}", rezultāts);
Labi(())
}

The kriptovalūta funkcija ir tokio iespējota asinhronā funkcija, kas pieprasa galapunktu ar client.get funkcija pēc klienta instances izveides ar Klients:: jauns metodi.

The galvene funkcijas izsaukums pieprasījuma veidotāja instancē ņem jūsu API atslēgu vaicājums funkcija uzņem parametrus, un nosūtīt funkcija nosūta pieprasījumu.

The kriptovalūta funkcija deserializē JSON atbildi ar serde_json from_str metode, kas aizņem JSON virkni.

Visbeidzot, kriptovalūta funkcija izdrukā deserializācijas operācijas rezultātu konsolē.

CLI argumentu izgūšana Rust

Tavā cli.rs failu, jūs importēsit to kriptovalūta funkcija no api.rs failu un izsauciet funkciju, ja lietotāja suga “crypto” kā argumentu projekta palaišanai ar kravas skrējiens komandu.

Lūk, kā varat izmantot std:: env funkcija, lai izgūtu argumentu no komandrindas:

izmantot std:: env;
izmantot kaste:: api:: kriptogrāfija;

krogsasinhronsfncli() {
ļaut args: Vec<Stīga> = env:: args().collect();

ja args.len() > 1 && args[1] == "kripto" {
kriptonauda ().gaidīt.unwrap();
} cits {
println!("Nederīga komanda. Lietojums: kravas kriptovalūta);
}
}

The cli funkcija izgūst visus argumentus no komandrindas ar env:: args().collect() funkciju. The ja-citādi paziņojums pārbauda, ​​vai ir papildu arguments “kriptovalūta”. Ja nosacījuma novērtējums ir patiess, cli funkcija izsauc kriptovalūta funkcija; pretējā gadījumā, cli funkcija izdrukā virkni konsolē.

Visbeidzot, jūs varat piezvanīt uz cli funkcija galvenais funkciju. Jums jāpievieno #[tokio:: galvenais] atribūts kopš galvenais Rust funkcijas nevar būt asinhronas.

mod api;
mod cli;
izmantot crate:: cli:: cli;

#[tokio:: galvenais]
asinhronsfngalvenais() {
cli().gaidīt;
}

The galvenais funkcija izsauc cli funkcija ar gaidīt funkcija, kas aptur izpildi līdz a rezultātam Nākotne ir gatavs.

Lūk, darbības rezultāts kravas palaist kriptovalūtu komanda:

Rustā varat izveidot sarežģītas tīmekļa lietotnes

Rust ir daudzpusīga programmēšanas valoda ar daudziem lietošanas gadījumiem un lietojumprogrammām. Varat izmantot trešo pušu tīmekļa ietvarus, piemēram, Actix, Rocket un Warp, lai izveidotu tīmekļa lietojumprogrammas Rust. Šie ietvari nodrošina lielāko daļu funkciju, kas nepieciešamas, lai izveidotu modernas tīmekļa lietotnes.