Skip to main content

TextScreen

Struct TextScreen 

Source
pub struct TextScreen;
Expand description

Renders screens as plain text.

A renderer states weight however its medium can. Plain text has no weight to state, so this interpreter keeps every word and drops every emphasis, which is exactly what makes it the one to read a screen’s meaning back from.

Trait Implementations§

Source§

impl Clone for TextScreen

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for TextScreen

Source§

impl Debug for TextScreen

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for TextScreen

Source§

fn default() -> Self

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

impl Eq for TextScreen

Source§

impl PartialEq for TextScreen

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl ScreenSyntax for TextScreen

Source§

type Text = String

Represents one styled run of text.
Source§

type Line = String

Represents one composed line.
Source§

type Row = Vec<String>

Represents one collection row, which may state several lines.
Source§

type Body = Vec<String>

Represents the content of one page.
Source§

type Screen = Vec<String>

Represents one whole screen.
Source§

fn text(&self, content: impl Into<String>, _emphasis: Emphasis) -> Self::Text

States one run of text carrying one weight.
Source§

fn gauge(&self, gauge: Gauge) -> Self::Text

States one completed share as a bar of fixed width.
Source§

fn line(&self, runs: impl Iterator<Item = Self::Text>) -> Self::Line

Composes runs into one line.
Source§

fn edited_line( &self, prefix: impl Into<String>, text: &str, cursor: usize, _emphasis: Emphasis, ) -> Self::Line

States one line whose text is being edited in place, with its cursor.
Source§

fn row(&self, lines: impl Iterator<Item = Self::Line>) -> Self::Row

Composes lines into one row.
Source§

fn rows( &self, title: impl Into<String>, _focused: Option<usize>, rows: impl Iterator<Item = Self::Row>, ) -> Self::Body

States a named, ordered collection of rows, and which one the cursor rests on. Read more
Source§

fn message( &self, title: impl Into<String>, message: impl Into<String>, _emphasis: Emphasis, ) -> Self::Body

States one named message standing in for content there is none of yet.
Source§

fn draft( &self, title: impl Into<String>, placeholder: impl Into<String>, text: &str, cursor: usize, examples: impl Iterator<Item = (String, String)>, ) -> Self::Body

States a named text draft under edit, with its cursor, what to write in it, and the shapes of what may be written. Read more
Source§

fn record( &self, title: impl Into<String>, notes: impl Iterator<Item = String>, ) -> Self::Body

States a named record, quiet and read in order.
Source§

fn verbatim(&self, text: impl Into<String>) -> Self::Body

States one text a reader takes away, with nothing drawn around it. Read more
Source§

fn screen( &self, header: Self::Line, body: Self::Body, status: impl Into<String>, footer: Self::Line, ) -> Self::Screen

Composes one page from what names it, what it holds, and what can be done to it.
Source§

fn screen_text(&self, screen: &Self::Screen) -> impl Iterator<Item = String>

Observes what one composed screen states, one entry per stated line. Read more
Source§

impl StructuralPartialEq for TextScreen

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<This> GaugeLaws<This> for This

Source§

fn gauge_laws(&self) -> Result<(), Error>

Checks that a gauge states a share without claiming more resolution than it has.

The laws checked are:

  1. a gauge occupies its stated width whatever share it states;
  2. no share is stated as filled before it is reached, and none is stated twice;
  3. nothing stated is nothing filled, and everything stated fills the whole track;
  4. the stated text occupies exactly one cell per counted cell.
§Errors

Returns the first violated law.

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<This> IntoExt<This> for This

Source§

fn to<R>(self) -> R
where This: Into<R>,

A version of Into::into function that can be used to explicitly specify the target conversion type.

use alux_sdk::*;
// `Into` requires context to infer the type,
let _: i64 = Into::into(42_i8);
// The opposite `From` requires context to infer the type,
let _: i64 = From::from(42_i8);
// `.to()` can be used in the same way as a postfix function (the same as `.into()`),
let _: i64 = 42_i8.to();
// but also with the type specified explicitly.
let _ = 42_i8.to::<i64>();
// Especially useful to chain multiple conversions inline.
let _: i64 = 42_i8.to::<i16>().to::<i32>().into();
Source§

impl<This> IntoIteratorExt<This> for This

Source§

fn try_collect_vec<T, E>(self) -> Result<Vec<T>, E>
where This: Iterator<Item = Result<T, E>>,

A variant of the try_collect and collect_vec combined function from the Itertools library. The materialized value is a Vec inside a Result object.

Returns the first error without collecting later values.

use alux_sdk::*;

let values = [Ok::<_, &str>(1), Ok(2), Ok(3)]
    .into_iter()
    .try_collect_vec();

assert_eq!(values, Ok(vec![1, 2, 3]));
Source§

fn collect_exact<T>(self, n: usize) -> Option<Vec<T>>
where This: Iterator<Item = T>,

Takes exactly n elements from the iterator.

Returns Some(Vec<T>) if the iterator yields exactly n elements, otherwise returns None.

use alux_sdk::*;

let v = [1, 2, 3];

assert_eq!(v.iter().copied().collect_exact(3), Some(vec![1, 2, 3]));
assert_eq!(v.iter().copied().collect_exact(4), None);
assert_eq!(v.iter().copied().collect_exact(2), None);
Source§

fn try_unzip<A, B, E>(self) -> Result<(Vec<A>, Vec<B>), E>
where This: IntoIterator<Item = Result<(A, B), E>>,

Efficiently splits an iterator of Result<(A, B), E> into two Vecs, short-circuiting on error.

Consumes the iterator, collecting all A elements into one vector and all B elements into another, without first allocating an intermediate vector of tuples. Returns the tuple (Vec<A>, Vec<B>) on success, or the first error encountered.

use alux_sdk::*;

let input = vec![Ok((1, "x")), Ok((2, "y"))];
let (xs, ys) = input.try_unzip::<_, _, ()>().unwrap();

assert_eq!(xs, vec![1, 2]);
assert_eq!(ys, vec!["x", "y"]);
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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