Skip to main content

TerminalSession

Struct TerminalSession 

Source
pub struct TerminalSession { /* private fields */ }
Expand description

Complete RAII ownership of a terminal session, in either ScreenMode.

Construction enables raw mode and enhanced keyboard reporting, hides the cursor, and — depending on the mode — enters the alternate screen and enables mouse capture. Enhanced reporting is what lets crossterm distinguish chords such as Shift+Enter from plain Enter on ANSI terminals; Windows console events already carry modifier state through the native input API. Drop restores exactly what it took, including when unwinding from a panic. Pre-existing raw mode and keyboard-reporting stack entries are preserved. If construction fails partway through, it performs the same best-effort rollback before returning.

A split-footer session touches neither the alternate screen nor (by default) mouse capture, so the terminal’s scrollback, selection, and wheel keep working while the footer is up. It does not reserve or release the footer’s rows — that is the renderer’s job, since only it knows where the viewport landed: see pin_footer and close_footer.

Implementations§

Source§

impl TerminalSession

Source

pub fn enter() -> Result<Self>

Enter a full-screen session on the alternate screen, rolling back on failure. Shorthand for enter_with(ScreenMode::Alternate).

Source

pub fn enter_with(mode: ScreenMode) -> Result<Self>

Enter a session in mode, rolling back on failure.

Source

pub fn mode(&self) -> ScreenMode

The mode this session was entered in.

Source

pub fn leave(&mut self)

Restore the terminal immediately. Calling this more than once is safe.

Trait Implementations§

Source§

impl Drop for TerminalSession

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

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<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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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.