Rust е един от най-добрите избори за изграждане на CLI приложения. Започнете, като създадете основно приложение за извличане на крипто данни.
CLI (Интерфейс на командния ред) е от решаващо значение при разработването на софтуер и системното администриране. CLI са леки текстови програми, които предлагат рационализиран начин за взаимодействие с компютри, които са благоприятни както за разработчици, така и за опитни потребители за множество случаи на употреба, включително автоматизация, скриптове и дистанционно администрация.
Rust набира популярност за създаване на CLI приложения. Rust предоставя мощни функции като прецизен контрол върху разпределението на паметта и безопасността на нишките, безопасността на паметта, паралелността и паралелизма, които можете да използвате за изграждане на мощни CLI приложения. Rust също може да се похвали с процъфтяваща екосистема от библиотеки и рамки, пригодени изрично за изграждане на CLI приложения.
Първи стъпки в изграждането на CLI приложения с Rust
Има няколко пакета на трети страни за изграждане на CLI приложения в Rust, включително
Ръкопляскане, 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(¶ms)
.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. Тези рамки предоставят повечето от функционалностите, необходими за изграждане на модерни уеб приложения.