PT-BR — Instalação
Cargo.toml
[dependencies]
ruskin = "0.1"
main.rs
use ruskin::*;
EN — Installation
Cargo.toml
[dependencies]
ruskin = "0.1"
main.rs
use ruskin::*;
Uso básico / Basic usage
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.
All functions automatically retry until valid input is received. None panics on invalid input.
Referência de funções / Function reference
| 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
No function panics. Invalid inputs display an error message and re-prompt. To handle errors programmatically, 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();
}