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

instagram viewer
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(&parametry)
.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.