Struct Terminal

Source
pub struct Terminal<In: AsFd, Out: AsFd> { /* private fields */ }

Implementations§

Source§

impl Terminal<Stdin, Stdout>

Source

pub fn new() -> Result<Self>

Examples found in repository?
examples/raw_mode.rs (line 4)
3fn main() -> async_tty::Result<()> {
4    let terminal = Terminal::new()?;
5    println!("cooked mode\n1234567890");
6    terminal.set_raw_mode()?;
7    println!("raw mode\n1234567890");
8    terminal.set_cooked_mode()?;
9    println!("cooked mode\n1234567890");
10    Ok(())
11}
More examples
Hide additional examples
examples/alternate_screen.rs (line 8)
7async fn main() -> async_tty::Result<()> {
8    let mut terminal = Terminal::new()?;
9    terminal.switch_to_alternate_screen().await?;
10    println!("alternate screen");
11    sleep(Duration::from_secs(2)).await;
12    terminal.switch_to_main_screen().await?;
13    println!("main screen");
14    Ok(())
15}
examples/cursor.rs (line 10)
8async fn main() -> color_eyre::Result<()> {
9    color_eyre::install()?;
10    let mut terminal = async_tty::Terminal::new()?;
11    terminal.switch_to_alternate_screen().await?;
12    let cursor_movements = format!(
13        "{}at 20,10{}up 1{}down 2",
14        CursorPosition {
15            row: 10,
16            column: 20,
17        },
18        CursorUp { count: 1 },
19        CursorDown { count: 2 }
20    );
21    terminal.write_all(cursor_movements.as_bytes()).await?;
22    sleep(Duration::from_secs(2)).await;
23    terminal.switch_to_main_screen().await?;
24    Ok(())
25}
Source§

impl<In: AsFd, Out: AsFd> Terminal<In, Out>

Source

pub fn set_raw_mode(&self) -> Result<()>

Set the terminal to raw mode

Examples found in repository?
examples/raw_mode.rs (line 6)
3fn main() -> async_tty::Result<()> {
4    let terminal = Terminal::new()?;
5    println!("cooked mode\n1234567890");
6    terminal.set_raw_mode()?;
7    println!("raw mode\n1234567890");
8    terminal.set_cooked_mode()?;
9    println!("cooked mode\n1234567890");
10    Ok(())
11}
Source

pub fn set_cooked_mode(&self) -> Result<()>

Set the terminal to cooked mode

Examples found in repository?
examples/raw_mode.rs (line 8)
3fn main() -> async_tty::Result<()> {
4    let terminal = Terminal::new()?;
5    println!("cooked mode\n1234567890");
6    terminal.set_raw_mode()?;
7    println!("raw mode\n1234567890");
8    terminal.set_cooked_mode()?;
9    println!("cooked mode\n1234567890");
10    Ok(())
11}
Source

pub async fn switch_to_alternate_screen(&mut self) -> Result<()>

Switch to alternate screen buffer

Examples found in repository?
examples/alternate_screen.rs (line 9)
7async fn main() -> async_tty::Result<()> {
8    let mut terminal = Terminal::new()?;
9    terminal.switch_to_alternate_screen().await?;
10    println!("alternate screen");
11    sleep(Duration::from_secs(2)).await;
12    terminal.switch_to_main_screen().await?;
13    println!("main screen");
14    Ok(())
15}
More examples
Hide additional examples
examples/cursor.rs (line 11)
8async fn main() -> color_eyre::Result<()> {
9    color_eyre::install()?;
10    let mut terminal = async_tty::Terminal::new()?;
11    terminal.switch_to_alternate_screen().await?;
12    let cursor_movements = format!(
13        "{}at 20,10{}up 1{}down 2",
14        CursorPosition {
15            row: 10,
16            column: 20,
17        },
18        CursorUp { count: 1 },
19        CursorDown { count: 2 }
20    );
21    terminal.write_all(cursor_movements.as_bytes()).await?;
22    sleep(Duration::from_secs(2)).await;
23    terminal.switch_to_main_screen().await?;
24    Ok(())
25}
Source

pub async fn switch_to_main_screen(&mut self) -> Result<()>

Switch back to main screen buffer

Examples found in repository?
examples/alternate_screen.rs (line 12)
7async fn main() -> async_tty::Result<()> {
8    let mut terminal = Terminal::new()?;
9    terminal.switch_to_alternate_screen().await?;
10    println!("alternate screen");
11    sleep(Duration::from_secs(2)).await;
12    terminal.switch_to_main_screen().await?;
13    println!("main screen");
14    Ok(())
15}
More examples
Hide additional examples
examples/cursor.rs (line 23)
8async fn main() -> color_eyre::Result<()> {
9    color_eyre::install()?;
10    let mut terminal = async_tty::Terminal::new()?;
11    terminal.switch_to_alternate_screen().await?;
12    let cursor_movements = format!(
13        "{}at 20,10{}up 1{}down 2",
14        CursorPosition {
15            row: 10,
16            column: 20,
17        },
18        CursorUp { count: 1 },
19        CursorDown { count: 2 }
20    );
21    terminal.write_all(cursor_movements.as_bytes()).await?;
22    sleep(Duration::from_secs(2)).await;
23    terminal.switch_to_main_screen().await?;
24    Ok(())
25}

Trait Implementations§

Source§

impl<In: AsFd, Out: AsFd> AsyncWrite for Terminal<In, Out>

Source§

fn poll_write( self: Pin<&mut Self>, _cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>

Attempt to write bytes from buf into the object. Read more
Source§

fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<()>>

Attempts to flush the object, ensuring that any buffered data reach their destination. Read more
Source§

fn poll_shutdown( self: Pin<&mut Self>, _cx: &mut Context<'_>, ) -> Poll<Result<()>>

Initiates or attempts to shut down this writer, returning success when the I/O connection has completely shut down. Read more
Source§

fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize, Error>>

Like poll_write, except that it writes from a slice of buffers. Read more
Source§

fn is_write_vectored(&self) -> bool

Determines if this writer has an efficient poll_write_vectored implementation. Read more
Source§

impl<In: AsFd, Out: AsFd> Drop for Terminal<In, Out>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<In: AsFd, Out: AsFd> Unpin for Terminal<In, Out>

Auto Trait Implementations§

§

impl<In, Out> Freeze for Terminal<In, Out>
where In: Freeze, Out: Freeze,

§

impl<In, Out> RefUnwindSafe for Terminal<In, Out>
where In: RefUnwindSafe, Out: RefUnwindSafe,

§

impl<In, Out> Send for Terminal<In, Out>
where In: Send, Out: Send,

§

impl<In, Out> Sync for Terminal<In, Out>
where In: Sync, Out: Sync,

§

impl<In, Out> UnwindSafe for Terminal<In, Out>
where In: UnwindSafe, Out: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<W> AsyncWriteExt for W
where W: AsyncWrite + ?Sized,

Source§

fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>
where Self: Unpin,

Writes a buffer into this writer, returning how many bytes were written. Read more
Source§

fn write_vectored<'a, 'b>( &'a mut self, bufs: &'a [IoSlice<'b>], ) -> WriteVectored<'a, 'b, Self>
where Self: Unpin,

Like write, except that it writes from a slice of buffers. Read more
Source§

fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
where Self: Sized + Unpin, B: Buf,

Writes a buffer into this writer, advancing the buffer’s internal cursor. Read more
Source§

fn write_all_buf<'a, B>( &'a mut self, src: &'a mut B, ) -> WriteAllBuf<'a, Self, B>
where Self: Sized + Unpin, B: Buf,

Attempts to write an entire buffer into this writer. Read more
Source§

fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>
where Self: Unpin,

Attempts to write an entire buffer into this writer. Read more
Source§

fn write_u8(&mut self, n: u8) -> WriteU8<&mut Self>
where Self: Unpin,

Writes an unsigned 8-bit integer to the underlying writer. Read more
Source§

fn write_i8(&mut self, n: i8) -> WriteI8<&mut Self>
where Self: Unpin,

Writes a signed 8-bit integer to the underlying writer. Read more
Source§

fn write_u16(&mut self, n: u16) -> WriteU16<&mut Self>
where Self: Unpin,

Writes an unsigned 16-bit integer in big-endian order to the underlying writer. Read more
Source§

fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>
where Self: Unpin,

Writes a signed 16-bit integer in big-endian order to the underlying writer. Read more
Source§

fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>
where Self: Unpin,

Writes an unsigned 32-bit integer in big-endian order to the underlying writer. Read more
Source§

fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>
where Self: Unpin,

Writes a signed 32-bit integer in big-endian order to the underlying writer. Read more
Source§

fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>
where Self: Unpin,

Writes an unsigned 64-bit integer in big-endian order to the underlying writer. Read more
Source§

fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>
where Self: Unpin,

Writes an signed 64-bit integer in big-endian order to the underlying writer. Read more
Source§

fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>
where Self: Unpin,

Writes an unsigned 128-bit integer in big-endian order to the underlying writer. Read more
Source§

fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>
where Self: Unpin,

Writes an signed 128-bit integer in big-endian order to the underlying writer. Read more
Source§

fn write_f32(&mut self, n: f32) -> WriteF32<&mut Self>
where Self: Unpin,

Writes an 32-bit floating point type in big-endian order to the underlying writer. Read more
Source§

fn write_f64(&mut self, n: f64) -> WriteF64<&mut Self>
where Self: Unpin,

Writes an 64-bit floating point type in big-endian order to the underlying writer. Read more
Source§

fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>
where Self: Unpin,

Writes an unsigned 16-bit integer in little-endian order to the underlying writer. Read more
Source§

fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>
where Self: Unpin,

Writes a signed 16-bit integer in little-endian order to the underlying writer. Read more
Source§

fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>
where Self: Unpin,

Writes an unsigned 32-bit integer in little-endian order to the underlying writer. Read more
Source§

fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>
where Self: Unpin,

Writes a signed 32-bit integer in little-endian order to the underlying writer. Read more
Source§

fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>
where Self: Unpin,

Writes an unsigned 64-bit integer in little-endian order to the underlying writer. Read more
Source§

fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>
where Self: Unpin,

Writes an signed 64-bit integer in little-endian order to the underlying writer. Read more
Source§

fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>
where Self: Unpin,

Writes an unsigned 128-bit integer in little-endian order to the underlying writer. Read more
Source§

fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>
where Self: Unpin,

Writes an signed 128-bit integer in little-endian order to the underlying writer. Read more
Source§

fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>
where Self: Unpin,

Writes an 32-bit floating point type in little-endian order to the underlying writer. Read more
Source§

fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>
where Self: Unpin,

Writes an 64-bit floating point type in little-endian order to the underlying writer. Read more
Source§

fn flush(&mut self) -> Flush<'_, Self>
where Self: Unpin,

Flushes this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Source§

fn shutdown(&mut self) -> Shutdown<'_, Self>
where Self: Unpin,

Shuts down the output stream, ensuring that the value can be dropped cleanly. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.