2 releases (1 stable)
1.0.0 | May 7, 2023 |
---|---|
0.1.0 | May 18, 2020 |
#706 in Command-line interface
Used in 2 crates
15KB
178 lines
scanpw
Read a password from standard input
Overview
scanpw
provides a macro and a function (for more granular error handling) to
facilitate reading passwords from standard input in a secure manner. It expands
to an expression that returns a String
, so it can be assigned to
a variable or used directly. The macro may take arguments like those to
print
, which can be used to generate a prompt.
Examples
Simple prompt
let password = scanpw!("Password: ");
This results in a prompt that looks like this (where _
represents where the
user will start typing):
Password: _
No prompt
let password = scanpw!();
Formatted prompt
let password = scanpw!("Password for {}: ", username);
Custom echo behavior
If the first argument to scanpw
is an expression of type Option<char>
instead of a string literal, it is used to either set a custom replacement
character (like Some('X')
) or disable echoing entirely (like None
). For
example:
// Don't print a '*' for each character the user types
let echo_settings: Option<char> = None;
let password = scanpw!(echo_settings, "Password: ");
The default behavior is to echo *
s for each character entered.
Dependencies
~3–44MB
~650K SLoC