如何从具有超时的终端读取UTF-8字符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从具有超时的终端读取UTF-8字符?相关的知识,希望对你有一定的参考价值。
我正在尝试在Rust中实现命令行编辑库。
为了正确处理ESC键,我需要等待可能永远不会到达的转义序列的其余部分。
当前,我正在使用:
let stdin = io::stdin();
let mut chars = stdin.lock().chars();
let mut ch = try!(chars.next().unwrap());
但似乎无法指定超时。我应该尝试将Rust IO与poll function混合吗?
答案
async-std板条箱对此具有开箱即用的支持:
use async_std::io;
use std::time::Duration;
#[async_std::main]
async fn main() -> std::io::Result<()>
let input = io::timeout(Duration::from_secs(5), async
let stdin = io::stdin();
let mut line = String::new();
stdin.read_line(&mut line).await?;
Ok(line)
)
.await;
println!(":?", input);
Ok(())
以上是关于如何从具有超时的终端读取UTF-8字符?的主要内容,如果未能解决你的问题,请参考以下文章