Struct text_editing::TextLine

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

The text line represents editable text lines.

Implementations§

source§

impl TextLine

source

pub fn cursor_movement( movement: Direction, skip: bool, ) -> fn(_: &Self, _: &mut usize) -> bool

Returns the appropriate movement function based on parameters movement and skip.

§Arguments
  • movement - The direction of movement (Forward or Backward).
  • skip - Whether to skip over whitespace characters.
§Returns

A function pointer to the appropriate movement function.

§Examples
use text_editing::{TextLine, Direction};

let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 7;
let movement_fn = TextLine::cursor_movement(Direction::Forward, false);
movement_fn(&line, &mut text_cursor);
assert_eq!(text_cursor, 8);
source

pub fn forward(&self, text_cursor: &mut usize) -> bool

Moves the text cursor forward by one.

§Arguments
  • text_cursor - A mutable reference to the current text cursor position.
§Returns

true if the cursor was successfully moved forward, false otherwise.

§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 6;
assert!(line.forward(&mut text_cursor));
assert_eq!(text_cursor, 7);
source

pub fn backward(&self, text_cursor: &mut usize) -> bool

Moves the text cursor backward by one.

§Arguments
  • text_cursor - A mutable reference to the current text cursor position.
§Returns

true if the cursor was successfully moved backward, false otherwise.

§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 7;
assert!(line.backward(&mut text_cursor));
assert_eq!(text_cursor, 6);
source

pub fn skip_forward(&self, text_cursor: &mut usize) -> bool

Moves the text cursor forward until the end of the current word.

§Arguments
  • text_cursor - A mutable reference to the current text cursor position.
§Returns

true if the cursor was successfully moved to the end of the word, false otherwise.

§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 6;
assert!(line.skip_forward(&mut text_cursor));
assert_eq!(text_cursor, 12);
source

pub fn skip_backward(&self, text_cursor: &mut usize) -> bool

Moves the text cursor back until the start of the current word.

§Arguments
  • text_cursor - A mutable reference to the current text cursor position.
§Returns

true if the cursor was successfully moved to the start of the word, false otherwise.

§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 10;
assert!(line.skip_backward(&mut text_cursor));
assert_eq!(text_cursor, 7);
source§

impl TextLine

source

pub fn add_char(&mut self, text_cursor: &mut usize, c: char)

Adds a char at the current text cursor position.

§Arguments
  • text_cursor - A mutable reference to the current text cursor position.
  • c - The char to add.
§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, ".into());
let mut text_cursor = 7;
line.add_char(&mut text_cursor, 'w');
assert_eq!(line.as_str(), "Hello, w");
assert_eq!(text_cursor, 8);
source

pub fn remove_forward(&mut self, text_cursor: usize) -> bool

Removes the next char at the current text cursor position, if it exists.

§Arguments
  • text_cursor - The current text cursor position.
§Returns

true if a char was removed, false otherwise.

§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, world!".into());
let text_cursor = 7;
assert!(line.remove_forward(text_cursor));
assert_eq!(line.as_str(), "Hello, orld!");
source

pub fn remove_forward_skip(&mut self, text_cursor: usize) -> bool

Removes the next word at the current text cursor position, if it exists.

§Arguments
  • text_cursor - The current text cursor position.
§Returns

true if a word was removed, false otherwise.

§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, world!".into());
let text_cursor = 7;
assert!(line.remove_forward_skip(text_cursor));
assert_eq!(line.as_str(), "Hello, !");
source

pub fn remove_backward(&mut self, text_cursor: &mut usize) -> bool

Removes the previous char at the current text cursor position, if it exists, and updates the text cursor.

§Arguments
  • text_cursor - A mutable reference to the current text cursor position.
§Returns

true if a char was removed, false otherwise.

§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 7;
assert!(line.remove_backward(&mut text_cursor));
assert_eq!(line.as_str(), "Hello,world!");
assert_eq!(text_cursor, 6);
source

pub fn remove_backward_skip(&mut self, text_cursor: &mut usize) -> bool

Removes the previous word at the current text cursor position, if it exists, and updates the text cursor.

§Arguments
  • text_cursor - A mutable reference to the current text cursor position.
§Returns

true if a word was removed, false otherwise.

§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 12;
assert!(line.remove_backward_skip(&mut text_cursor));
assert_eq!(line.as_str(), "Hello, !");
assert_eq!(text_cursor, 7);
source§

impl TextLine

source

pub fn new() -> Self

Creates a new empty text line.

§Examples
use text_editing::TextLine;

let line = TextLine::new();
assert!(line.is_empty());
source

pub fn from_string(text: String) -> Self

Creates a text line from a String.

§Arguments
  • text - The string to create the text line from.
§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.as_str(), "Hello, world!");
source

pub fn is_empty(&self) -> bool

Checks if the line is empty.

§Returns

true if the line is empty, false otherwise.

§Examples
use text_editing::TextLine;

let line = TextLine::new();
assert!(line.is_empty());
source

pub fn len(&self) -> usize

Returns the length of the text line.

§Returns

The length of the text line.

§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.len(), 13);
source

pub fn as_str(&self) -> &str

Returns the text of the text line as a str reference.

§Returns

A str reference to the text of the text line.

§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.as_str(), "Hello, world!");
source

pub fn string_index(&self, index: usize) -> usize

Converts the character index to the string index.

§Arguments
  • index - The character index to convert.
§Returns

The corresponding string index.

§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.string_index(7), 7);
source

pub fn char_at(&self, at: usize) -> char

Returns the char at the specified position.

§Arguments
  • at - The position to retrieve the char from.
§Panics

Panics if the position is out of bounds.

§Examples
use text_editing::TextLine;

let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.char_at(7), 'w');
source

pub fn insert(&mut self, index: usize, c: char)

Inserts a new char into the text line.

§Arguments
  • index - The position to insert the char at.
  • c - The char to insert.
§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, orld!".into());
line.insert(7, 'w');
assert_eq!(line.as_str(), "Hello, world!");
source

pub fn remove(&mut self, index: usize) -> char

Removes a char from the text line.

§Arguments
  • index - The position to remove the char from.
§Returns

The removed char.

§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.remove(7), 'w');
assert_eq!(line.as_str(), "Hello, orld!");
source

pub fn remove_range(&mut self, range: Range<usize>)

Removes the specified range from the text line.

§Arguments
  • range - The range to remove.
§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, world!".into());
line.remove_range(7..12);
assert_eq!(line.as_str(), "Hello, !");
source

pub fn split(&mut self, index: usize) -> Self

Splits a text line into two.

§Arguments
  • index - The position to split the text line at.
§Returns

The new text line containing the text after the split position.

§Examples
use text_editing::TextLine;

let mut line = TextLine::from_string("Hello, world!".into());
let second_half = line.split(7);
assert_eq!(line.as_str(), "Hello, ");
assert_eq!(second_half.as_str(), "world!");
source

pub fn join(&mut self, other: Self)

Joins two text lines into one.

§Arguments
  • other - The text line to append to the current text line.
§Examples
use text_editing::TextLine;

let mut line1 = TextLine::from_string("Hello, ".into());
let line2 = TextLine::from_string("world!".into());
line1.join(line2);
assert_eq!(line1.as_str(), "Hello, world!");

Trait Implementations§

source§

impl Clone for TextLine

source§

fn clone(&self) -> TextLine

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 Default for TextLine

source§

fn default() -> TextLine

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

impl Display for TextLine

source§

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

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

impl From<String> for TextLine

source§

fn from(text: String) -> Self

Converts to this type from the input type.
source§

impl From<TextLine> for String

source§

fn from(text_line: TextLine) -> Self

Converts to this type from the input type.
source§

impl FromStr for TextLine

source§

type Err = Infallible

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

fn from_str(text: &str) -> Result<Self, Infallible>

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

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, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> 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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. 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.