Struct SimpleStringTransform

Source
pub struct SimpleStringTransform<T>(pub PhantomData<T>);
Expand description

Used when you have a SimpleTransform but need a StringTransform.

§Example

// `Identity` is a `SimpleTransform`.
struct Identity<I>(I);

impl<I: Iterator<Item=char>> Iterator for Identity<I> {
    type Item = char;
    fn next(&mut self) -> Option<char> {
        self.0.next()
    }
}

impl<'a> SimpleTransform<'a> for Identity<Chars<'a>> {
    fn transform_chars(chars: Chars<'a>) -> Self {
        Identity(chars)
    }
}

// This function takes a `StringTransform`.
fn apply_transform<'a, T: StringTransform<'a>>(t: T, s: String) -> String {
    t.transform(s).into_owned()
}

// Use `SimpleStringTransform` to bridge the gap.
let t = SimpleStringTransform::<Identity<Chars>>::new();
let s = apply_transform(t, "Hello World".to_string());
assert_eq!(&s, "Hello World");

Tuple Fields§

§0: PhantomData<T>

Implementations§

Source§

impl<'a, T: SimpleTransform<'a>> SimpleStringTransform<T>

Source

pub fn new() -> Self

Create a new SimpleStringTransform.

Trait Implementations§

Source§

impl<'a, T: SimpleTransform<'a>> StringTransform<'a> for SimpleStringTransform<T>

Source§

type Iter = T

The type after applying this transform to a Chars iterator.
Source§

fn transform_chars(&self, chars: Chars<'a>) -> Self::Iter

Transform the characters of a string.
Source§

fn will_modify(&self, val: &str) -> bool

A hint to short-circuit string transformations. Read more
Source§

fn transform<'b, T: Into<Cow<'b, str>>>(&self, s: T) -> Cow<'b, str>

Transform a string in-place Read more

Auto Trait Implementations§

§

impl<T> Freeze for SimpleStringTransform<T>

§

impl<T> RefUnwindSafe for SimpleStringTransform<T>
where T: RefUnwindSafe,

§

impl<T> Send for SimpleStringTransform<T>
where T: Send,

§

impl<T> Sync for SimpleStringTransform<T>
where T: Sync,

§

impl<T> Unpin for SimpleStringTransform<T>
where T: Unpin,

§

impl<T> UnwindSafe for SimpleStringTransform<T>
where T: UnwindSafe,

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> 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, 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.