Rooste on üks parimaid valikuid CLI rakenduste ehitamiseks. Alustage põhilise krüptoandmete toomise rakenduse loomisega.
CLI (Command Line Interfaces) on tarkvaraarenduses ja süsteemihalduses ülioluline. CLI-d on kerged tekstipõhised programmid, mis pakuvad sujuvat viisi soodsate arvutitega suhtlemiseks. nii arendajatele kui ka tõhusatele kasutajatele mitmeks kasutuseks, sealhulgas automatiseerimiseks, skriptimiseks ja kaugjuhtimiseks administreerimine.
Rooste kogub CLI-rakenduste ehitamisel populaarsust. Rust pakub võimsaid funktsioone, nagu täpne kontroll mälu eraldamise ja lõime ohutuse, mälu turvalisuse, samaaegsuse ja paralleelsuse üle, mida saate kasutada võimsate CLI-rakenduste loomiseks. Rust uhkeldab ka õitsva raamatukogude ja raamistike ökosüsteemiga, mis on spetsiaalselt kohandatud CLI-rakenduste loomiseks.
Alustamine Rooste abil CLI-rakenduste loomine
Rustis CLI-rakenduste loomiseks on mitu kolmanda osapoole paketti, sealhulgas Plaksutama, StructOptja Tähtaeg kastid. Need kastid pakuvad funktsioone, mida vajate kaasaegsete CLI-tööriistade väljatöötamiseks.
Samuti pakub Rust a std:: env crate oma standardteegis, mis pakub funktsioone keskkonnamuutujate ja käsurea argumentidega töötamiseks. The std:: env crate pakub mitmesuguseid meetodeid ja tüüpe keskkondadega töötamiseks platvormist sõltumatul viisil.
Kasutades std:: env kasti, saavad teie Rust-programmid keskkonnaga suhelda ja selle alusel oma käitumist kohandada mitmesugused tegurid, sealhulgas keskkonnamuutujad, käsurea argumendid ja praegune töö kataloog.
Käivitage see käsk, et luua oma CLI-rakenduse jaoks uus Rust-projekt Rusti paketihaldustööriistaga Cargo:
lasti uus crypto_cli
Saate teada, kuidas luua CLI-rakendust, mis kutsub Coinmarketcapi API-t koos Reqwest kast, mis pakub valmistamise funktsioone HTTP-päringud Rustis.
Ava oma Cargo.toml faili ja lisage reqwest ja tokio kastid teie projekti sõltuvustele:
[sõltuvused]
tokio = { versioon = "1.15", funktsioonid = ["täis"] }
reqwest = { versioon = "0.11", funktsioonid = ["json"] }
serde = { versioon = "1.0", funktsioonid = ["tuletama"] }
serde_json = "1.0"
The tokio crate on asünkroonne käitusaegne teek, mis töötab koos reqwest asünkroonse programmeerimise jaoks. The serde ja serde_json kastid aitavad JSON-i serialiseerimine ja deserialiseerimine.
Aastal src oma Rusti projekti kaust, looge api.rs ja kli.rs failid, kus rakendate API kõne ja CLI funktsioone.
puudutage src/api.rs src/cli.rs
Käsk peaks looma soovitud failid teie projekti töökataloogis. Kui olete murede eraldamiseks funktsioonid nende määratud failidesse kirjutanud, helistate funktsioonidele jaotises peamine funktsioon sinus main.rs faili.
API taotluste tegemine CoinMarketCapi API-le Reqwestiga
CoinMarketCapi API võimaldab krüptovaluuta andmetele juurde pääseda ja nende rakendustesse integreerida. API pakub lõpp-punkte kirjete, turu noteeringute, teabevahetusteabe, teisendustööriistade, ajalooliste andmete ja metaandmete jaoks.
Sisselogimisel saate registreerida CoinMarketCapi konto ja hankida oma API-võtme Coinmarketcapi arendaja lehelt. Üksikasjalike juhiste ja piirangute saamiseks võite vaadata ka dokumentatsiooni.
API päringu esitamiseks aadressile /v2/cryptocurrency/quotes/latest lõpp-punkt, mis tagastab ühe või mitme krüptovaluuta viimase turupakkumise, peate määratlema struktuurid andmete jaoks, mida soovite API-st eraldada, ja määrake atribuudid Serde tuletustunnusega.
Seejärel saate taotleda lõpp-punktile API-d ja kasutada serde_json kasti JSON-andmete deserialiseerimiseks struktuuri, et Rusti andmetüüpidega hõlpsamini toimida.
Siin on struktuuri määratlus mis otsib üles id, nimi, sümbol, ja tsitaat määratud krüptovaluutade andmed
#[tuletada (silumine, serialiseerimine, serialiseerimine)]
struktuurApiResponse {
andmed: andmed,
}#[tuletada (silumine, serialiseerimine, serialiseerimine)]
struktuurAndmed {
// Lisage andmeobjektist vajalikud väljad
#[serde (ümbernimetamine = "1")]
crypto_1: krüptovaluuta,#[serde (ümbernimetamine = "2")]
crypto_2: krüptovaluuta,#[serde (ümbernimetamine = "3")]
crypto_3: krüptovaluuta,#[serde (ümbernimetamine = "4")]
crypto_4: krüptovaluuta,
}#[tuletada (silumine, serialiseerimine, serialiseerimine)]
struktuurKrüptovaluuta {
id: u32,
nimi: String,
sümbol: String,
// Vajadusel lisage muid välju
tsitaat: tsitaat,
}#[tuletada (silumine, serialiseerimine, serialiseerimine)]
struktuurTsiteeri {
USD: QuoteDetails,
}
#[tuletada (silumine, serialiseerimine, serialiseerimine)]
struktuurTsiteeri Üksikasjad {
hind: f64,
maht_24h: f64,
// Vajadusel lisage muid välju
}
API tagastab andmeid, mida võib olla rohkem kui vaja, kuid koos serde kasti, saate määrata täpsed andmed, mida vajate, nagu ülal näidatud.
Nüüd saate Reqwestiga lõpp-punkti taotleda, luues uue kliendi, mis esitab nõutavate parameetritega GET-päringu.
kasutada reqwest:: Klient;
kasutada reqwest:: Viga;pubiasünkrfnkrüpto() -> Tulemus {
lase klient = Klient:: uus();lase url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";
lase params = [
("id", "1,2,3,4"),
("teisenda", "USD"), // Teisendage turuväärtused USA dollariteks
];lase vastus = client.get (url)
.header("X-CMC_PRO_API_KEY", "TEIE API VÕTI SIIN")
.query(¶meetrid)
.saada().ootama?;
;lase tulemus: ApiResponse = serde_json:: from_str(&*response.text().ootama?;).unwrap();
println!("{:#?}", tulemus);
Okei(())
}
The krüpto funktsioon on tokio-toega asünkroonne funktsioon, mis taotleb lõpp-punkti koos client.get funktsioon pärast kliendieksemplari loomist rakendusega Klient:: uus meetod.
The päis funktsiooni kutsumine päringu koostaja eksemplaril võtab teie API võtme, the päring funktsioon võtab sisse parameetrid ja saada funktsioon saadab päringu.
The krüpto funktsioon deserialiseerib JSON-i vastuse serde_json-iga from_str meetod, mis võtab sisse JSON-stringi.
Lõpuks, krüpto funktsioon prindib deserialiseerimistoimingu tulemuse konsooli.
CLI argumentide otsimine roostes
Sinu kli.rs faili, impordite selle krüpto funktsioonist api.rs faili ja kutsuge funktsioon välja, kui kasutaja liik "crypto" on argumendina projekti käivitamisel koos kaubajooks käsk.
Siin on, kuidas saate kasutada std:: env funktsioon argumendi toomiseks käsurealt:
kasutada std:: env;
kasutada kast:: api:: krüpto;pubiasünkrfncli() {
lase args: Vec<String> = env:: args().collect();
kui args.len() > 1 && args[1] == "krüpto" {
crypto().ootama.unwrap();
} muidu {
println!("Vigane käsk. Kasutus: lasti krüpto");
}
}
The cli funktsioon hangib käsurealt kõik argumendid env:: args().collect() funktsiooni. The kui-muidu avaldus kontrollib, kas on olemas täiendav argument "krüpto". Kui tingimuslause hindab tõeseks, siis cli funktsioon kutsub esile krüpto funktsioon; muidu, cli funktsioon prindib konsooli stringi.
Lõpuks võite helistada cli funktsioonis peamine funktsiooni. Peate lisama #[tokio:: main] atribuut alates peamine funktsioonid ei saa Rustis asünkroonsed olla.
mod api;
mod cli;
kasutada kast:: cli:: cli;
#[tokio:: main]
asünkrfnpeamine() {
klii().ootama;
}
The peamine funktsioon kutsub esile cli funktsiooniga ootama funktsioon, mis peatab täitmise kuni a tulemuseni Tulevik on valmis.
Siin on käivitamise tulemus kaubaveo krüpto käsk:
Rustis saate luua keerukaid veebirakendusi
Rust on mitmekülgne programmeerimiskeel, millel on palju kasutusjuhtumeid ja rakendusi. Rustis veebirakenduste loomiseks saate kasutada kolmandate osapoolte veebiraamistikke, nagu Actix, Rocket ja Warp. Need raamistikud pakuvad enamikku kaasaegsete veebirakenduste loomiseks vajalikest funktsioonidest.