Rust je jednou z nejlepších voleb pro vytváření aplikací CLI. Začněte vytvořením základní aplikace pro získávání kryptografických dat.
CLI (Command Line Interfaces) je zásadní při vývoji softwaru a správě systému. CLI jsou nenáročné textové programy, které nabízejí efektivní způsob interakce s počítači, který je výhodný pro vývojáře i pokročilé uživatele pro různé případy použití, včetně automatizace, skriptování a vzdáleného přístupu správa.
Rust získává na popularitě pro vytváření aplikací CLI. Rust poskytuje výkonné funkce, jako je jemná kontrola nad alokací paměti a bezpečností vláken, bezpečnost paměti, souběžnost a paralelismus, které můžete využít k vytváření výkonných aplikací CLI. Rust se také může pochlubit prosperujícím ekosystémem knihoven a frameworků, které jsou šité na míru přímo pro vytváření aplikací CLI.
Začínáme s vytvářením aplikací CLI s Rustem
Existuje několik balíčků třetích stran pro vytváření aplikací CLI v Rustu, včetně Tleskat, StructOpt, a Termion přepravky. Tyto bedny poskytují funkce, které potřebujete k vývoji moderních nástrojů CLI.
Rust také poskytuje a std:: env crate ve své standardní knihovně, která poskytuje funkce pro práci s proměnnými prostředí a argumenty příkazového řádku. The std:: env Crate nabízí řadu metod a typů pro práci s prostředími způsobem nezávislým na platformě.
Za použití std:: env Vaše programy Rust mohou interagovat s prostředím a přizpůsobit své chování na základě různé faktory, včetně proměnných prostředí, argumentů příkazového řádku a aktuálního fungování adresář.
Spuštěním tohoto příkazu vytvoříte nový projekt Rust pro vaši aplikaci CLI s Cargo, nástrojem pro správu balíčků Rust:
cargo new crypto_cli
Dozvíte se, jak vytvořit aplikaci CLI, která volá API Coinmarketcap s Reqwest bedna, která poskytuje funkce pro výrobu HTTP požadavky v Rust.
Otevři tvůj Cargo.toml soubor a přidejte reqwest a tokio bedny do závislostí vašeho projektu:
[závislosti]
tokio = { verze = "1.15", vlastnosti = ["plný"] }
reqwest = { verze = "0.11", vlastnosti = ["json"] }
Serde = { verze = "1.0", vlastnosti = ["odvodit"] }
serde_json = "1.0"
The tokio Crate je asynchronní runtime knihovna, která spolupracuje s reqwest pro asynchronní programování. The Serde a serde_json přepravky pomáhají s Serializace a deserializace JSON.
V src složku vašeho projektu Rust, vytvořte api.rs a cli.rs soubory, kde budete implementovat volání API a funkce CLI.
dotkněte se src/api.rs src/cli.rs
Příkaz by měl vytvořit požadované soubory v pracovním adresáři vašeho projektu. Po zapsání funkcí do jejich určených souborů pro oddělení problémů zavoláte funkce v hlavní funkce ve vašem main.rs soubor.
Vytváření požadavků API na rozhraní API CoinMarketCap pomocí Reqwest
CoinMarketCap API umožňuje přístup k datům kryptoměn a jejich integraci do jejich aplikací. API poskytuje koncové body pro výpisy, tržní kotace, výměnné informace, konverzní nástroje, historická data a metadata.
Když se přihlásíte, můžete se zaregistrovat k účtu CoinMarketCap a získat klíč API na stránce vývojáře Coinmarketcap. Podrobné pokyny a limity sazeb naleznete také v dokumentaci.
Chcete-li vytvořit požadavek API na /v2/cryptocurrency/quotes/latest koncový bod, který vrací nejnovější tržní kotaci pro jednu nebo více kryptoměn, budete muset definovat struktury pro data, která chcete extrahovat z API, a specifikujte atributy pomocí Serde's derivace trait.
Poté můžete požádat o API pro koncový bod a použít serde_json crate k deserializaci dat JSON do struktury pro snadnější operace s datovými typy Rust.
Zde je definice struktury který získá id, název, symbol, a citát údaje o zadaných kryptoměnách
#[derive (Debug, Deserialize, Serialize)]
strukturovatApiResponse {
data: Data,
}#[derive (Debug, Deserialize, Serialize)]
strukturovatData {
// Přidejte pole, která potřebujete z datového objektu
#[serde (přejmenovat = "1")]
crypto_1: Kryptoměna,#[serde (přejmenovat = "2")]
crypto_2: Kryptoměna,#[serde (přejmenovat = "3")]
crypto_3: Kryptoměna,#[serde (přejmenovat = "4")]
crypto_4: Kryptoměna,
}#[derive (Debug, Deserialize, Serialize)]
strukturovatKryptoměna {
id: u32,
název: Tětiva,
symbol: Tětiva,
// Podle potřeby přidejte další pole
citace: Citace,
}#[derive (Debug, Deserialize, Serialize)]
strukturovatCitát {
USD: Podrobnosti nabídky,
}
#[derive (Debug, Deserialize, Serialize)]
strukturovatPodrobnosti nabídky {
cena: f64,
objem_24h: f64,
// Podle potřeby přidejte další pole
}
Rozhraní API vrací data, která mohou být více, než potřebujete, ale s Serde přepravky, můžete zadat přesné údaje, které potřebujete, jak je uvedeno výše.
Nyní můžete požádat o koncový bod pomocí Reqwest vytvořením nového klienta, který vytvoří požadavek GET s požadovanými parametry.
použití reqwest:: Klient;
použití reqwest:: Chyba;hospodaasynchronnífnkrypto() -> Výsledek {
nechat klient = Klient:: new();nechat url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";
nechat parametry = [
("id", "1,2,3,4"),
("konvertovat", "AMERICKÝ DOLAR"), // Převod tržních hodnot na USD
];nechat odpověď = client.get (url)
.header("X-CMC_PRO_API_KEY", "ZDE VÁŠ KLÍČ API")
.query(¶ms)
.poslat().čekat?;
;nechat výsledek: ApiResponse = serde_json:: from_str(&*response.text().čekat?;).rozbalit();
println!("{:#?}", výsledek);
OK(())
}
The krypto function je asynchronní funkce s povolenou tokio, která požaduje koncový bod s klient.získat funkce po vytvoření instance klienta s Klient:: nový metoda.
The záhlaví volání funkce na instanci tvůrce požadavků převezme váš klíč API, the dotaz funkce přebírá parametry a poslat funkce odešle požadavek.
The krypto funkce deserializuje odpověď JSON pomocí serde_json od_str metoda, která přijímá řetězec JSON.
Konečně, krypto funkce vytiskne výsledek operace deserializace do konzoly.
Načítání argumentů CLI v Rustu
Ve vašem cli.rs soubor, naimportujete soubor krypto funkce z api.rs soubor a zavolejte funkci, pokud uživatel použije „crypto“ jako argument při spuštění projektu s nákladní jízda příkaz.
Zde je návod, jak můžete použít std:: env funkce pro načtení argumentu z příkazového řádku:
použití std:: env;
použití bedna:: api:: krypto;hospodaasynchronnífncli() {
nechat argumenty: Vec<Tětiva> = env:: args().collect();
-li args.len() > 1 && argumenty[1] == "krypto" {
krypto().čekat.rozbalit();
} jiný {
println!("Neplatný příkaz. Použití: cargo run crypto");
}
}
The cli funkce načte všechny argumenty z příkazového řádku pomocí env:: args().collect() funkce. The pokud-jinak příkaz zkontroluje, zda existuje další argument, „crypto“. Pokud se podmínka vyhodnotí jako pravdivá, cli funkce volá krypto funkce; jinak, cli funkce vypíše řetězec do konzole.
Nakonec můžete zavolat na cli funkce v hlavní funkce. Musíte přidat #[tokio:: hlavní] atribut od hlavní funkce nemohou být v Rust asynchronní.
mod api;
mod cli;
použití přepravka:: cli:: cli;
#[tokio:: hlavní]
asynchronnífnhlavní() {
cli().čekat;
}
The hlavní funkce volá cli funkce s čekat funkce, která pozastaví provádění až do výsledku a Budoucnost je připraven.
Zde je výsledek spuštění cargo run krypto příkaz:
Můžete vytvářet sofistikované webové aplikace v Rustu
Rust je všestranný programovací jazyk s mnoha případy použití a aplikací. K vytváření webových aplikací v Rustu můžete využít webové rámce třetích stran, jako je Actix, Rocket a Warp. Tyto rámce poskytují většinu funkcí potřebných k vytváření moderních webových aplikací.