Rust je jednou z najlepších možností pre vytváranie aplikácií CLI. Začnite vytvorením základnej aplikácie na získavanie kryptografických údajov.

Rozhrania CLI (Command Line Interfaces) sú kľúčové pri vývoji softvéru a správe systému. CLI sú ľahké textové programy, ktoré ponúkajú efektívny spôsob interakcie s počítačmi, ktoré sú výhodné pre vývojárov a skúsených používateľov pre rôzne prípady použitia vrátane automatizácie, skriptovania a vzdialeného používania administratívy.

Rust si získava na popularite pri vytváraní aplikácií CLI. Rust poskytuje výkonné funkcie, ako je jemná kontrola nad alokáciou pamäte a bezpečnosťou vlákien, bezpečnosť pamäte, súbežnosť a paralelizmus, ktoré môžete využiť na vytváranie výkonných aplikácií CLI. Rust sa môže pochváliť aj prosperujúcim ekosystémom knižníc a rámcov, ktoré sú výslovne prispôsobené na vytváranie aplikácií CLI.

Začíname vytvárať aplikácie CLI s hrdzou

Existuje niekoľko balíkov tretích strán na vytváranie aplikácií CLI v Ruste, vrátane Clap

instagram viewer
, StructOpt, a Termion prepravky. Tieto prepravky poskytujú funkcie, ktoré potrebujete na vývoj moderných nástrojov CLI.

Rust tiež poskytuje a std:: env crate vo svojej štandardnej knižnici, ktorá poskytuje funkčnosť pre prácu s premennými prostredia a argumentmi príkazového riadka. The std:: env Crate ponúka celý rad metód a typov pre prácu s prostrediami spôsobom nezávislým od platformy.

Pomocou std:: env debne, vaše programy Rust môžu interagovať s prostredím a prispôsobiť svoje správanie na základe rôzne faktory, vrátane premenných prostredia, argumentov príkazového riadka a aktuálneho fungovania adresár.

Spustite tento príkaz na vytvorenie nového projektu Rust pre vašu aplikáciu CLI s Cargo, nástrojom na správu balíkov Rust:

náklad nový crypto_cli

Dozviete sa, ako vytvoriť aplikáciu CLI, ktorá volá API Coinmarketcap s Reqwest prepravka, ktorá poskytuje funkcie na výrobu HTTP požiadavky v Rust.

Otvor tvoj Cargo.toml súbor a pridajte reqwest a tokio prepravky k závislostiam vášho projektu:

[závislosti]
tokio = { verzia = "1.15", funkcie = ["plné"] }
reqwest = { verzia = "0.11", funkcie = ["json"] }
Serde = { verzia = "1.0", funkcie = ["odvodiť"] }
serde_json = "1.0"

The tokio Crate je asynchrónna runtime knižnica, ktorá spolupracuje s reqwest pre asynchrónne programovanie. The Serde a serde_json prepravky pomáhajú s Serializácia a deserializácia JSON.

V src priečinok vášho projektu Rust, vytvorte api.rs a cli.rs súbory, kde budete implementovať volanie API a funkcie CLI.

dotknite sa src/api.rs src/cli.rs

Príkaz by mal vytvoriť požadované súbory v pracovnom adresári vášho projektu. Po zapísaní funkcií do ich určených súborov na oddelenie problémov zavoláte funkcie v súbore Hlavná funkciu vo vašom main.rs súbor.

Vytváranie žiadostí API do API CoinMarketCap pomocou Reqwest

API CoinMarketCap umožňuje prístup k údajom o kryptomenách a ich integráciu do ich aplikácií. Rozhranie API poskytuje koncové body pre výpisy, trhové ponuky, výmenné informácie, nástroje na konverziu, historické údaje a metadáta.

Keď sa prihlásite, môžete sa zaregistrovať do účtu CoinMarketCap a získať kľúč API na stránke vývojára Coinmarketcap. Podrobné pokyny a limity sadzieb nájdete aj v dokumentácii.

Ak chcete zadať požiadavku API na /v2/cryptocurrency/quotes/latest koncový bod, ktorý vracia najnovšiu trhovú cenu pre jednu alebo viacero kryptomien, budete musieť definovať štruktúry pre údaje, ktoré chcete extrahovať z API, a špecifikujte atribúty pomocou Serdeho odvodenej vlastnosti.

Potom môžete požiadať o API pre koncový bod a použiť serde_json crate na deserializáciu údajov JSON do štruktúry pre jednoduchšie operácie s typmi údajov Rust.

Tu je definícia štruktúry ktorý načítava id, názov, symbol, a citovať údaje o špecifikovaných kryptomenách

#[derive (Debug, Deserialize, Serialize)]
štrukturovaťApiResponse {
údaje: údaje,
}

#[derive (Debug, Deserialize, Serialize)]
štrukturovaťÚdaje {
// Pridajte polia, ktoré potrebujete z dátového objektu
#[serde (premenovať = "1")]
crypto_1: kryptomena,

#[serde (premenovať = "2")]
crypto_2: kryptomena,

#[serde (premenovať = "3")]
crypto_3: kryptomena,

#[serde (premenovať = "4")]
crypto_4: kryptomena,
}

#[derive (Debug, Deserialize, Serialize)]
štrukturovaťKryptomena {
id: u32,
názov: Reťazec,
symbol: Reťazec,
// Podľa potreby pridajte ďalšie polia
citát: Citát,
}

#[derive (Debug, Deserialize, Serialize)]
štrukturovaťCitovať {
USD: Podrobnosti o ponuke,
}

#[derive (Debug, Deserialize, Serialize)]
štrukturovaťPodrobnosti o ponuke {
cena: f64,
volume_24h: f64,
// Podľa potreby pridajte ďalšie polia
}

Rozhranie API vracia údaje, ktoré môžu byť viac, ako potrebujete, ale s Serde prepravky, môžete zadať presné údaje, ktoré potrebujete, ako je uvedené vyššie.

Teraz môžete požiadať o koncový bod pomocou Reqwest vytvorením nového klienta, ktorý vytvorí požiadavku GET s požadovanými parametrami.

použitie reqwest:: Klient;
použitie reqwest:: Chyba;

krčmaasyncfnkryptomeny() -> Výsledok {
nech klient = Klient:: new();

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

nech parametre = [
("id", "1,2,3,4"),
("konvertovať", "AMERICKÝ DOLÁR"), // Prevod trhových hodnôt na USD
];

nech odpoveď = client.get (url)
.header("X-CMC_PRO_API_KEY", "Váš API KEY TU")
.query(&params)
.odoslať().čakať?;
;

nech výsledok: ApiResponse = serde_json:: from_str(&*response.text().čakať?;).rozbaliť();

println!("{:#?}", výsledok);
Dobre(())
}

The kryptomeny funkcia je asynchrónna funkcia s povolenou tokio, ktorá požaduje koncový bod s klient.získať po vytvorení klientskej inštancie s Klient:: nový metóda.

The hlavička volanie funkcie na inštancii tvorcu požiadaviek prevezme váš kľúč API, dopyt funkcia preberá parametre a poslať funkcia odošle požiadavku.

The kryptomeny funkcia deserializuje odpoveď JSON pomocou serde_json od_str metóda, ktorá preberá reťazec JSON.

Nakoniec, kryptomeny funkcia vytlačí výsledok operácie deserializácie do konzoly.

Načítavanie argumentov CLI v Rust

V tvojom cli.rs súbor, importujete súbor kryptomeny funkcia z api.rs súbor a zavolajte funkciu, ak používateľ použije „crypto“ ako argument pri spustení projektu s nákladná jazda príkaz.

Tu je návod, ako môžete použiť std:: env funkcia na získanie argumentu z príkazového riadku:

použitie std:: env;
použitie prepravka:: api:: krypto;

krčmaasyncfncli() {
nech argumenty: Vec<Reťazec> = env:: args().collect();

ak args.len() > 1 && argumenty[1] == "krypto" {
krypto().čakať.rozbaliť();
} inak {
println!(„Neplatný príkaz. Použitie: cargo run crypto");
}
}

The cli funkcia načíta všetky argumenty z príkazového riadku s env:: args().collect() funkciu. The ak-inak príkaz skontroluje, či existuje ďalší argument, „crypto“. Ak sa podmienka vyhodnotí ako pravdivá, cli funkcia volá kryptomeny funkcia; inak, cli funkcia vypíše reťazec do konzoly.

Nakoniec môžete zavolať na cli funkciu v Hlavná funkciu. Musíte pridať #[tokio:: main] atribút od r Hlavná funkcie nemôžu byť v Rust asynchrónne.

mod api;
mod cli;
použitie prepravka:: cli:: cli;

#[tokio:: main]
asyncfnHlavná() {
cli().čakať;
}

The Hlavná funkcia volá cli funkcia s čakať funkcia, ktorá pozastaví vykonávanie až do výsledku a Budúcnosť je hotový.

Tu je výsledok spustenia cargo run crypto príkaz:

Môžete vytvárať sofistikované webové aplikácie v hrdze

Rust je všestranný programovací jazyk s mnohými prípadmi použitia a aplikáciami. Na vytváranie webových aplikácií v Ruste môžete využiť webové rámce tretích strán, ako sú Actix, Rocket a Warp. Tieto rámce poskytujú väčšinu funkcií potrebných na vytváranie moderných webových aplikácií.