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
impl Clone for TextScreen
impl Copy for TextScreen
Source§impl Debug for TextScreen
impl Debug for TextScreen
Source§impl Default for TextScreen
impl Default for TextScreen
impl Eq for TextScreen
Source§impl PartialEq for TextScreen
impl PartialEq for TextScreen
Source§impl ScreenSyntax for TextScreen
impl ScreenSyntax for TextScreen
Source§fn text(&self, content: impl Into<String>, _emphasis: Emphasis) -> Self::Text
fn text(&self, content: impl Into<String>, _emphasis: Emphasis) -> Self::Text
Source§fn gauge(&self, gauge: Gauge) -> Self::Text
fn gauge(&self, gauge: Gauge) -> Self::Text
Source§fn line(&self, runs: impl Iterator<Item = Self::Text>) -> Self::Line
fn line(&self, runs: impl Iterator<Item = Self::Text>) -> Self::Line
Source§fn edited_line(
&self,
prefix: impl Into<String>,
text: &str,
cursor: usize,
_emphasis: Emphasis,
) -> Self::Line
fn edited_line( &self, prefix: impl Into<String>, text: &str, cursor: usize, _emphasis: Emphasis, ) -> Self::Line
Source§fn row(&self, lines: impl Iterator<Item = Self::Line>) -> Self::Row
fn row(&self, lines: impl Iterator<Item = Self::Line>) -> Self::Row
Source§fn rows(
&self,
title: impl Into<String>,
_focused: Option<usize>,
rows: impl Iterator<Item = Self::Row>,
) -> Self::Body
fn rows( &self, title: impl Into<String>, _focused: Option<usize>, rows: impl Iterator<Item = Self::Row>, ) -> Self::Body
Source§fn message(
&self,
title: impl Into<String>,
message: impl Into<String>,
_emphasis: Emphasis,
) -> Self::Body
fn message( &self, title: impl Into<String>, message: impl Into<String>, _emphasis: Emphasis, ) -> Self::Body
Source§fn draft(
&self,
title: impl Into<String>,
placeholder: impl Into<String>,
text: &str,
cursor: usize,
examples: impl Iterator<Item = (String, String)>,
) -> Self::Body
fn draft( &self, title: impl Into<String>, placeholder: impl Into<String>, text: &str, cursor: usize, examples: impl Iterator<Item = (String, String)>, ) -> Self::Body
Source§fn record(
&self,
title: impl Into<String>,
notes: impl Iterator<Item = String>,
) -> Self::Body
fn record( &self, title: impl Into<String>, notes: impl Iterator<Item = String>, ) -> Self::Body
Source§fn verbatim(&self, text: impl Into<String>) -> Self::Body
fn verbatim(&self, text: impl Into<String>) -> Self::Body
impl StructuralPartialEq for TextScreen
Auto Trait Implementations§
impl Freeze for TextScreen
impl RefUnwindSafe for TextScreen
impl Send for TextScreen
impl Sync for TextScreen
impl Unpin for TextScreen
impl UnsafeUnpin for TextScreen
impl UnwindSafe for TextScreen
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<This> GaugeLaws<This> for This
impl<This> GaugeLaws<This> for This
Source§fn gauge_laws(&self) -> Result<(), Error>
fn gauge_laws(&self) -> Result<(), Error>
Checks that a gauge states a share without claiming more resolution than it has.
The laws checked are:
- a gauge occupies its stated width whatever share it states;
- no share is stated as filled before it is reached, and none is stated twice;
- nothing stated is nothing filled, and everything stated fills the whole track;
- the stated text occupies exactly one cell per counted cell.
§Errors
Returns the first violated law.
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 moreSource§impl<This> IntoExt<This> for This
impl<This> IntoExt<This> for This
Source§fn to<R>(self) -> Rwhere
This: Into<R>,
fn to<R>(self) -> Rwhere
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
impl<This> IntoIteratorExt<This> for This
Source§fn try_collect_vec<T, E>(self) -> Result<Vec<T>, E>
fn try_collect_vec<T, E>(self) -> Result<Vec<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>,
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>
fn try_unzip<A, B, E>(self) -> Result<(Vec<A>, Vec<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"]);