Struct Layout

Source
pub struct Layout<M: Metrics> { /* private fields */ }
Expand description

Text layout.

Keep track of the byte index of each line in a UTF8-encoded so it can be indexed by cursor position.

Implementations§

Source§

impl<M: Metrics> Layout<M>

Source

pub fn new(metrics: M) -> Layout<M>

Create a new empty layout from a given metrics.

Source

pub fn span(&self) -> Span

Get the layout’s span.

Source

pub fn from<Chars: Iterator<Item = char>>(chars: Chars, metrics: M) -> Layout<M>

Create a new layout from a char iterator.

Source

pub fn try_from<E, Chars: Iterator<Item = Result<char, E>>>( chars: Chars, metrics: M, ) -> Result<Layout<M>, E>

Try to create a new layout from an unreliable char iterator.

Source

pub fn push(&mut self, c: char)

Extend the layout with a new character.

Source

pub fn byte_index(&self, str: &str, position: Position) -> Option<usize>

Get the byte index mapping to the given position in the input string slice.

It is assumed that the input string slice matches the layout. Otherwise, the returned index may not point to an UTF8 character boundary nor even be in the slice bounds.

Source

pub fn span_slice<'a>(&self, str: &'a str, span: Span) -> &'a str

Get the sub slice of the input string matching the given span.

Trait Implementations§

Source§

impl<M: Metrics> Extend<char> for Layout<M>

Source§

fn extend<Chars: IntoIterator<Item = char>>(&mut self, chars: Chars)

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more

Auto Trait Implementations§

§

impl<M> Freeze for Layout<M>
where M: Freeze,

§

impl<M> RefUnwindSafe for Layout<M>
where M: RefUnwindSafe,

§

impl<M> Send for Layout<M>
where M: Send,

§

impl<M> Sync for Layout<M>
where M: Sync,

§

impl<M> Unpin for Layout<M>
where M: Unpin,

§

impl<M> UnwindSafe for Layout<M>
where M: UnwindSafe,

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.

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