Ruoste on yksi parhaista valinnoista CLI-sovellusten rakentamiseen. Aloita rakentamalla salaustietojen hakijasovellus.

CLI (Command Line Interfaces) on keskeinen ohjelmistokehityksessä ja järjestelmänhallinnassa. CLI: t ovat kevyitä tekstipohjaisia ​​ohjelmia, jotka tarjoavat virtaviivaisen tavan olla vuorovaikutuksessa tietokoneiden kanssa, jotka ovat edullisia. sekä kehittäjille että tehokäyttäjille useisiin käyttötarkoituksiin, mukaan lukien automaatio, komentosarjat ja etäkäyttö hallinto.

Rust on saamassa suosiota CLI-sovellusten rakentamisessa. Rust tarjoaa tehokkaita ominaisuuksia, kuten hienorakeisen hallinnan muistin varaamiseen ja säikeen turvallisuuteen, muistin turvallisuuteen, samanaikaisuuteen ja rinnakkaisuuteen, joita voit hyödyntää tehokkaiden CLI-sovellusten rakentamisessa. Rustilla on myös kukoistava kirjastojen ja puitteiden ekosysteemi, joka on räätälöity erityisesti CLI-sovellusten rakentamiseen.

Aloitus CLI-sovellusten rakentaminen Rustilla

Rustissa on useita kolmannen osapuolen paketteja CLI-sovellusten rakentamiseen, mukaan lukien

instagram viewer
Taputtaa, StructOpt, ja Termion laatikoita. Nämä laatikot tarjoavat ominaisuuksia, joita tarvitset nykyaikaisten CLI-työkalujen kehittämiseen.

Lisäksi Rust tarjoaa a std:: env crate vakiokirjastossaan, joka tarjoaa toimintoja ympäristömuuttujien ja komentoriviargumenttien kanssa työskentelemiseen. The std:: env crate tarjoaa erilaisia ​​menetelmiä ja tyyppejä työskentelyyn ympäristöjen kanssa alustasta riippumattomalla tavalla.

Käyttämällä std:: env crate, Rust-ohjelmasi voivat olla vuorovaikutuksessa ympäristön kanssa ja mukauttaa käyttäytymistään sen perusteella useat tekijät, mukaan lukien ympäristömuuttujat, komentoriviargumentit ja nykyinen toiminta hakemistosta.

Suorita tämä komento luodaksesi uuden Rust-projektin CLI-sovelluksellesi Cargolla, Rustin paketinhallintatyökalulla:

lasti uusi crypto_cli

Opit rakentamaan CLI-sovelluksen, joka kutsuu Coinmarketcapin API: ta Reqwest laatikko, joka tarjoaa ominaisuuksia valmistukseen HTTP-pyynnöt ruosteessa.

Avaa sinun Cargo.toml tiedosto ja lisää reqwest ja tokio laatikot projektisi riippuvuuksiin:

[riippuvuudet]
tokio = { versio = "1.15", ominaisuuksia = ["koko"] }
reqwest = { versio = "0.11", ominaisuuksia = ["json"] }
serde = { versio = "1.0", ominaisuuksia = ["johtaa"] }
serde_json = "1.0"

The tokio crate on asynkroninen ajonaikainen kirjasto, joka toimii yhdessä reqwest asynkroniseen ohjelmointiin. The serde ja serde_json laatikot auttavat JSON-serialisointi ja deserialisointi.

Vuonna src Rust-projektisi kansio, luo api.rs ja cli.rs tiedostot, joissa toteutat API-kutsun ja CLI-toiminnot.

kosketa src/api.rs src/cli.rs

Komennon pitäisi luoda halutut tiedostot projektisi työhakemistoon. Kun olet kirjoittanut toiminnot niille osoitettuihin tiedostoihin huolenaiheiden erottamista varten, kutsut toiminnot tiedostossa pää toimii sinun main.rs tiedosto.

API-pyyntöjen tekeminen CoinMarketCapin API: lle Reqwestin avulla

CoinMarketCapin API antaa sinun käyttää ja integroida kryptovaluuttatietoja heidän sovelluksiinsa. API tarjoaa päätepisteitä listauksille, markkinanoteerauksille, vaihtotiedoille, muunnostyökaluille, historiallisille tiedoille ja metatiedoille.

Kun kirjaudut sisään, voit rekisteröidä CoinMarketCap-tilin ja hakea API-avaimesi Coinmarketcapin kehittäjäsivulta. Voit myös katsoa asiakirjoista yksityiskohtaiset ohjeet ja hintarajoitukset.

Voit tehdä API-pyynnön /v2/cryptocurrency/quotes/latest päätepiste, joka palauttaa viimeisimmän markkinatarjouksen yhdelle tai useammalle kryptovaluutalle, sinun on määritettävä rakenteet tiedoille, jotka haluat poimia API: sta, ja määritä attribuutit Serden johdannaisominaisuuden avulla.

Sitten voit pyytää API: ta päätepisteeseen ja käyttää serde_json crate JSON-tietojen sarjoittamiseksi rakenteeseen Rust-tietotyyppien käytön helpottamiseksi.

Tässä on rakenteen määritelmä joka hakee id, nimi, symboli, ja lainata määritettyjen kryptovaluuttojen tiedot

#[johdata (debug, deserialize, serialize)]
structApiResponse {
tiedot: Data,
}

#[johdata (debug, deserialize, serialize)]
structData {
// Lisää tarvitsemasi kentät tietoobjektista
#[serde (nimeä uudelleen = "1")]
crypto_1: kryptovaluutta,

#[serde (nimeä uudelleen = "2")]
crypto_2: kryptovaluutta,

#[serde (nimeä uudelleen = "3")]
crypto_3: kryptovaluutta,

#[serde (nimeä uudelleen = "4")]
crypto_4: kryptovaluutta,
}

#[johdata (debug, deserialize, serialize)]
structKryptovaluutta {
id: u32,
nimi: merkkijono,
symboli: merkkijono,
// Lisää muita kenttiä tarpeen mukaan
lainaus: Lainaus,
}

#[johdata (debug, deserialize, serialize)]
structLainata {
USD: QuoteDetails,
}

#[johdata (debug, deserialize, serialize)]
structLainaus Yksityiskohdat {
hinta: f64,
volyymi_24h: f64,
// Lisää muita kenttiä tarpeen mukaan
}

API palauttaa tietoja, joita voi olla enemmän kuin tarvitset, mutta serde laatikossa, voit määrittää tarkat tarvitsemasi tiedot yllä olevan kuvan mukaisesti.

Nyt voit pyytää päätepistettä Reqwestillä luomalla uuden asiakkaan, joka tekee GET-pyynnön vaadituilla parametreilla.

käyttää reqwest:: Asiakas;
käyttää reqwest:: Virhe;

pubasynkfnkrypto() -> Tulos {
antaa client = Asiakas:: uusi();

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

antaa params = [
("id", "1,2,3,4"),
("muuntaa", "USD"), // Muunna markkina-arvot USD: ksi
];

antaa vastaus = client.get (url)
.header("X-CMC_PRO_API_KEY", "SINUN sovellusliittymäavaimesi TÄÄLLÄ")
.query(&params)
.lähettää().odottaa?;
;

antaa tulos: ApiResponse = serde_json:: from_str(&*response.text().odottaa?;).unwrap();

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

The krypto -funktio on tokio-yhteensopiva asynkroninen funktio, joka pyytää päätepistettä client.get -toiminto, kun olet luonut asiakasesiintymän Asiakas:: uusi menetelmä.

The otsikko funktiokutsu, kun pyynnön rakennustyökalun ilmentymä ottaa API-avaimesi, the kysely funktio ottaa parametrit ja lähettää toiminto lähettää pyynnön.

The krypto funktio deserialisoi JSON-vastauksen serde_jsonin kanssa from_str menetelmä, joka ottaa JSON-merkkijonon.

Lopuksi, krypto toiminto tulostaa sarjoituksen tuloksen konsoliin.

CLI-argumenttien hakeminen Rustista

Sinun cli.rs tiedosto, tuot sen krypto toiminto alkaen api.rs tiedosto ja kutsu funktio, jos käyttäjälaji "crypto" argumenttina projektin suorittamiselle kanssa rahtiajo komento.

Näin voit käyttää std:: env toiminto noutaa argumentin komentoriviltä:

käyttää std:: env;
käyttää laatikko:: api:: krypto;

pubasynkfncli() {
antaa args: Vec<merkkijono> = env:: args().collect();

jos args.len() > 1 && args[1] == "crypto" {
krypto().odottaa.unwrap();
} muu {
println!("Virheellinen komento. Käyttö: cargo run crypto");
}
}

The cli funktio hakee kaikki argumentit komentoriviltä env:: args().collect() toiminto. The tai muuten lauseke tarkistaa, onko olemassa lisäargumenttia, "crypto". Jos ehdollinen arvo on tosi, cli toiminto kutsuu krypto toiminto; muuten, cli funktio tulostaa merkkijonon konsoliin.

Lopuksi voit soittaa cli toimintoa pää toiminto. Sinun on lisättävä #[tokio:: main] attribuutti vuodesta pää toiminnot eivät voi olla asynkronisia Rustissa.

mod api;
mod cli;
käyttää laatikko:: cli:: cli;

#[tokio:: main]
asynkfnpää() {
cli().odottaa;
}

The pää toiminto kutsuu cli toiminnon kanssa odottaa toiminto, joka keskeyttää suorituksen, kunnes tulos on a Tulevaisuus on valmis.

Tässä on suorituksen tulos lastin ajettava krypto komento:

Voit rakentaa kehittyneitä verkkosovelluksia Rustissa

Rust on monipuolinen ohjelmointikieli, jolla on monia käyttötapauksia ja sovelluksia. Voit hyödyntää kolmannen osapuolen verkkokehyksiä, kuten Actix, Rocket ja Warp, rakentaaksesi verkkosovelluksia Rustissa. Nämä puitteet tarjoavat suurimman osan toiminnoista, joita tarvitaan nykyaikaisten verkkosovellusten rakentamiseen.