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
, 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(¶ms)
.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í.