aboutsummaryrefslogtreecommitdiffstats
path: root/src/output.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2022-02-24 02:42:25 -0500
committerJesse Luehrs <doy@tozt.net>2022-02-24 02:50:33 -0500
commit246ae0894d4074c38ea2d2eb520e386b0d36d82d (patch)
treed2e681e4df655a63519193d0b797b09d0afdd4cc /src/output.rs
parentcd617e021bed862ac3794cc71123959c8d7d7dd1 (diff)
downloadtextmode-246ae0894d4074c38ea2d2eb520e386b0d36d82d.tar.gz
textmode-246ae0894d4074c38ea2d2eb520e386b0d36d82d.zip
move to tokio
Diffstat (limited to 'src/output.rs')
-rw-r--r--src/output.rs31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/output.rs b/src/output.rs
index 9b72438..378b7d4 100644
--- a/src/output.rs
+++ b/src/output.rs
@@ -1,4 +1,4 @@
-use futures_lite::io::AsyncWriteExt as _;
+use tokio::io::AsyncWriteExt as _;
use crate::private::Output as _;
@@ -16,11 +16,7 @@ impl ScreenGuard {
/// # Errors
/// * `Error::WriteStdout`: failed to write initialization to stdout
pub async fn new() -> crate::error::Result<Self> {
- write_stdout(
- &mut blocking::Unblock::new(std::io::stdout()),
- crate::INIT,
- )
- .await?;
+ write_stdout(&mut tokio::io::stdout(), crate::INIT).await?;
Ok(Self { cleaned_up: false })
}
@@ -33,11 +29,7 @@ impl ScreenGuard {
return Ok(());
}
self.cleaned_up = true;
- write_stdout(
- &mut blocking::Unblock::new(std::io::stdout()),
- crate::DEINIT,
- )
- .await
+ write_stdout(&mut tokio::io::stdout(), crate::DEINIT).await
}
}
@@ -46,10 +38,12 @@ impl Drop for ScreenGuard {
/// of an async drop mechanism. If this could be a problem, you should
/// call `cleanup` manually instead.
fn drop(&mut self) {
- futures_lite::future::block_on(async {
- // https://github.com/rust-lang/rust-clippy/issues/8003
- #[allow(clippy::let_underscore_drop)]
- let _ = self.cleanup().await;
+ tokio::task::block_in_place(move || {
+ tokio::runtime::Handle::current().block_on(async {
+ // https://github.com/rust-lang/rust-clippy/issues/8003
+ #[allow(clippy::let_underscore_drop)]
+ let _ = self.cleanup().await;
+ });
});
}
}
@@ -61,7 +55,7 @@ impl Drop for ScreenGuard {
/// then call [`refresh`](Output::refresh) when you want to update the
/// terminal on `stdout`.
pub struct Output {
- stdout: blocking::Unblock<std::io::Stdout>,
+ stdout: tokio::io::Stdout,
screen: Option<ScreenGuard>,
cur: vt100::Parser,
@@ -112,8 +106,9 @@ impl Output {
};
let cur = vt100::Parser::new(rows, cols, 0);
let next = vt100::Parser::new(rows, cols, 0);
+
Self {
- stdout: blocking::Unblock::new(std::io::stdout()),
+ stdout: tokio::io::stdout(),
screen: None,
cur,
next,
@@ -158,7 +153,7 @@ impl Output {
}
async fn write_stdout(
- stdout: &mut blocking::Unblock<std::io::Stdout>,
+ stdout: &mut tokio::io::Stdout,
buf: &[u8],
) -> crate::error::Result<()> {
stdout