# ask_input โจ๏ธ
[](https://www.rust-lang.org/)
[](LICENSE)
[](https://docs.rs/ask_input)
A micro-library for keyboard input in Rust. No extra code โ just input and get values!
## ๐ Description
`ask_input` is a tiny wrapper over Rust's standard I/O. One function. All types. Rust figures out the type automatically.
### Features:
- ๐ฏ One function for everything
- ๐ง Smart type detection
- ๐ก๏ธ Automatic stdout flushing to prevent prompt-freezing
- โก Zero dependencies
## โ๏ธ Installation
Add to your `Cargo.toml`:
```toml
[dependencies]
ask_input = "0.3.0"
```
## ๐งช Examples
### Basic usage with `expect`
```rust
use ask_input::input;
fn main() {
let age: i32 = input().expect("Failed to read age");
let price: f64 = input().expect("Failed to read price");
let name: String = input().expect("Failed to read name");
println!("Age: {}, Price: {}, Name: {}", age, price, name);
}
```
### With `match` for graceful error handling
```rust
use ask_input::input;
fn main() {
println!("Enter your age:");
let age: i32 = match input() {
Ok(num) => num,
Err(_) => {
println!("Invalid input! Using default age 18.");
18
}
};
println!("Your age: {}", age);
}
```
### With `unwrap_or` for default values
```rust
use ask_input::input;
fn main() {
// If input fails, use 0.0 as default
let price: f64 = input().unwrap_or(0.0);
println!("Price: {}", price);
}
```
## ๐ฆ Functions
- `input::<T>()` โ Input any type (i32, f64, String, etc.)
## ๐ Supported Types
| `i32` | `42` | Leading/trailing whitespace trimmed |
| `f64` | `3.14` | Leading/trailing whitespace trimmed |
| `String` | `Hello` | Whitespace preserved (only newline removed) |
| `bool` | `true` | Case-sensitive, whitespace trimmed |
| `i64`, `u32`... | Any numeric | Whitespace trimmed |
## โ ๏ธ Breaking Changes (v0.1.0 โ v0.2.0)
- `int_input()` โ `input::<i32>()`
- `float_input()` โ `input::<f64>()`
- `str_input()` โ `input::<String>()`
- Now returns `Result` instead of panicking
## ๐ Changelog (v0.2.0 โ v0.3.0)
- Added automatic `io::stdout().flush()` before reading input. This guarantees that `print!` prompts appear on screen instantly, fixing terminal output freezing.
- Updated all inline documentation to English.
## ๐ค Author
- **FelineFantasy**
- **License**: MIT