Struct bstr::Graphemes[][src]

pub struct Graphemes<'a> { /* fields omitted */ }

An iterator over grapheme clusters in a byte string.

This iterator is typically constructed by ByteSlice::graphemes.

Unicode defines a grapheme cluster as an approximation to a single user visible character. A grapheme cluster, or just “grapheme,” is made up of one or more codepoints. For end user oriented tasks, one should generally prefer using graphemes instead of Chars, which always yields one codepoint at a time.

Since graphemes are made up of one or more codepoints, this iterator yields &str elements. When invalid UTF-8 is encountered, replacement codepoints are substituted.

This iterator can be used in reverse. When reversed, exactly the same set of grapheme clusters are yielded, but in reverse order.

This iterator only yields extended grapheme clusters, in accordance with UAX #29.

Implementations

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

pub fn as_bytes(&self) -> &'a [u8]

Notable traits for &'_ [u8]

impl<'_> Read for &'_ [u8]impl<'_> Write for &'_ mut [u8]
[src]

View the underlying data as a subslice of the original data.

The slice returned has the same lifetime as the original slice, and so the iterator can continue to be used while this exists.

Examples

use bstr::ByteSlice;

let mut it = b"abc".graphemes();

assert_eq!(b"abc", it.as_bytes());
it.next();
assert_eq!(b"bc", it.as_bytes());
it.next();
it.next();
assert_eq!(b"", it.as_bytes());

Trait Implementations

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

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

impl<'a> DoubleEndedIterator for Graphemes<'a>[src]

impl<'a> Iterator for Graphemes<'a>[src]

type Item = &'a str

The type of the elements being iterated over.

Auto Trait Implementations

impl<'a> RefUnwindSafe for Graphemes<'a>

impl<'a> Send for Graphemes<'a>

impl<'a> Sync for Graphemes<'a>

impl<'a> Unpin for Graphemes<'a>

impl<'a> UnwindSafe for Graphemes<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.