Tôi muốn chạy tệp thực thi chặn trên stdin và khi nhấn một phím mà cùng một ký tự được in ngay lập tức mà không cần Nhập phải được nhấn.Làm cách nào để đọc một ký tự từ stdin mà không phải nhấn enter?
Làm cách nào để đọc một ký tự từ stdin mà không phải nhấn Nhập? Tôi bắt đầu với ví dụ này:
fn main() {
println!("Type something!");
let mut line = String::new();
let input = std::io::stdin().read_line(&mut line).expect("Failed to read line");
println!("{}", input);
}
Tôi nhìn qua API và cố gắng thay thế read_line()
với bytes()
, nhưng tất cả những gì tôi cố gắng đòi hỏi tôi phải nhấn Nhập trước khi đọc xảy ra.
Câu hỏi này được hỏi cho C/C++, nhưng có vẻ là không có cách nào tiêu chuẩn để làm điều đó: Capture characters from standard input without waiting for enter to be pressed
Nó có thể không được doable trong Rust coi đó là không đơn giản trong C/C++.
Đây là vấn đề nền tảng chứ không phải ngôn ngữ. Trên các cửa sổ có các chức năng nhập ký tự, nhưng trên unix/linux, bạn phải thực hiện thiết bị đầu cuối ngoài chế độ đệm dòng. –
Bạn có thể sử dụng hàm 'getch' từ liên kết SO đã đề cập. Bạn chỉ cần biên dịch nó thành một đối tượng chia sẻ và sử dụng nó từ Rust: https://gist.github.com/ihrwein/a4558d63d9250ee0bbf6 Bạn sẽ cần một trình biên dịch C và nó chỉ hoạt động trên Linux (ít nhất là tôi đã thử nghiệm nó ở đó) . –