Rust 如何在不显示用户输入的情况下获取密码输入?

Rust 如何在不显示用户输入的情况下获取密码输入?,rust,Rust,如何在不显示用户输入的情况下获取密码输入 fn main() { println!("Type Your Password"); // I want to hide input here, and do not know how let input = std::old_io::stdin().read_line().ok().expect("Failed to read line"); println!("{}", input); } 更新:您可以使用。引

如何在不显示用户输入的情况下获取密码输入

fn main() {
    println!("Type Your Password");

    // I want to hide input here, and do not know how
    let input = std::old_io::stdin().read_line().ok().expect("Failed to read line");

    println!("{}", input);
}
更新:您可以使用。引用自述:

rpassword
板条箱添加到您的
货物中。toml

[dependencies]
rpassword = "0.0.4"
然后使用
读取密码()
功能:

extern crate rpassword;

use rpassword::read_password;

fn main() {
    print!("Type a password: ");
    let password = read_password().unwrap();
    println!("The password is: '{}'", password);
}

旧答案 我想你最好的选择是:要么是它推荐的替代品(参见 ).当然,棘手的是它的平台不同(如果你能让它工作,它就像一个板条箱一样方便)


根据您的要求,您也可以尝试使用(板条箱“”);我还没有测试过它,但它看起来可能会关闭回显输入。

如果您提供的代码有什么作用,请不要让读者猜测(或尝试)它的作用。这是否应该不回显密码,但它会回显,或者代码根本不起作用?请编辑您的问题以扩展该信息。我认为stdin是否自动回显到stdout是由一些termios函数(在POSIX系统下)中的回显标志控制的。对github的快速研究表明,它与一些锈迹绑定:。我还没有深入研究过这个库,所以我不知道它的使用有多容易,但是你可以在这里找到一些有用的信息。如果在cmd中运行,这是有效的,但是如果在cygwinAs中运行失败,那么提示
键入密码:
不会显示在行缓冲标准输出上。您需要手动刷新它(
std::io::stdout().flush().unwrap();
)。