Trait TextBuffer

Source
pub trait TextBuffer {
Show 21 methods // Required methods fn is_mutable(&self) -> bool; fn as_str(&self) -> &str; fn insert_text(&mut self, text: &str, char_index: usize) -> usize; fn delete_char_range(&mut self, char_range: Range<usize>); fn type_id(&self) -> TypeId; // Provided methods fn char_range(&self, char_range: Range<usize>) -> &str { ... } fn byte_index_from_char_index(&self, char_index: usize) -> usize { ... } fn char_index_from_byte_index(&self, char_index: usize) -> usize { ... } fn clear(&mut self) { ... } fn replace_with(&mut self, text: &str) { ... } fn take(&mut self) -> String { ... } fn insert_text_at( &mut self, ccursor: &mut CCursor, text_to_insert: &str, char_limit: usize, ) { ... } fn decrease_indentation(&mut self, ccursor: &mut CCursor) { ... } fn delete_selected(&mut self, cursor_range: &CCursorRange) -> CCursor { ... } fn delete_selected_ccursor_range( &mut self, [min, max]: [CCursor; 2], ) -> CCursor { ... } fn delete_previous_char(&mut self, ccursor: CCursor) -> CCursor { ... } fn delete_next_char(&mut self, ccursor: CCursor) -> CCursor { ... } fn delete_previous_word(&mut self, max_ccursor: CCursor) -> CCursor { ... } fn delete_next_word(&mut self, min_ccursor: CCursor) -> CCursor { ... } fn delete_paragraph_before_cursor( &mut self, galley: &Galley, cursor_range: &CCursorRange, ) -> CCursor { ... } fn delete_paragraph_after_cursor( &mut self, galley: &Galley, cursor_range: &CCursorRange, ) -> CCursor { ... }
}
Expand description

Trait constraining what types crate::TextEdit may use as an underlying buffer.

Most likely you will use a String which implements TextBuffer.

Required Methods§

Source

fn is_mutable(&self) -> bool

Can this text be edited?

Source

fn as_str(&self) -> &str

Returns this buffer as a str.

Source

fn insert_text(&mut self, text: &str, char_index: usize) -> usize

Inserts text text into this buffer at character index char_index.

§Notes

char_index is a character index, not a byte index.

§Return

Returns how many characters were successfully inserted

Source

fn delete_char_range(&mut self, char_range: Range<usize>)

Deletes a range of text char_range from this buffer.

§Notes

char_range is a character range, not a byte range.

Source

fn type_id(&self) -> TypeId

Returns a unique identifier for the implementing type.

This is useful for downcasting from this trait to the implementing type. Here is an example usage:

use egui::TextBuffer;
use std::any::TypeId;

struct ExampleBuffer {}

impl TextBuffer for ExampleBuffer {
    fn is_mutable(&self) -> bool { unimplemented!() }
    fn as_str(&self) -> &str { unimplemented!() }
    fn insert_text(&mut self, text: &str, char_index: usize) -> usize { unimplemented!() }
    fn delete_char_range(&mut self, char_range: std::ops::Range<usize>) { unimplemented!() }

    // Implement it like the following:
    fn type_id(&self) -> TypeId {
        TypeId::of::<Self>()
    }
}

// Example downcast:
pub fn downcast_example(buffer: &dyn TextBuffer) -> Option<&ExampleBuffer> {
    if buffer.type_id() == TypeId::of::<ExampleBuffer>() {
        unsafe { Some(&*(buffer as *const dyn TextBuffer as *const ExampleBuffer)) }
    } else {
        None
    }
}

Provided Methods§

Source

fn char_range(&self, char_range: Range<usize>) -> &str

Reads the given character range.

Source

fn byte_index_from_char_index(&self, char_index: usize) -> usize

Source

fn char_index_from_byte_index(&self, char_index: usize) -> usize

Source

fn clear(&mut self)

Clears all characters in this buffer

Source

fn replace_with(&mut self, text: &str)

Replaces all contents of this string with text

Source

fn take(&mut self) -> String

Clears all characters in this buffer and returns a string of the contents.

Source

fn insert_text_at( &mut self, ccursor: &mut CCursor, text_to_insert: &str, char_limit: usize, )

Source

fn decrease_indentation(&mut self, ccursor: &mut CCursor)

Source

fn delete_selected(&mut self, cursor_range: &CCursorRange) -> CCursor

Source

fn delete_selected_ccursor_range(&mut self, [min, max]: [CCursor; 2]) -> CCursor

Source

fn delete_previous_char(&mut self, ccursor: CCursor) -> CCursor

Source

fn delete_next_char(&mut self, ccursor: CCursor) -> CCursor

Source

fn delete_previous_word(&mut self, max_ccursor: CCursor) -> CCursor

Source

fn delete_next_word(&mut self, min_ccursor: CCursor) -> CCursor

Source

fn delete_paragraph_before_cursor( &mut self, galley: &Galley, cursor_range: &CCursorRange, ) -> CCursor

Source

fn delete_paragraph_after_cursor( &mut self, galley: &Galley, cursor_range: &CCursorRange, ) -> CCursor

Implementations on Foreign Types§

Source§

impl TextBuffer for &str

Immutable view of a &str!

Source§

fn is_mutable(&self) -> bool

Source§

fn as_str(&self) -> &str

Source§

fn insert_text(&mut self, _text: &str, _ch_idx: usize) -> usize

Source§

fn delete_char_range(&mut self, _ch_range: Range<usize>)

Source§

fn type_id(&self) -> TypeId

Source§

impl TextBuffer for Cow<'_, str>

Source§

fn is_mutable(&self) -> bool

Source§

fn as_str(&self) -> &str

Source§

fn insert_text(&mut self, text: &str, char_index: usize) -> usize

Source§

fn delete_char_range(&mut self, char_range: Range<usize>)

Source§

fn clear(&mut self)

Source§

fn replace_with(&mut self, text: &str)

Source§

fn take(&mut self) -> String

Source§

fn type_id(&self) -> TypeId

Source§

impl TextBuffer for String

Source§

fn is_mutable(&self) -> bool

Source§

fn as_str(&self) -> &str

Source§

fn insert_text(&mut self, text: &str, char_index: usize) -> usize

Source§

fn delete_char_range(&mut self, char_range: Range<usize>)

Source§

fn clear(&mut self)

Source§

fn replace_with(&mut self, text: &str)

Source§

fn take(&mut self) -> String

Source§

fn type_id(&self) -> TypeId

Implementors§