Rust es una de las mejores opciones para crear aplicaciones CLI. Comience creando una aplicación básica de obtención de datos criptográficos.

CLI (interfaces de línea de comandos) es crucial en el desarrollo de software y la administración del sistema. Las CLI son programas livianos basados ​​en texto que ofrecen una forma simplificada de interactuar con computadoras que son favorables para desarrolladores y usuarios avanzados por igual para múltiples casos de uso, incluida la automatización, la creación de scripts y el control remoto administración.

Rust está ganando popularidad para crear aplicaciones CLI. Rust proporciona funciones potentes como control detallado sobre la asignación de memoria y la seguridad de subprocesos, la seguridad de la memoria, la concurrencia y el paralelismo que puede aprovechar para crear potentes aplicaciones CLI. Rust también se jacta de un próspero ecosistema de bibliotecas y marcos diseñados explícitamente para crear aplicaciones CLI.

Introducción a la creación de aplicaciones CLI con Rust

instagram viewer

Hay varios paquetes de terceros para crear aplicaciones CLI en Rust, incluidos Aplaudir, EstructuraOpt, y término cajas Estas cajas proporcionan las funciones que necesita para desarrollar herramientas CLI modernas.

Además, Rust proporciona una estándar:: env crate en su biblioteca estándar que proporciona funcionalidad para trabajar con variables de entorno y argumentos de línea de comandos. El estándar:: env crate ofrece una variedad de métodos y tipos para trabajar con entornos de manera independiente de la plataforma.

Utilizando el estándar:: env crate, sus programas Rust pueden interactuar con el entorno y adaptar su comportamiento en función de varios factores, incluidas las variables de entorno, los argumentos de la línea de comandos y el funcionamiento actual directorio.

Ejecute este comando para crear un nuevo proyecto de Rust para su aplicación CLI con Cargo, la herramienta de administración de paquetes de Rust:

carga nueva crypto_cli

Aprenderá a crear una aplicación CLI que llame a la API de Coinmarketcap con el Reqoeste caja que proporciona características para hacer Solicitudes HTTP en Rust.

Abre tu Cargo.toml archivar y agregar el solicitar y tokio cajas a las dependencias de su proyecto:

[dependencias]
tokio = { versión = "1.15", caracteristicas = ["lleno"] }
solicitar = { versión = "0.11", caracteristicas = ["json"] }
serde = { versión = "1.0", caracteristicas = ["derivar"] }
serde_json = "1.0"

El tokio crate es una biblioteca en tiempo de ejecución asíncrona que interopera con solicitar para programación asíncrona. El serde y serde_json las cajas ayudan con Serialización y deserialización JSON.

En el origen carpeta de su proyecto Rust, cree api.rs y cli.rs archivos en los que implementará las funcionalidades de llamada a la API y CLI.

toque src/api.rs src/cli.rs

El comando debería crear los archivos deseados en el directorio de trabajo de su proyecto. Después de escribir las funciones en sus archivos designados para la separación de preocupaciones, llamará a las funciones en el principal funcionar en su principal.rs archivo.

Realización de solicitudes de API a la API de CoinMarketCap con Reqwest

API de CoinMarketCap le permite acceder e integrar datos de criptomonedas en sus aplicaciones. La API proporciona puntos finales para listados, cotizaciones de mercado, información de intercambio, herramientas de conversión, datos históricos y metadatos.

Cuando inicia sesión, puede registrarse para obtener una cuenta de CoinMarketCap y recuperar su clave API en la página del desarrollador de Coinmarketcap. También puede consultar la documentación para obtener instrucciones detalladas y límites de tasa.

Para realizar una solicitud de API al /v2/cryptocurrency/quotes/latest punto final que devuelve la última cotización de mercado para una o más criptomonedas, tendrá que definir el estructuras para los datos que desea extraer de la API y especifique los atributos con el rasgo derivado de Serde.

Luego puede solicitar una API al punto final y usar el serde_json crate para deserializar los datos JSON en la estructura para operaciones más sencillas en los tipos de datos de Rust.

Aquí esta la definición de estructura que recupera el identificación, nombre, símbolo, y cita datos de las criptomonedas especificadas

#[derivar (depurar, deserializar, serializar)]
estructuraRespuesta API {
datos: datos,
}

#[derivar (depurar, deserializar, serializar)]
estructuraDatos {
// Agregue los campos que necesita del objeto de datos
#[serde (renombrar = "1")]
crypto_1: Criptomoneda,

#[serde (renombrar = "2")]
crypto_2: Criptomoneda,

#[serde (renombrar = "3")]
crypto_3: Criptomoneda,

#[serde (renombrar = "4")]
crypto_4: Criptomoneda,
}

#[derivar (depurar, deserializar, serializar)]
estructuracriptomoneda {
identificación: u32,
nombre: Cadena,
símbolo: Cadena,
// Agregue otros campos según sea necesario
cita: cita,
}

#[derivar (depurar, deserializar, serializar)]
estructuraCita {
USD: Detalles de cotización,
}

#[derivar (depurar, deserializar, serializar)]
estructuraPresupuestoDetalles {
precio: f64,
volumen_24h: f64,
// Agregue otros campos según sea necesario
}

La API devuelve datos que pueden ser más de los que necesita, pero con la serde crate, puede especificar los datos exactos que necesita, como se muestra arriba.

Ahora, puede solicitar el punto final con Reqwest creando un nuevo cliente que realiza la solicitud GET con los parámetros requeridos.

usar solicitud:: Cliente;
usar solicitud:: Error;

pubasíncronofncripto() -> Resultado {
dejar cliente = Cliente:: nuevo();

dejar dirección URL = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";

dejar parámetros = [
("identificación", "1,2,3,4"),
("convertir", "DÓLAR ESTADOUNIDENSE"), // Convertir valores de mercado a USD
];

dejar respuesta = cliente.get (url)
.encabezamiento("X-CMC_PRO_API_KEY", "TU CLAVE DE API AQUÍ")
.query(&parámetros)
.enviar().esperar?;
;

dejar resultado: ApiResponse = serde_json:: from_str(&*response.text()).esperar?;).desenvolver();

imprimir!("{:#?}", resultado);
De acuerdo(())
}

El cripto function es una función asíncrona habilitada para tokio que solicita el punto final con el cliente.obtener después de crear una instancia de cliente con el Cliente:: nuevo método.

El encabezamiento llamada de función en la instancia del generador de solicitudes toma su clave API, el consulta función toma en los parámetros, y el enviar función envía la solicitud.

El cripto La función deserializa la respuesta JSON con serde_json from_str método que toma una cadena JSON.

Finalmente, el cripto La función imprime el resultado de la operación de deserialización en la consola.

Recuperando argumentos CLI en Rust

En tus cli.rs archivo, importará el cripto función de la api.rs archivo y llame a la función si el usuario especifica "crypto" como argumento al ejecutar el proyecto con el carrera de carga dominio.

Así es como puede usar el estándar:: env función para recuperar el argumento de la línea de comando:

usar estándar:: env;
usar caja:: api:: crypto;

pubasíncronofncli() {
dejar argumentos: Vec<Cadena> = env:: args().collect();

si argumentos.len() > 1 && argumentos[1] == "cripto" {
cripto().esperar.desenvolver();
} demás {
imprimir!("Comando inválido. Uso: criptografía de ejecución de carga");
}
}

El cli recupera todos los argumentos de la línea de comando con el env:: args().collect() función. El si-más La declaración comprueba si hay un argumento adicional, "crypto". Si el condicional se evalúa verdadero, el cli función llama a la cripto función; de lo contrario, el cli La función imprime una cadena en la consola.

Finalmente, puede llamar al cli función en el principal función. Debes agregar el #[tokio:: principal] atributo desde principal Las funciones no pueden ser asíncronas en Rust.

modificación API;
modificación cli;
usar caja:: cli:: cli;

#[tokio:: principal]
asíncronofnprincipal() {
cli().esperar;
}

El principal función llama a la cli funcionar con el esperar función que suspende la ejecución hasta que el resultado de una Futuro está listo.

Aquí está el resultado de ejecutar el criptografía de ejecución de carga dominio:

Puede crear aplicaciones web sofisticadas en Rust

Rust es un lenguaje de programación versátil con muchos casos de uso y aplicaciones. Puede aprovechar marcos web de terceros como Actix, Rocket y Warp para crear aplicaciones web en Rust. Estos marcos proporcionan la mayoría de las funcionalidades necesarias para crear aplicaciones web modernas.