Skip to main content

Tui

Struct Tui 

Source
pub struct Tui<'s> { /* private fields */ }
Expand description

The terminal a command’s views draw on, in the command’s session: up from the first view (Tui::run) until dropped, so every view of the command and the work between them (Tui::work) share one screen. While it is up, a data-beans kill asks the views to stop as Ctrl-C does (Tui::stop_requested), and work under way finishes first. Log records raised while it is up are held back and written once the normal screen is back, or as work between views runs.

Implementations§

Source§

impl<'s> Tui<'s>

Source

pub fn new(session: &'s Session) -> Self

Views of session, the screen not up yet.

Source

pub fn session(&self) -> &'s Session

Source

pub fn stop_requested(&self) -> bool

Whether data-beans kill asked the command to stop: no more views and no more work after the one running.

Source

pub fn run<S: Screen>(&mut self, screen: &mut S) -> Result<()>

Run screen until it is done, its keys to Screen::handle_key.

Source

pub fn run_with<S: Screen>( &mut self, screen: &mut S, on_key: impl FnMut(&mut S, KeyEvent), ) -> Result<()>

Run screen until it is done, each key (but Ctrl-C) handed to on_key. The screen comes up with the first view and stays up after. A stop interrupts the view, as Ctrl-C does. Blocking work (Screen::pending_work) runs on the normal screen, where its own progress output belongs, and the view comes back after it. The mouse and keys held with modifiers are reported only to a screen that asks for them, and events already queued (a turn of the wheel is several) are taken before the screen is drawn again. After an attach the modes are on again and the view is drawn whole.

Source

pub fn work<T>(&mut self, f: impl FnOnce() -> T) -> Result<T>

Run f, the command’s own work before, between or after its views, on the normal screen, its log records written as they come; the screen is taken back after it, to be drawn whole by the next view. A kill meanwhile lets f finish and is then Tui::stop_requested. Before the first view the screen stays down: f runs where it is, a kill waiting for it all the same.

Trait Implementations§

Source§

impl Drop for Tui<'_>

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§

§

impl<'s> Freeze for Tui<'s>

§

impl<'s> RefUnwindSafe for Tui<'s>

§

impl<'s> Send for Tui<'s>

§

impl<'s> Sync for Tui<'s>

§

impl<'s> Unpin for Tui<'s>

§

impl<'s> UnsafeUnpin for Tui<'s>

§

impl<'s> UnwindSafe for Tui<'s>

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more