Struct roe::Lowercase[][src]

#[must_use = "Lowercase is a Iterator and must be used"]pub struct Lowercase<'a> { /* fields omitted */ }

An iterator that yields the lowercase equivalent of a conventionally UTF-8 byte string.

This iterator yields bytes.

This struct is created by the lowercase function. See its documentation for more.

Implementations

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

pub const fn new() -> Self[src]

Create a new, empty lowercase iterator.

Examples

let mut lowercase = Lowercase::new();
assert_eq!(lowercase.next(), None);

pub const fn with_slice(slice: &'a [u8]) -> Self[src]

Create a new lowercase iterator with the given byte slice using full Unicode case mapping.

Examples

let mut lowercase = Lowercase::with_slice(b"abcXYZ");
assert_eq!(lowercase.next(), Some(b'a'));
assert_eq!(lowercase.next(), Some(b'b'));
assert_eq!(lowercase.next(), Some(b'c'));
assert_eq!(lowercase.next(), Some(b'x'));
assert_eq!(lowercase.next(), Some(b'y'));
assert_eq!(lowercase.next(), Some(b'z'));
assert_eq!(lowercase.next(), None);

Non-ASCII characters are case mapped:

let lowercase = Lowercase::with_slice("Αύριο".as_bytes());
assert_eq!(lowercase.collect::<Vec<_>>(), "αύριο".as_bytes());

Invalid UTF-8 bytes are yielded as is without impacting Unicode characters:

let mut s = "Αύριο".to_string().into_bytes();
s.extend(b"\xFF\xFE");
let lowercase = Lowercase::with_slice(s.as_slice());

let mut expected = "αύριο".to_string().into_bytes();
expected.extend(b"\xFF\xFE");
assert_eq!(lowercase.collect::<Vec<_>>(), expected);

pub const fn with_ascii_slice(slice: &'a [u8]) -> Self[src]

Create a new lowercase iterator with the given byte slice using ASCII case mapping.

Examples

let mut lowercase = Lowercase::with_ascii_slice(b"abcXYZ");
assert_eq!(lowercase.next(), Some(b'a'));
assert_eq!(lowercase.next(), Some(b'b'));
assert_eq!(lowercase.next(), Some(b'c'));
assert_eq!(lowercase.next(), Some(b'x'));
assert_eq!(lowercase.next(), Some(b'y'));
assert_eq!(lowercase.next(), Some(b'z'));
assert_eq!(lowercase.next(), None);

Non-ASCII characters are ignored:

let lowercase = Lowercase::with_ascii_slice("Αύριο".as_bytes());
assert_eq!(lowercase.collect::<Vec<_>>(), "Αύριο".as_bytes());

Invalid UTF-8 bytes are yielded as is without impacting ASCII bytes:

let lowercase = Lowercase::with_ascii_slice(b"abc\xFF\xFEXYZ");
assert_eq!(lowercase.collect::<Vec<_>>(), b"abc\xFF\xFExyz");

Trait Implementations

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

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

impl<'a> FusedIterator for Lowercase<'a>[src]

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

type Item = u8

The type of the elements being iterated over.

Auto Trait Implementations

impl<'a> RefUnwindSafe for Lowercase<'a>[src]

impl<'a> Send for Lowercase<'a>[src]

impl<'a> Sync for Lowercase<'a>[src]

impl<'a> Unpin for Lowercase<'a>[src]

impl<'a> UnwindSafe for Lowercase<'a>[src]

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.