Rust 从键盘获取Y/N响应

Rust 从键盘获取Y/N响应,rust,Rust,我想让用户回答一个Y或N的问题。基本上,我不知道我在做什么,但这是我的尝试 fn ask_confirm(question: &str) -> bool { println!("{}",question); loop { match std::io::stdin().read_u8().map(|x| x as char) { Ok('y') | Ok('Y') => return true, O

我想让用户回答一个Y或N的问题。基本上,我不知道我在做什么,但这是我的尝试

fn ask_confirm(question: &str) -> bool {
    println!("{}",question);
    loop {
        match std::io::stdin().read_u8().map(|x| x as char) {
            Ok('y') | Ok('Y') => return true,
            Ok('n') | Ok('N') => return false,
            Ok(_) => println!("y/n only please."),
            Err(e) => ()
        }
    }
}
这会导致无限循环。错误读取未知错误OS error 8 FormatMessageW在Win 7上返回错误15105。不管怎样,输入都无法识别。

我找不到读取方法。我用了我回答的逻辑。与上一个问题不同,因为您知道您只需要Y或N,所以此方法应该可以毫无顾虑地工作。但是,像\sy这样的输入,其中\s是空格,将导致此方法失败

fn ask_confirm(question: &str) -> bool {
    println!("{}",question);
    loop {
        let mut input = [0];
        let _ = std::io::stdin().read(&mut input);
        match input[0] as char {
            'y' | 'Y' => return true,
            'n' | 'N' => return false,
            _ => println!("y/n only please."),
        }
    }
}

你用的是什么版本的锈菌?如果您使用的是版本0.9,那么这可能会在主分支上修复。你可以。如果您使用的是master,那么。。。这可能是一个错误我使用的是3月28日安装的夜间版本0.10。我认为我的代码有缺陷,写这个函数的正确方法是什么?仅供参考,这对我来说很好,因为Linux上的tip上的最新锈迹。所以我建议提交一个bug。我按照要求提交了一份bug报告。FWIW,当这个问题在一年半前写出来的时候!,Rust确实采用了read_x/read_x方法。现在它们是用外部板条箱提供的,就像byteorder一样。