Skip to main content

PromptInput

Struct PromptInput 

Source
pub struct PromptInput { /* private fields */ }
Expand description

A cursor-aware text buffer used for the prompt input line.

The cursor is stored as a grapheme cluster index so that combining marks, emoji sequences, and other multi-codepoint clusters are treated as a single unit. It is always in the range 0..=grapheme_count.

Implementations§

Source§

impl PromptInput

Source

pub fn new() -> Self

Create an empty input.

Source

pub fn as_str(&self) -> &str

The full text content.

Source

pub fn text(&self) -> String

The full text content, owned.

Source

pub fn cursor(&self) -> usize

Current cursor position as a grapheme-cluster index.

Source

pub fn len_graphemes(&self) -> usize

Number of grapheme clusters in the buffer.

Source

pub fn graphemes(&self) -> Graphemes<'_>

Iterator over the grapheme clusters.

Source

pub fn is_empty(&self) -> bool

Whether the buffer is empty.

Source

pub fn clear(&mut self)

Clear all text and reset the cursor.

Source

pub fn set_text(&mut self, s: &str)

Set the text to s, placing the cursor at the end.

Source

pub fn cursor_left(&mut self)

Move the cursor left by one grapheme cluster (clamped at 0).

Source

pub fn cursor_right(&mut self)

Move the cursor right by one grapheme cluster (clamped at end).

Source

pub fn cursor_to_start(&mut self)

Move the cursor to the start of the line (grapheme index 0).

Source

pub fn cursor_to_end(&mut self)

Move the cursor to the end of the text.

Source

pub fn cursor_up(&mut self) -> bool

Move the cursor to the previous logical line, preserving the column as closely as possible. Returns true when the cursor moved.

Source

pub fn cursor_down(&mut self) -> bool

Move the cursor to the next logical line, preserving the column as closely as possible. Returns true when the cursor moved.

Source

pub fn cursor_word_left(&mut self)

Move the cursor left to the start of the previous Unicode word.

Uses unicode-segmentation word boundaries so that punctuation, numbers, and other non-whitespace runs are treated as word units.

Source

pub fn cursor_word_right(&mut self)

Move the cursor right to the start of the next Unicode word.

Uses unicode-segmentation word boundaries so that punctuation, numbers, and other non-whitespace runs are treated as word units.

Source

pub fn insert_char(&mut self, ch: char)

Insert a character at the cursor, then advance the cursor past it.

Source

pub fn insert_str(&mut self, s: &str)

Insert a string at the cursor, advancing the cursor to the end of the inserted text.

Source

pub fn replace_range(&mut self, start: usize, end: usize, replacement: &str)

Replace a grapheme-cluster range and place the cursor after the inserted text.

Source

pub fn backspace(&mut self) -> bool

Delete the grapheme cluster to the left of the cursor (backspace).

Returns true if a grapheme was deleted.

Source

pub fn delete_forward(&mut self) -> bool

Delete the grapheme cluster to the right of the cursor (forward delete).

Returns true if a grapheme was deleted.

Source

pub fn kill_to_end_of_line(&mut self) -> String

Kill from the cursor to the end of the line. Returns the killed text.

Source

pub fn kill_to_start_of_line(&mut self) -> String

Kill from the start of the line to the cursor. Returns the killed text.

Source

pub fn kill_word_left(&mut self) -> String

Kill the word before the cursor (unix-word-rubout style). Uses Unicode word boundaries. Returns the killed text.

Source

pub fn kill_word_right(&mut self) -> String

Kill the word after the cursor. Uses Unicode word boundaries. Returns the killed text.

Source

pub fn transpose_chars(&mut self) -> bool

Transpose the grapheme clusters at the cursor and just before it. Returns true if a transposition happened.

At the start of the line, swaps the first two graphemes and moves the cursor past both. In the middle, swaps the grapheme before and at the cursor, then advances. At the end, swaps the last two graphemes.

Source

pub fn yank(&mut self, text: &str)

Yank (paste) text at the cursor, advancing the cursor past it.

Source

pub fn text_before_cursor(&self) -> &str

The text before the cursor.

Trait Implementations§

Source§

impl Clone for PromptInput

Source§

fn clone(&self) -> PromptInput

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 Debug for PromptInput

Source§

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

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

impl Default for PromptInput

Source§

fn default() -> PromptInput

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

impl Eq for PromptInput

Source§

impl From<&str> for PromptInput

Source§

fn from(s: &str) -> Self

Converts to this type from the input type.
Source§

impl From<String> for PromptInput

Source§

fn from(s: String) -> Self

Converts to this type from the input type.
Source§

impl FromStr for PromptInput

Source§

type Err = Infallible

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl PartialEq for PromptInput

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for PromptInput

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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> IntoMaybeUndefined<T> for T

Source§

fn into_maybe_undefined(self) -> MaybeUndefined<T>

Converts this value into a three-state builder argument.
Source§

impl<T> IntoOption<T> for T

Source§

fn into_option(self) -> Option<T>

Converts this value into an optional builder argument.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = 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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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