Skip to main content

Tui

Struct Tui 

Source
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

Source

pub fn new() -> Self

Ported from NewTUI.

Source

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.

Source

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.

Source

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.

Source

pub fn filter(&self) -> String

Ported from TUI.Filter.

Source

pub fn matches(&self, line: &str) -> bool

Ported from TUI.Matches.

Source

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§

Source§

impl Default for Tui

Source§

fn default() -> Tui

Returns the “default value” for a type. Read more

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

§

impl<T> Instrument for T

§

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

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

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

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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