pub struct Tui { /* private fields */ }Expand description
Ported from TUI. Go’s program/ready/done fields (the Bubble
Tea program handle and its lifecycle channels) become, respectively:
a channel Sender<TuiEvent> the running event loop listens on
(tx), and two AtomicBools (ready/done) standing in for Go’s
closed-channel-as-signal idiom. filter is unchanged from the
pre-existing port.
Implementations§
Source§impl Tui
impl Tui
Sourcepub fn start(&self, out: Box<dyn Write + Send>) -> Result<(), TuiError>
pub fn start(&self, out: Box<dyn Write + Send>) -> Result<(), TuiError>
Ported from TUI.Start. Takes &self rather than Go’s method
receiver’s implicit &mut: Tui is shared via Arc<Tui> (see
Context), so quit/println must be callable from other
threads while this runs its event loop, exactly the situation
Go’s version handles with its own program/ready/done
fields – interior mutability (the Mutex/AtomicBool fields
above) plays the same role here.
Sets up a ratatui terminal with a one-line inline viewport
(Viewport::Inline(1)), matching Go’s tea.Println pattern:
log lines print permanently above the viewport via
Terminal::insert_before, and the viewport itself always shows
the current filter status line. Blocks until a quit is
requested (either Ctrl-C typed into the terminal or
Tui::quit called from elsewhere), matching Go’s
program.Run() blocking semantics.
Sourcepub fn quit(&self)
pub fn quit(&self)
Ported from TUI.Quit. Go’s waitReady blocks the caller up to
5 seconds waiting for start to have run at least once before
quitting; this port instead checks the ready flag immediately
and no-ops if start hasn’t set it yet (or has already cleared
it on exit), which preserves the safety guarantee (“calling
quit before/after start never panics or blocks”) without
actually blocking a test for 5 wall-clock seconds.
Sourcepub fn println(&self, line: &str)
pub fn println(&self, line: &str)
Ported from TUI.Println. Writes directly to the stored output
if the TUI has already stopped (mirrors Go’s done channel
check); otherwise forwards the colorized line into the running
event loop’s channel. No-ops if start was never called,
mirroring Go’s ready select-default-return.
Sourcepub fn new_writer(self: &Arc<Self>) -> TuiWriter ⓘ
pub fn new_writer(self: &Arc<Self>) -> TuiWriter ⓘ
Ported from NewWriter/tuiWriter. Returns a Write
implementation that forwards each line written to it (minus a
single trailing newline, matching Go’s strings.TrimSuffix) to
Tui::println.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Tui
impl RefUnwindSafe for Tui
impl Send for Tui
impl Sync for Tui
impl Unpin for Tui
impl UnsafeUnpin for Tui
impl UnwindSafe for Tui
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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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