Rust е един от най-добрите избори за изграждане на CLI приложения. Започнете, като създадете основно приложение за извличане на крипто данни.

CLI (Интерфейс на командния ред) е от решаващо значение при разработването на софтуер и системното администриране. CLI са леки текстови програми, които предлагат рационализиран начин за взаимодействие с компютри, които са благоприятни както за разработчици, така и за опитни потребители за множество случаи на употреба, включително автоматизация, скриптове и дистанционно администрация.

Rust набира популярност за създаване на CLI приложения. Rust предоставя мощни функции като прецизен контрол върху разпределението на паметта и безопасността на нишките, безопасността на паметта, паралелността и паралелизма, които можете да използвате за изграждане на мощни CLI приложения. Rust също може да се похвали с процъфтяваща екосистема от библиотеки и рамки, пригодени изрично за изграждане на CLI приложения.

Първи стъпки в изграждането на CLI приложения с Rust

Има няколко пакета на трети страни за изграждане на CLI приложения в Rust, включително

instagram viewer
Ръкопляскане, StructOpt, и Термион щайги. Тези каси предоставят функциите, от които се нуждаете, за да разработите модерни CLI инструменти.

Освен това Rust предоставя a std:: env crate в стандартната си библиотека, която предоставя функционалност за работа с променливи на средата и аргументи на командния ред. The std:: env crate предлага набор от методи и типове за работа със среди по независим от платформата начин.

Използвайки std:: env щайга, вашите програми на Rust могат да взаимодействат със средата и да адаптират поведението си въз основа на различни фактори, включително променливи на средата, аргументи на командния ред и текущата работа указател.

Изпълнете тази команда, за да създадете нов проект на Rust за вашето CLI приложение с Cargo, инструмента за управление на пакети на Rust:

карго нов crypto_cli

Ще научите как да създадете CLI приложение, което извиква API на Coinmarketcap с Reqwest щайга, която предоставя функции за изработка HTTP заявки в Rust.

Отвори си Cargo.toml файл и добавете reqwest и токио каси към зависимостите на вашия проект:

[зависимости]
токио = { версия = "1.15", функции = ["пълен"] }
reqwest = { версия = "0.11", функции = ["json"] }
сърде = { версия = "1.0", функции = ["извличам"] }
serde_json = "1.0"

The токио crate е асинхронна библиотека по време на изпълнение, която взаимодейства с reqwest за асинхронно програмиране. The сърде и serde_json щайги помощ с JSON сериализация и десериализация.

В src папка на вашия проект Rust, създайте api.rs и cli.rs файлове, в които ще внедрите функциите на извикването на API и CLI.

докоснете src/api.rs src/cli.rs

Командата трябва да създаде желаните файлове в работната директория на вашия проект. След като напишете функционалностите в техните определени файлове за разделяне на проблемите, ще извикате функциите в основен функция във вашия main.rs файл.

Правене на API заявки към API на CoinMarketCap с Reqwest

API на CoinMarketCap позволява достъп и интегриране на данни за криптовалута в техните приложения. API предоставя крайни точки за листинги, пазарни котировки, борсова информация, инструменти за преобразуване, исторически данни и метаданни.

Когато влезете, можете да се регистрирате за акаунт в CoinMarketCap и да извлечете своя API ключ на страницата за програмисти на Coinmarketcap. Можете също да се обърнете към документацията за подробни инструкции и ограничения на скоростта.

За да направите заявка за API към /v2/cryptocurrency/quotes/latest крайна точка, която връща последната пазарна котировка за една или повече криптовалути, ще трябва да дефинирате структури за данните, които искате да извлечете от API, и укажете атрибутите с извличащата черта на Serde.

След това можете да поискате API към крайната точка и да използвате serde_json crate за десериализиране на JSON данните в структурата за по-лесни операции с типове данни на Rust.

Ето го дефиниция на структура който извлича документ за самоличност, име, символ, и цитат данни за посочените криптовалути

#[производство (отстраняване на грешки, десериализиране, сериализиране)]
структураApiResponse {
данни: данни,
}

#[производство (отстраняване на грешки, десериализиране, сериализиране)]
структураДанни {
// Добавяне на полета, от които се нуждаете от обекта с данни
#[serde (преименуване = "1")]
crypto_1: Криптовалута,

#[serde (преименуване = "2")]
crypto_2: Криптовалута,

#[serde (преименуване = "3")]
crypto_3: Криптовалута,

#[serde (преименуване = "4")]
crypto_4: Криптовалута,
}

#[производство (отстраняване на грешки, десериализиране, сериализиране)]
структураКриптовалута {
документ за самоличност: u32,
име: низ,
символ: низ,
// Добавете други полета, ако е необходимо
цитат: Цитат,
}

#[производство (отстраняване на грешки, десериализиране, сериализиране)]
структурацитат {
USD: QuoteDetails,
}

#[производство (отстраняване на грешки, десериализиране, сериализиране)]
структураQuoteDetails {
цена: f64,
том_24ч: f64,
// Добавете други полета, ако е необходимо
}

API връща данни, които може да са повече от необходимото, но с сърде щайга, можете да посочите точните данни, от които се нуждаете, както е показано по-горе.

Сега можете да поискате крайната точка с Reqwest, като създадете нов клиент, който прави GET заявката с необходимите параметри.

използване reqwest:: Клиент;
използване reqwest:: Грешка;

кръчмаасинхроненfnкрипто() -> Резултат {
позволявам клиент = Клиент:: нов ();

позволявам url = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";

позволявам параметри = [
("документ за самоличност", "1,2,3,4"),
("конвертиране", "ЩАТСКИ ДОЛАР"), // Преобразуване на пазарни стойности в USD
];

позволявам отговор = client.get (url)
.header(„X-CMC_PRO_API_KEY“, „ВАШИЯТ API КЛЮЧ ТУК“)
.query(&params)
.send().изчакайте?;
;

позволявам резултат: ApiResponse = serde_json:: from_str(&*response.text().изчакайте?;).unwrap();

println!("{:#?}", резултат);
Добре(())
}

The крипто е активирана от tokio асинхронна функция, която изисква крайната точка с client.get функция след създаване на клиентски екземпляр с Клиент:: нов метод.

The заглавка извикването на функция на екземпляра на конструктора на заявки приема вашия API ключ, the заявка функцията приема параметрите и изпрати функция изпраща заявката.

The крипто функцията десериализира JSON отговора със serde_json от_ул метод, който приема JSON низ.

И накрая, на крипто функцията отпечатва резултата от операцията за десериализация на конзолата.

Извличане на CLI аргументи в Rust

Във вашия cli.rs файл, ще импортирате крипто функция от api.rs файл и извикайте функцията, ако потребителят посочи „крипто“ като аргумент при стартиране на проекта с товарен пробег команда.

Ето как можете да използвате std:: env функция за извличане на аргумента от командния ред:

използване std:: env;
използване щайга:: api:: крипто;

кръчмаасинхроненfncli() {
позволявам аргументи: Vec<низ> = env:: args().collect();

ако args.len() > 1 && аргументи [1] == "крипто" {
крипто().изчакайте.unwrap();
} друго {
println!(„Невалидна команда. Употреба: карго бягане крипто");
}
}

The cli функцията извлича всички аргументи от командния ред с env:: args().collect() функция. The ако-иначе операторът проверява дали има допълнителен аргумент, „крипто“. Ако условното оценява true, the cli функция извиква крипто функция; в противен случай, cli функцията отпечатва низ към конзолата.

Накрая можете да се обадите на cli функция в основен функция. Трябва да добавите #[tokio:: main] атрибут тъй като основен функциите не могат да бъдат асинхронни в Rust.

мод api;
мод cli;
използване щайга:: cli:: cli;

#[tokio:: main]
асинхроненfnосновен() {
cli().изчакайте;
}

The основен функция извиква cli функция с изчакайте функция, която спира изпълнението до резултата от a Бъдеще готово е.

Ето резултата от изпълнението на cargo run crypto команда:

Можете да създавате сложни уеб приложения в Rust

Rust е многофункционален език за програмиране с много случаи на употреба и приложения. Можете да използвате уеб рамки на трети страни като Actix, Rocket и Warp за изграждане на уеб приложения в Rust. Тези рамки предоставят повечето от функционалностите, необходими за изграждане на модерни уеб приложения.