Rust to jeden z najlepszych wyborów do tworzenia aplikacji CLI. Zacznij od zbudowania podstawowej aplikacji do pobierania danych kryptograficznych.
CLI (Command Line Interfaces) ma kluczowe znaczenie w tworzeniu oprogramowania i administrowaniu systemem. CLI to lekkie programy tekstowe, które oferują usprawniony sposób interakcji z korzystnymi komputerami zarówno dla programistów, jak i zaawansowanych użytkowników, do wielu zastosowań, w tym automatyzacji, skryptów i zdalnych administracja.
Rust zyskuje popularność do tworzenia aplikacji CLI. Rust zapewnia zaawansowane funkcje, takie jak precyzyjna kontrola nad alokacją pamięci i bezpieczeństwem wątków, bezpieczeństwo pamięci, współbieżność i równoległość, które można wykorzystać do tworzenia potężnych aplikacji CLI. Rust szczyci się również dobrze prosperującym ekosystemem bibliotek i frameworków specjalnie dostosowanych do tworzenia aplikacji CLI.
Pierwsze kroki Tworzenie aplikacji CLI za pomocą Rusta
Istnieje kilka pakietów innych firm do budowania aplikacji CLI w Rust, w tym
Klaskać, Opcje struktury, I Wypowiedzenie skrzynie. Skrzynie te zapewniają funkcje potrzebne do tworzenia nowoczesnych narzędzi CLI.Ponadto Rust zapewnia std:: śr crate w swojej standardowej bibliotece, która zapewnia funkcjonalność do pracy ze zmiennymi środowiskowymi i argumentami wiersza poleceń. The std:: śr crate oferuje szereg metod i typów do pracy ze środowiskami w sposób niezależny od platformy.
Używając std:: śr crate, twoje programy Rust mogą wchodzić w interakcje ze środowiskiem i dostosowywać swoje zachowanie w oparciu o różne czynniki, w tym zmienne środowiskowe, argumenty wiersza poleceń i bieżące działanie informator.
Uruchom to polecenie, aby utworzyć nowy projekt Rust dla swojej aplikacji CLI za pomocą Cargo, narzędzia Rust do zarządzania pakietami:
ładunek nowy crypto_cli
Dowiesz się, jak zbudować aplikację CLI, która wywołuje API Coinmarketcap za pomocą Żądaj zachodu skrzynia, która zapewnia funkcje do tworzenia Żądania HTTP w Rust.
Otwórz swoje Cargo.toml plik i dodaj prośba I Tokio skrzynie do zależności Twojego projektu:
[zależności]
Tokio = { wersja = "1.15", funkcje = ["pełny"] }
prośba = { wersja = "0.11", funkcje = ["json"] }
serdeczny = { wersja = "1.0", funkcje = ["czerpać"] }
serde_json = "1.0"
The Tokio crate to asynchroniczna biblioteka uruchomieniowa, która współpracuje z prośba do programowania asynchronicznego. The serdeczny I serde_json skrzynie pomagają Serializacja i deserializacja JSON.
w źródło folder twojego projektu Rust, utwórz api.rs I cli.rs pliki, w których zaimplementujesz funkcje wywołania API i CLI.
dotknij src/api.rs src/cli.rs
Polecenie powinno utworzyć żądane pliki w katalogu roboczym twojego projektu. Po zapisaniu funkcjonalności w wyznaczonych plikach w celu rozdzielenia obaw, wywołasz funkcje w pliku główny funkcjonować w Twoim główny.rs plik.
Wykonywanie żądań API do API CoinMarketCap za pomocą Reqwest
API CoinMarketCap umożliwia dostęp i integrację danych kryptowaluty z ich aplikacjami. Interfejs API zapewnia punkty końcowe dla notowań, notowań rynkowych, informacji giełdowych, narzędzi do konwersji, danych historycznych i metadanych.
Po zalogowaniu możesz założyć konto CoinMarketCap i pobrać swój klucz API na stronie dewelopera Coinmarketcap. Możesz również zapoznać się z dokumentacją, aby uzyskać szczegółowe instrukcje i limity stawek.
Aby wysłać żądanie API do /v2/cryptocurrency/quotes/latest punkt końcowy, który zwraca najnowsze notowania rynkowe dla jednej lub więcej kryptowalut, musisz zdefiniować struktury dla danych, które chcesz wyodrębnić z API i określ atrybuty za pomocą cechy pochodnej Serde.
Następnie możesz zażądać API do punktu końcowego i użyć serde_json crate do deserializacji danych JSON do struktury w celu ułatwienia operacji na typach danych Rust.
Tutaj jest definicja struktury który pobiera ID, nazwa, symbol, I cytat dane określonych kryptowalut
#[pochodne (debugowanie, deserializacja, serializacja)]
strukturaOdpowiedź API {
dane: dane,
}#[pochodne (debugowanie, deserializacja, serializacja)]
strukturaDane {
// Dodaj wymagane pola z obiektu danych
#[serde (zmień nazwę = "1")]
crypto_1: kryptowaluta,#[serde (zmień nazwę = "2")]
crypto_2: kryptowaluta,#[serde (zmień nazwę = "3")]
crypto_3: kryptowaluta,#[serde (zmień nazwę = "4")]
crypto_4: kryptowaluta,
}#[pochodne (debugowanie, deserializacja, serializacja)]
strukturaKryptowaluty {
ID: u32,
nazwa: Strunowy,
symbol: Strunowy,
// W razie potrzeby dodaj inne pola
cytat: cytat,
}#[pochodne (debugowanie, deserializacja, serializacja)]
strukturaCytat {
USD: Szczegóły oferty,
}
#[pochodne (debugowanie, deserializacja, serializacja)]
strukturaSzczegóły oferty {
cena: f64,
objętość_24h: f64,
// W razie potrzeby dodaj inne pola
}
Interfejs API zwraca dane, których może być więcej niż potrzebujesz, ale z serdeczny crate możesz podać dokładne dane, których potrzebujesz, jak pokazano powyżej.
Teraz możesz zażądać punktu końcowego za pomocą Reqwest, tworząc nowego klienta, który wysyła żądanie GET z wymaganymi parametrami.
używać reqwest:: Klient;
używać żądaj:: Błąd;pubasynchronicznyprzypkrypto() -> Wynik {
pozwalać klient = Klient:: nowy();pozwalać adres URL = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";
pozwalać parametry = [
("ID", "1,2,3,4"),
("konwertować", „USD”), // Konwersja wartości rynkowych na USD
];pozwalać odpowiedź = klient.get (url)
.nagłówek("X-CMC_PRO_API_KEY", „TWÓJ KLUCZ API TUTAJ”)
.zapytanie(¶metry)
.wysłać().czekać na?;
;pozwalać wynik: ApiResponse = serde_json:: from_str(&*response.text().czekać na?;).odwijać się();
drukuj!("{:#?}", wynik);
OK(())
}
The krypto jest funkcją asynchroniczną z włączoną obsługą tokio, która żąda punktu końcowego za pomocą klient.pobierz funkcja po utworzeniu instancji klienta z Klient:: nowy metoda.
The nagłówek wywołanie funkcji w instancji konstruktora żądań pobiera klucz API, plik zapytanie funkcja przyjmuje parametry, a wysłać funkcja wysyła żądanie.
The krypto funkcja deserializuje odpowiedź JSON za pomocą serde_json's z_str metoda, która przyjmuje ciąg JSON.
Wreszcie, krypto Funkcja drukuje wynik operacji deserializacji na konsoli.
Pobieranie argumentów CLI w Rust
W Twoim cli.rs plik, zaimportujesz plik krypto funkcja od api.rs file i wywołaj funkcję, jeśli użytkownik wybierze „crypto” jako argument przy uruchamianiu projektu z plikiem bieg ładunków Komenda.
Oto jak możesz użyć std:: śr funkcja, aby pobrać argument z wiersza poleceń:
używać std:: env;
używać skrzynia:: api:: krypto;pubasynchronicznyprzypcli() {
pozwalać argumenty: Vec<Strunowy> = env:: args().collect();
Jeśli args.len() > 1 && argumenty[1] == „krypto” {
krypto().czekać na.odwijać się();
} w przeciwnym razie {
drukuj!("Niepoprawna komenda. Użycie: kryptowaluta cargo”);
}
}
The cli funkcja pobiera wszystkie argumenty z wiersza poleceń z env:: args().collect() funkcjonować. The Jeśli inaczej instrukcja sprawdza, czy istnieje dodatkowy argument „crypto”. Jeśli warunek ma wartość true, to cli funkcja wywołuje krypto funkcjonować; w przeciwnym razie cli funkcja drukuje ciąg znaków na konsoli.
W końcu możesz zadzwonić do cli funkcja w główny funkcjonować. Musisz dodać tzw #[tokio:: główny] atrybut od główny funkcje nie mogą być asynchroniczne w Rust.
mod interfejs API;
mod cli;
używać skrzynia:: cli:: cli;
#[tokio:: główny]
asynchronicznyprzypgłówny() {
cli().czekać na;
}
The główny funkcja wywołuje cli funkcja z czekać na funkcja, która wstrzymuje wykonywanie do czasu uzyskania wyniku a Przyszły jest gotowy.
Oto wynik uruchomienia kryptowaluta cargo Komenda:
Możesz tworzyć zaawansowane aplikacje internetowe w Rust
Rust to wszechstronny język programowania z wieloma przypadkami użycia i aplikacjami. Możesz wykorzystać frameworki internetowe innych firm, takie jak Actix, Rocket i Warp, do tworzenia aplikacji internetowych w Rust. Frameworki te zapewniają większość funkcjonalności potrzebnych do tworzenia nowoczesnych aplikacji internetowych.