typestar

Leer la entrada estándar en Rust

Un filtro lee líneas de stdin, así que se compone con cualquier otra herramienta.

use std::io::{self, BufRead, Write};

fn main() -> io::Result<()> {
    let stdin = io::stdin();
    let stdout = io::stdout();
    let mut out = stdout.lock();

    let mut total = 0usize;
    for line in stdin.lock().lines() {
        let line = line?;
        if line.trim().is_empty() {
            continue;
        }
        total += line.split_whitespace().count();
        writeln!(out, "{:>4} | {}", line.len(), line)?;
    }

    writeln!(out, "{total} words")?;
    Ok(())
}

Cómo funciona

  1. stdin().lock().lines() itera sin reasignar memoria.
  2. Cada línea llega como un Result, porque el IO puede fallar.
  3. Escribir a stdout con un lock evita vaciar el buffer por línea.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
401
Tokens
143
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 82 segundos.

Escribe este fragmento

Paso 1 de 1 en Entrada y salida; paso 6 de 12 en Herramientas CLI y clientes HTTP.

← Anterior Siguiente →