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.

instagram viewer

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(&params)
.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í.