Struct ropey::RopeSlice[][src]

pub struct RopeSlice<'a>(_);

An immutable view into part of a Rope.

Just like standard &str slices, RopeSlices behave as if the text in their range is the only text that exists. All indexing is relative to the start of their range, and all iterators and methods that return text content truncate that content to the range of the slice.

In other words, the behavior of a RopeSlice is always identical to that of a full Rope with the same content.

Methods

impl<'a> RopeSlice<'a>
[src]

Total number of bytes in the RopeSlice.

Runs in O(1) time.

Total number of chars in the RopeSlice.

Runs in O(1) time.

Total number of lines in the RopeSlice.

Runs in O(1) time.

Returns the char index of the given byte.

Notes:

  • If the byte is in the middle of a multi-byte char, returns the index of the char that the byte belongs to.
  • byte_idx can be one-past-the-end, which will return one-past-the-end char index.

Panics

Panics if byte_idx is out of bounds (i.e. byte_idx > len_bytes()).

Returns the line index of the given byte.

Notes:

  • Lines are zero-indexed. This is functionally equivalent to counting the line endings before the specified byte.
  • byte_idx can be one-past-the-end, which will return the last line index.

Panics

Panics if byte_idx is out of bounds (i.e. byte_idx > len_bytes()).

Returns the byte index of the given char.

Notes:

  • char_idx can be one-past-the-end, which will return one-past-the-end byte index.

Panics

Panics if char_idx is out of bounds (i.e. char_idx > len_chars()).

Returns the line index of the given char.

Notes:

  • Lines are zero-indexed. This is functionally equivalent to counting the line endings before the specified char.
  • char_idx can be one-past-the-end, which will return the last line index.

Panics

Panics if char_idx is out of bounds (i.e. char_idx > len_chars()).

Returns the byte index of the start of the given line.

Notes:

  • Lines are zero-indexed.
  • line_idx can be one-past-the-end, which will return one-past-the-end byte index.

Panics

Panics if line_idx is out of bounds (i.e. line_idx > len_lines()).

Returns the char index of the start of the given line.

Notes:

  • Lines are zero-indexed.
  • line_idx can be one-past-the-end, which will return one-past-the-end char index.

Panics

Panics if line_idx is out of bounds (i.e. line_idx > len_lines()).

Returns the char at char_idx.

Panics

Panics if char_idx is out of bounds (i.e. char_idx >= len_chars()).

Returns the line at line_idx.

Note: lines are zero-indexed.

Panics

Panics if line_idx is out of bounds (i.e. line_idx >= len_lines()).

Returns the chunk containing the given byte index.

Also returns the byte and char indices of the beginning of the chunk and the index of the line that the chunk starts on.

The return value is organized as (chunk, chunk_byte_idx, chunk_char_idx, chunk_line_idx).

Panics

Panics if byte_idx is out of bounds (i.e. byte_idx > len_bytes()).

Returns the chunk containing the given char index.

Also returns the byte and char indices of the beginning of the chunk and the index of the line that the chunk starts on.

The return value is organized as (chunk, chunk_byte_idx, chunk_char_idx, chunk_line_idx).

Panics

Panics if char_idx is out of bounds (i.e. char_idx > len_chars()).

Returns the chunk containing the given line break.

Also returns the byte and char indices of the beginning of the chunk and the index of the line that the chunk starts on.

Note: for convenience, both the beginning and end of the slice are considered line breaks for the purposes of indexing. For example, in the string "Hello \n world!" 0 would give the first chunk, 1 would give the chunk containing the newline character, and 2 would give the last chunk.

The return value is organized as (chunk, chunk_byte_idx, chunk_char_idx, chunk_line_idx).

Panics

Panics if line_break_idx is out of bounds (i.e. line_break_idx > len_lines()).

Returns the entire contents of the RopeSlice as a &str if possible.

This is useful for optimizing cases where the slice is only a few characters or words, and therefore has a high chance of being contiguous in memory.

For large slices this method will typically fail and return None because large slices usually cross chunk boundaries in the rope.

Runs in O(1) time.

Creates a RopeSlice directly from a string slice.

Despite its straightforward name, the useful applications of this method are somewhat narrow. It is intended primarily as an aid when implementing additional functionality on top of Ropey, where you may already have access to a rope chunk and want to directly create a RopeSlice from it, avoiding the overhead of going through the slicing APIs.

Although it is possible to use this to create RopeSlices from arbitrary strings, doing so is not especially useful. For example, Ropes and RopeSlices can already be directly compared for equality with strings and string slices.

Runs in O(N) time, where N is the length of the string slice.

Returns a sub-slice of the RopeSlice in the given char index range.

Uses range syntax, e.g. 2..7, 2.., etc.

Panics

Panics if the start of the range is greater than the end, or the end is out of bounds (i.e. end > len_chars()).

Important traits for Bytes<'a>

Creates an iterator over the bytes of the RopeSlice.

Important traits for Chars<'a>

Creates an iterator over the chars of the RopeSlice.

Important traits for Lines<'a>

Creates an iterator over the lines of the RopeSlice.

Important traits for Chunks<'a>

Creates an iterator over the chunks of the RopeSlice.

Returns the entire text of the RopeSlice as a newly allocated String.

Runs in O(N) time.

Creates a new Rope from the contents of the RopeSlice.

Shares data where possible.

Perhaps unexpectedly, runs in O(log N) time, not O(1) time like Rope cloning.

Trait Implementations

impl<'a> Copy for RopeSlice<'a>
[src]

impl<'a> Clone for RopeSlice<'a>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<'a> Debug for RopeSlice<'a>
[src]

Formats the value using the given formatter. Read more

impl<'a> Display for RopeSlice<'a>
[src]

Formats the value using the given formatter. Read more

impl<'a, 'b> PartialEq<RopeSlice<'b>> for RopeSlice<'a>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a, 'b> PartialEq<&'b str> for RopeSlice<'a>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a, 'b> PartialEq<RopeSlice<'a>> for &'b str
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a> PartialEq<str> for RopeSlice<'a>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a> PartialEq<RopeSlice<'a>> for str
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a> PartialEq<String> for RopeSlice<'a>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a> PartialEq<RopeSlice<'a>> for String
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a, 'b> PartialEq<Cow<'b, str>> for RopeSlice<'a>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a, 'b> PartialEq<RopeSlice<'a>> for Cow<'b, str>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a> PartialEq<Rope> for RopeSlice<'a>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'a> PartialEq<RopeSlice<'a>> for Rope
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

impl<'a> Send for RopeSlice<'a>

impl<'a> Sync for RopeSlice<'a>