Struct andiskaz::terminal::Terminal

source ·
pub struct Terminal { /* private fields */ }
Expand description

An application’s handle to the terminal.

Implementations§

source§

impl Terminal

source

pub async fn run<F, A, T>(start: F) -> Result<T, Error>where F: FnOnce(Terminal) -> A + Send + 'static, A: Future<Output = T> + Send + 'static, T: Send + 'static,

Runs the terminal application with the default settings, i.e. minumum screen is 80x25, 20ms for frame rendering interval, and 20ms for event polling from the OS.

Gives the application a handle to the terminal. When the given start function finishes, the application’s execution stops as well.

After that start’s future returns, terminal services such as screen handle and events handle are not guaranteed to be available. One would prefer spawning tasks that use the terminal handle by joining them, and not detaching.

Returns an AlreadyRunning error if there is already an instance of terminal services executing. In other words, one should not call this function again if another call did not finish yet, otherwise it will panic.

Beware! If the given start future returns a Result, then run will return a double Result!!

source

pub async fn lock_now<'terminal>( &'terminal mut self ) -> Result<TerminalGuard<'terminal>, ServicesOff>

Locks the terminal immediately (except it has to wait for the lock to be available). A locked terminal handle is returned, on which an application can write to the screen or get the most recent event.

Screen is locked, event channel is locked.

source

pub async fn listen<'terminal>( &'terminal mut self ) -> Result<TerminalGuard<'terminal>, ServicesOff>

Listens for an event and only finishes when an event arrives. A locked terminal handle is returned, on which an application can write to the screen or get the most recent event, which will be present.

Screen is locked, event channel is locked.

source

pub fn clear_event(&mut self)

Clears the event channel. After this call, the current event is marked as read and it will no longer be available.

source

pub async fn wait_user<'terminal>( &'terminal mut self, delay: Duration ) -> Result<TerminalGuard<'terminal>, ServicesOff>

Waits for user input before continuing, but waits for some given time (delay). Clears any previous event after waiting and listening to a new event.

Trait Implementations§

source§

impl Clone for Terminal

source§

fn clone(&self) -> Terminal

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Terminal

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast for Twhere T: Any,

source§

fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>

Convert 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, Global>) -> Rc<dyn Any, Global>

Convert 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)

Convert &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)

Convert &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 Twhere T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T, Global>) -> Arc<dyn Any + Sync + Send, Global>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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 Twhere U: TryFrom<T>,

§

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.