42 releases (24 stable)

7.4.0 Apr 20, 2025
7.3.1 Nov 11, 2023
7.2.0 Nov 26, 2022
7.0.0 Jul 12, 2022
0.0.2 Mar 4, 2015

#7 in Authentication

Download history 282786/week @ 2025-10-27 286293/week @ 2025-11-03 281763/week @ 2025-11-10 312996/week @ 2025-11-17 282334/week @ 2025-11-24 315980/week @ 2025-12-01 296391/week @ 2025-12-08 289101/week @ 2025-12-15 185103/week @ 2025-12-22 168058/week @ 2025-12-29 305010/week @ 2026-01-05 324031/week @ 2026-01-12 339591/week @ 2026-01-19 351654/week @ 2026-01-26 387299/week @ 2026-02-02 353619/week @ 2026-02-09

1,459,783 downloads per month
Used in 1,633 crates (734 directly)

Apache-2.0

125KB
190 lines

This library makes it easy to read passwords in a console application on all platforms, Unix, Windows, WASM, etc.

Here's how you can read a password:

let password = rpassword::read_password().unwrap();
println!("Your password is {}", password);

You can also prompt for a password:

let password = rpassword::prompt_password("Your password: ").unwrap();
println!("Your password is {}", password);

Finally, in unit tests, you might want to pass a Cursor, which implements BufRead. In that case, you can use read_password_from_bufread and prompt_password_from_bufread:

use std::io::Cursor;

let mut mock_input = Cursor::new("my-password\n".as_bytes().to_owned());
let password = rpassword::read_password_from_bufread(&mut mock_input).unwrap();
println!("Your password is {}", password);

let mut mock_input = Cursor::new("my-password\n".as_bytes().to_owned());
let mut mock_output = Cursor::new(Vec::new());
let password = rpassword::prompt_password_from_bufread(&mut mock_input, &mut mock_output, "Your password: ").unwrap();
println!("Your password is {}", password);

Rustastic Password

rpassword makes it easy to read passwords from Rust code in console applications on all platforms, Unix, Windows, WASM and more. It's similar to Linux's C function getpass() or Python's getpass module.

rpassword logo and headline

rpassword is made available free of charge. You can support its development through Liberapay 💪

Usage

Add rpassword as a dependency in Cargo.toml:

[dependencies]
rpassword = "7.4"

See examples and docs at https://docs.rs/rpassword.

License

The source code is released under the Apache 2.0 license.

Dependencies

~0–12MB
~80K SLoC