Rust — один из лучших вариантов для создания CLI-приложений. Начните с создания базового приложения для сбора криптографических данных.

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

Rust набирает популярность для создания приложений CLI. Rust предоставляет мощные функции, такие как детальный контроль над распределением памяти и безопасностью потоков, безопасностью памяти, параллелизмом и параллелизмом, которые вы можете использовать для создания мощных приложений CLI. Rust также может похвастаться процветающей экосистемой библиотек и фреймворков, специально предназначенных для создания приложений CLI.

Приступаем к созданию CLI-приложений на Rust

instagram viewer

Существует несколько сторонних пакетов для создания приложений CLI в Rust, в том числе Хлопать в ладоши, StructOpt, и Термион ящики. Эти ящики предоставляют функции, необходимые для разработки современных инструментов CLI.

Кроме того, Rust предоставляет станд:: env crate в своей стандартной библиотеке, которая предоставляет функциональные возможности для работы с переменными среды и аргументами командной строки. станд:: env crate предлагает ряд методов и типов для работы со средами в независимой от платформы манере.

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

Запустите эту команду, чтобы создать новый проект Rust для вашего приложения CLI с помощью Cargo, инструмента управления пакетами Rust:

груз новый crypto_cli

Вы узнаете, как создать приложение CLI, которое вызывает API Coinmarketcap с Запрос ящик, предоставляющий функции для изготовления HTTP-запросы в Rust.

Откройте свой Груз.томл файл и добавьте запрос и Токио ящики к зависимостям вашего проекта:

[зависимости]
Токио = {версия = "1.15", функции = ["полный"] }
запрос = {версия = "0.11", функции = ["жсон"] }
серде = {версия = "1.0", функции = ["извлекать"] }
serde_json = "1.0"

Токио crate — это асинхронная библиотека времени выполнения, которая взаимодействует с запрос для асинхронного программирования. серде и serde_json ящики помогают с Сериализация и десериализация JSON.

в источник папку вашего проекта Rust, создайте api.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.

Вот определение структуры который извлекает идентификатор, имя, символ, и цитировать данные указанных криптовалют

#[получение (отладка, десериализация, сериализация)]
структураАпиответ {
данные: Данные,
}

#[получение (отладка, десериализация, сериализация)]
структураДанные {
// Добавляем нужные вам поля из объекта данных
#[serde (переименовать = "1")]
crypto_1: Криптовалюта,

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

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

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

#[получение (отладка, десериализация, сериализация)]
структураКриптовалюта {
идентификатор: U32,
имя: Нить,
символ: Нить,
// При необходимости добавляем другие поля
цитата: Цитата,
}

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

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

API возвращает данные, которые могут быть больше, чем вам нужно, но с серде crate, вы можете указать точные данные, которые вам нужны, как показано выше.

Теперь вы можете запросить конечную точку с помощью Reqwest, создав нового клиента, который делает запрос GET с требуемыми параметрами.

использовать запрос:: Клиент;
использовать Запрос:: Ошибка;

пабасинхронныйфнкрипто() -> Результат {
позволять клиент = Клиент:: новый();

позволять URL = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";

позволять параметры = [
("идентификатор", "1,2,3,4"),
("конвертировать", "ДОЛЛАР США"), // Преобразование рыночных значений в доллары США
];

позволять ответ = client.get (ссылка)
.заголовок("X-CMC_PRO_API_KEY", "ВАШ API-КЛЮЧ ЗДЕСЬ")
.запрос(и параметры)
.отправлять().Ждите?;
;

позволять результат: ApiResponse = serde_json:: from_str(&*response.text().Ждите?;).развернуть();

распечатать!("{:#?}", результат);
Хорошо(())
}

крипто function — это асинхронная функция с поддержкой tokio, которая запрашивает конечную точку с клиент.получить функция после создания экземпляра клиента с Клиент:: новый метод.

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

крипто функция десериализует ответ JSON с помощью serde_json from_str метод, который принимает строку JSON.

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

Получение аргументов CLI в Rust

В вашей кли.рс файл, вы импортируете крипто функцию от api.rs файл и вызвать функцию, если пользователь указывает «crypto» в качестве аргумента при запуске проекта с грузовой рейс команда.

Вот как вы можете использовать станд:: env функция для получения аргумента из командной строки:

использовать станд:: env;
использовать crate:: api:: crypto;

пабасинхронныйфнКли() {
позволять аргументы: Век<Нить> = env:: args().collect();

если args.len() > 1 && аргументы[1] == "крипто" {
крипто().Ждите.развернуть();
} еще {
распечатать!("Неверная команда. Использование: грузовой крипто");
}
}

Кли функция извлекает все аргументы из командной строки с env:: args().collect() функция. если еще Оператор проверяет наличие дополнительного аргумента «crypto». Если условное выражение истинно, Кли функция вызывает крипто функция; в противном случае Кли функция выводит строку на консоль.

Наконец, вы можете позвонить в Кли функция в основной функция. Вы должны добавить #[Токио:: основной] атрибут с основной функции не могут быть асинхронными в Rust.

мод API;
мод Кли;
использовать ящик:: кли:: кли;

#[Токио:: основной]
асинхронныйфносновной() {
кли().Ждите;
}

основной функция вызывает Кли функция с Ждите функция, которая приостанавливает выполнение до тех пор, пока не будет получен результат Будущее готов.

Вот результат запуска грузовой рейс крипто команда:

Вы можете создавать сложные веб-приложения на Rust

Rust — универсальный язык программирования со множеством вариантов использования и приложений. Вы можете использовать сторонние веб-фреймворки, такие как Actix, Rocket и Warp, для создания веб-приложений на Rust. Эти фреймворки предоставляют большинство функций, необходимых для создания современных веб-приложений.