crates.io  ·  v0.1

Ruskin

Biblioteca Rust para leitura de input no terminal — simples, sem dependências, com retry automático e validação embutida.
A Rust terminal input library — simple, zero-dependency, with automatic retry and built-in validation.

zero dependencies retry automático validação por closure tipos genéricos sem panic em input inválido

Cargo.toml

[dependencies] ruskin = "0.1"

main.rs

use ruskin::*;

Cargo.toml

[dependencies] ruskin = "0.1"

main.rs

use ruskin::*;
use ruskin::*; fn main() { let nome = prompt_string("Seu nome:"); let idade = prompt_int("Sua idade:"); let peso = prompt_f64("Seu peso (kg):"); let admin = prompt_bool("É admin? (s/n):"); let plano = prompt_menu("Escolha seu plano:", &["Gratuito", "Pro", "Enterprise"]); let email = prompt_validated( "Seu e-mail:", |s| if s.contains('@') { Some(s.to_string()) } else { None }, "e-mail deve conter '@'.", ); }
Retry automático — Todas as funções repetem automaticamente até receber uma entrada válida. Nenhuma entra em pânico com input inválido.
All functions automatically retry until valid input is received. None panics on invalid input.
Função / Function Retorno / Return Descrição / Description
prompt_string(prompt) String Lê texto não-vazio / reads non-empty text
prompt_string_optional(prompt) Option<String> Aceita vazio / accepts empty input
prompt_int(prompt) i64 Lê inteiro / reads integer
prompt_f64(prompt) f64 Lê decimal / reads decimal number
prompt_u64(prompt) u64 Lê inteiro sem sinal / unsigned integer
prompt_usize(prompt) usize Lê usize
prompt_number::<T>(prompt) T Qualquer tipo numérico / any numeric type
prompt_number_range(prompt, min, max) T Número dentro de intervalo / number within range
prompt_bool(prompt) bool Lê s/n e variações / reads y/n and variations
prompt_menu(prompt, &[options]) usize Menu numerado, retorna índice / numbered menu, returns index
prompt_validated(prompt, fn, err) T Validação por closure / closure-based validation
prompt_confirm(message) bool Confirmação de ação destrutiva / destructive action confirm
Comportamento de erro / Error behavior — Nenhuma função entra em pânico. Entradas inválidas exibem mensagem de erro e repetem o prompt. Para capturar erros programaticamente, use prompt_validated com sua própria lógica de retorno.
No function panics. Invalid inputs display an error message and re-prompt. To handle errors programmatically, use prompt_validated with your own return logic.
Número com intervalo / Number with range range
let nota = prompt_number_range("Nota (0–10):", 0.0_f64, 10.0);
Tipo genérico / Generic type generic
let x: i32 = prompt_number("Digite um i32:");
Validação customizada (CPF) / Custom validation validated
let cpf = prompt_validated( "CPF (somente números):", |s| { let digits: String = s.chars() .filter(|c| c.is_ascii_digit()) .collect(); if digits.len() == 11 { Some(digits) } else { None } }, "CPF deve ter 11 dígitos.", );
Confirmação antes de ação destrutiva / Destructive action confirm confirm
if prompt_confirm("Isso vai apagar todos os dados.") { deletar_tudo(); }