Aplicaciones de línea de comandos

¿Por qué Rust?

Escudo con una marca de aprobación

Sólido y rápido

Aunque simplemente estés escribiendo un breve script de un solo uso, puedes estar seguro que será rápido, fácil de testar y con mensajes útiles

Garantías de Rust
caja con una marca de aprobación

Fácil distribución

Compila todo a un único binario—no hay necesidad de que tus usuarios tengan un "runtime" o bibliotecas instaladas.

Cómo distribuir código Rust
Una página y un engranaje

Configuración robusta

Manipula archivos de configuración en múltiples plataformas con facilidad. Rust se encarga de los namespaces y formatos por tí.

Comenzar a configurar
Manual de ayuda

¿Manuales? Hecho.

Genera automáticamente la documentación de tu aplicación. Basta empaquetar los archivos generados y listo.

Aprende cómo
Tuberías

Datos entran, datos salen

Además de hablar con humanos, Rust tiene grandes herramientas para ayudarte a hablar con las máquinas.

Comunícate con las máquinas
3 troncos de madera apilados

Logging flexible

Añadir logging es muy fácil, y aún más fácil configurarlo para diferentes salidas y diferentes estilos.

Registra, rastrea, comprende

Una base de código mantenible

estructura de una aplicación de línea de comandos

Descubre errores ahora

¿Qué pasa si el archivo de configuración no existe o está corrupto? ¿Y si el contenido de esa variable de entorno está vacío? ¡Son casos fáciles de olvidar! Pero gracias a su forma de tratar los errores y al diseño de su biblioteca, Rust te guiará en esas situaciones de "qué pasa si" incluso antes de que ejecutes tu programa.

La gestión de errores en Rust
Las CLI no son ingeniería espacial

Extiende con facilidad más tarde

Rust te permite ser flexible a la hora de organizar tu código. Comienza con un único archivo y, cuando necesites más funcionalidad, refactoriza tu aplicación con la seguridad de que nada se va a romper.

Refactorizar en Rust

¡Comenzar!

Escribir un aplicación de línea de comandos es una forma magnífica de aprender Rust.

Define los argumentos de entrada

/// Read some lines of a file
#[derive(Debug, StructOpt)]
struct Cli {
    /// Input file to read
    file: String,
    /// Number of lines to read
    #[structopt(short = "n")]
    num: usize,
}

Escribe tu programa

use quicli::prelude::*;
use structopt::StructOpt;

fn main() -> CliResult {
    let args = Cli::from_args();
    read_file(&args.file)?
        .lines()
        .take(args.num)
        .for_each(|line| println!("{}", line));
    Ok(())
}
Aprende más con el libro de CLI

Uso en producción

logo de Sentry
Una de las razones por las que nos gustó Rust fue el ecosistema de crates.io. [...] Hay ya una gran infraestructura para crear interfaces de línea de comandos muy buenas.

– Armin Ronacher, Rust at Sentry – PolyConf 2017


No tengo ninguna queja por tener que trabajar con esta base de código. [...] Esto fue como un extra para mí: usar Rust para crear aplicaciones y herramientas para línea de comandos. Es muy bueno compilando para diferentes arquitecturas.

– Fletcher Nichol, Taking Rust to Production – RustFest Kyiv

logo de Habitat