A rozsda az egyik legjobb választás a CLI alkalmazások építéséhez. Kezdje el egy alapvető kriptográfiai adatlekérő alkalmazás létrehozásával.
A CLI (Command Line Interfaces) kulcsfontosságú a szoftverfejlesztésben és a rendszeradminisztrációban. A CLI-k könnyű szöveg alapú programok, amelyek egyszerű módot kínálnak a kedvező számítógépekkel való interakcióra. fejlesztőknek és nagyfelhasználóknak egyaránt többféle felhasználási esetre, beleértve az automatizálást, a szkriptelést és a távvezérlést adminisztráció.
A Rust egyre népszerűbb a CLI-alkalmazások készítésében. A Rust olyan hatékony funkciókat kínál, mint például a memóriafoglalás és a szálbiztonság, a memóriabiztonság, a párhuzamosság és a párhuzamosság finomszemcsés vezérlése, amelyek segítségével hatékony CLI-alkalmazásokat készíthet. A Rust a kifejezetten a CLI alkalmazások építésére szabott könyvtárak és keretrendszerek virágzó ökoszisztémájával is büszkélkedhet.
Első lépések CLI-alkalmazások készítése Rust segítségével
Számos harmadik féltől származó csomag létezik a CLI-alkalmazások Rustban történő létrehozására, beleértve
Taps, StructOpt, és Lemondás ládák. Ezek a ládák biztosítják a modern CLI-eszközök fejlesztéséhez szükséges szolgáltatásokat.Ezenkívül a Rust a std:: env crate szabványos könyvtárában, amely funkcionalitást biztosít a környezeti változókkal és parancssori argumentumokkal való munkavégzéshez. A std:: env A crate számos módszert és típust kínál a környezetekkel való platformfüggetlen munkavégzéshez.
Használni a std:: env láda, a Rust programjai kölcsönhatásba léphetnek a környezettel, és ennek alapján adaptálhatják viselkedésüket különféle tényezők, beleértve a környezeti változókat, a parancssori argumentumokat és az aktuális működést Könyvtár.
Futtassa ezt a parancsot egy új Rust projekt létrehozásához a CLI alkalmazáshoz a Cargo, a Rust csomagkezelő eszközével:
cargo new crypto_cli
Megtanulja, hogyan lehet olyan CLI-alkalmazást készíteni, amely meghívja a Coinmarketcap API-ját a Reqwest láda, amely funkciókat biztosít az elkészítéshez HTTP kérések Rustban.
Nyissa meg Cargo.toml fájlt, és add hozzá a reqwest és tokio ládák a projekt függőségeihez:
[függőségek]
tokio = { verzió = "1.15", funkciók = ["teljes"] }
reqwest = { verzió = "0.11", funkciók = ["json"] }
serde = { verzió = "1.0", funkciók = ["származik"] }
serde_json = "1.0"
A tokio A crate egy aszinkron futásidejű könyvtár, amely együttműködik reqwest aszinkron programozáshoz. A serde és serde_json ládák segítenek JSON szerializálás és deszerializálás.
Ban,-ben src a Rust projekt mappáját, hozza létre api.rs és cli.rs fájlokat, ahol megvalósítja az API-hívást és a CLI-funkciókat.
érintse meg az src/api.rs src/cli.rs elemet
A parancsnak létre kell hoznia a kívánt fájlokat a projekt munkakönyvtárában. Miután beírta a funkciókat a hozzájuk tartozó fájlokban az aggodalmak elkülönítése érdekében, meghívja a függvényeket a fő- funkciót a te fő.rs fájlt.
API-kérések készítése a CoinMarketCap API-jához a Reqwest segítségével
CoinMarketCap API lehetővé teszi a kriptovaluta adatok elérését és integrálását alkalmazásaikba. Az API végpontokat biztosít a listákhoz, piaci árajánlatokhoz, csereinformációkhoz, konverziós eszközökhöz, előzményadatokhoz és metaadatokhoz.
Amikor bejelentkezik, regisztrálhat egy CoinMarketCap-fiókra, és lekérheti API-kulcsát a Coinmarketcap fejlesztői oldalán. A részletes utasításokat és a díjkorlátokat a dokumentációban is megtalálhatja.
API-kérés benyújtásához a /v2/cryptocurrency/quotes/latest végpont, amely egy vagy több kriptovaluta legfrissebb piaci árat adja vissza, akkor meg kell határoznia a struktúrákat az API-ból kinyerni kívánt adatokhoz, és adja meg az attribútumokat Serde származtatott tulajdonságával.
Ezután kérhet API-t a végponthoz, és használhatja a serde_json láda a JSON-adatok deszerializálásához a struktúrába a Rust-adattípusok egyszerűbb műveletei érdekében.
Íme a struktúra meghatározása hogy visszakeresi a id, név, szimbólum, és idézet a megadott kriptovaluták adatait
#[származtatás (hibakeresés, deszerializálás, sorozatosítás)]
structApiResponse {
adatok: adatok,
}#[származtatás (hibakeresés, deszerializálás, sorozatosítás)]
structAdat {
// A szükséges mezők hozzáadása az adatobjektumból
#[serde (átnevezés = "1")]
crypto_1: kriptovaluta,#[serde (átnevezés = "2")]
crypto_2: kriptovaluta,#[serde (átnevezés = "3")]
crypto_3: kriptovaluta,#[serde (átnevezés = "4")]
crypto_4: kriptovaluta,
}#[származtatás (hibakeresés, deszerializálás, sorozatosítás)]
structKriptovaluta {
azonosító: u32,
név: Húr,
szimbólum: Húr,
// Szükség szerint adjon hozzá további mezőket
idézet: Idézet,
}#[származtatás (hibakeresés, deszerializálás, sorozatosítás)]
structIdézet {
USD: QuoteDetails,
}
#[származtatás (hibakeresés, deszerializálás, sorozatosítás)]
structIdézetRészletek {
ár: f64,
volume_24h: f64,
// Szükség szerint adjon hozzá további mezőket
}
Az API a szükségesnél több adatot ad vissza, de a serde láda, pontosan megadhatja a szükséges adatokat, a fent látható módon.
Mostantól kérheti a végpontot a Reqwest segítségével egy új ügyfél létrehozásával, amely a szükséges paraméterekkel elvégzi a GET kérést.
használat reqwest:: Ügyfél;
használat reqwest:: Hiba;kocsmaasyncfnkripto() -> Eredmény {
hagyja kliens = Ügyfél:: new();hagyja url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";
hagyja params = [
("azonosító", "1,2,3,4"),
("alakítani", "USADOLLÁR"), // Konvertálja a piaci értékeket USD-re
];hagyja válasz = client.get (url)
.fejléc("X-CMC_PRO_API_KEY", "AZ API KULCS ITT")
.query(¶ms)
.Küld().várja?;
;hagyja eredmény: ApiResponse = serde_json:: from_str(&*response.text().várja?;).kibont();
println!("{:#?}", eredmény);
Rendben(())
}
A kripto A függvény egy tokio-engedélyezett aszinkron függvény, amely a végpontot kéri le a client.get függvényt, miután létrehozott egy ügyfélpéldányt a Ügyfél:: új módszer.
A fejléc függvényhívás a kéréskészítő példányon beveszi az API-kulcsot, a lekérdezés függvény veszi a paramétereket, és a Küld funkció elküldi a kérést.
A kripto függvény deszerializálja a JSON-választ a serde_json-val from_str metódus, amely egy JSON karakterláncot vesz fel.
Végül a kripto függvény kiírja a deserializációs művelet eredményét a konzolra.
CLI-argumentumok lekérése Rustban
A tiédben cli.rs fájlt, akkor importálja a kripto funkció a api.rs fájlt, és hívja meg a függvényt, ha a „crypto” felhasználói faj argumentumként a projekt futtatásakor a rakományfuttatás parancs.
Íme, hogyan használhatja a std:: env függvény az argumentum lekéréséhez a parancssorból:
használat std:: env;
használat láda:: api:: kripto;kocsmaasyncfncli() {
hagyja args: Vec<Húr> = env:: args().collect();
ha args.len() > 1 && args[1] == "kripto" {
crypto().várja.kibont();
} más {
println!("Érvénytelen parancs. Használat: cargo run crypto);
}
}
A cli függvény lekéri az összes argumentumot a parancssorból a env:: args().collect() funkció. A ha más utasítás ellenőrzi, hogy van-e további argumentum, a „crypto”. Ha a feltételes értéke igaz, akkor a cli függvény meghívja a kripto funkció; egyébként a cli függvény egy karakterláncot nyomtat a konzolra.
Végül felhívhatja a cli funkció a fő- funkció. Hozzá kell adni a #[tokio:: fő] attribútum óta fő- a funkciók nem lehetnek aszinkronok a Rustban.
mod api;
mod cli;
használat láda:: cli:: cli;
#[tokio:: fő]
asyncfnfő-() {
cli().várja;
}
A fő- függvény meghívja a cli funkciót a várja függvény, amely felfüggeszti a végrehajtást az a eredményig Jövő készen van.
Íme a futtatás eredménye cargo run kripto parancs:
Kifinomult webalkalmazásokat készíthet Rustban
A Rust egy sokoldalú programozási nyelv, számos felhasználási esettel és alkalmazással. Harmadik fél webes keretrendszereit, például az Actixet, a Rocketet és a Warpot használhatja webalkalmazások készítéséhez a Rustban. Ezek a keretrendszerek biztosítják a modern webalkalmazások létrehozásához szükséges legtöbb funkciót.