pub struct TerminalGuard { /* private fields */ }Expand description
Owned terminal that restores the shell on drop.
Construct once at the top of app::run; keep it alive for the
duration of the main loop; let it drop. Do not construct twice
(the second enable_raw_mode() is idempotent but the second
EnterAlternateScreen stacks).
Implementations§
Source§impl TerminalGuard
impl TerminalGuard
Sourcepub fn setup() -> Result<Self>
pub fn setup() -> Result<Self>
Take over the terminal: raw mode, alternate screen, mouse, bracketed paste, focus events.
§Errors
Enabling raw mode, entering the alternate screen and enabling the input
modes, and building the backing Terminal. A failure after raw mode is
on restores the terminal before returning, so an Err never leaves the
shell in raw mode. A terminal without the kitty keyboard protocol is
not an error — that probe degrades to the legacy encoding.
Sourcepub fn inner_mut(&mut self) -> &mut Terminal<CrosstermBackend<Stdout>>
pub fn inner_mut(&mut self) -> &mut Terminal<CrosstermBackend<Stdout>>
Mutable access for the render pass.
Sourcepub fn restore_now(&mut self)
pub fn restore_now(&mut self)
Restore terminal state now. Idempotent so normal exit, signal exit, and Drop can all share the same call site safely.
Trait Implementations§
Source§impl Drop for TerminalGuard
impl Drop for TerminalGuard
Auto Trait Implementations§
impl Freeze for TerminalGuard
impl RefUnwindSafe for TerminalGuard
impl Send for TerminalGuard
impl Sync for TerminalGuard
impl Unpin for TerminalGuard
impl UnsafeUnpin for TerminalGuard
impl UnwindSafe for TerminalGuard
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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