Trait ConsumeSource

Source
pub trait ConsumeSource: Sized {
    // Required methods
    fn consume_lit<T: SelfConsumable>(
        self,
        literal: &T,
    ) -> Result<Self, ConsumeError>;
    fn consume<T: Consumable>(self) -> Result<(T, Self), ConsumeError>;
    fn mut_consume_lit<T: SelfConsumable>(
        &mut self,
        literal: &T,
    ) -> Result<usize, ConsumeError>;
    fn mut_consume<T: Consumable>(&mut self) -> Result<T, ConsumeError>;
    fn mut_consume_by<T: Consumable>(
        &mut self,
    ) -> Result<(T, usize), ConsumeError>;
}
Expand description

Trait that exposes some functions for easier consuming syntax on &str.

ConsumeSource is only implemented for &str.

Required Methods§

Source

fn consume_lit<T: SelfConsumable>( self, literal: &T, ) -> Result<Self, ConsumeError>

A shorthand for the consume_item. Here the source is self and the item is literal.

§Examples
use manger::ConsumeSource;

let source = "{42}";

let unconsumed = source.consume_lit(&'{')?;
assert_eq!(unconsumed, "42}");

let (num, unconsumed) = unconsumed.consume::<u32>()?;
assert_eq!(num, 42);
assert_eq!(unconsumed, "}");

let unconsumed = unconsumed.consume_lit(&'}')?;
assert_eq!(unconsumed, "");
Source

fn consume<T: Consumable>(self) -> Result<(T, Self), ConsumeError>

A shorthand for the consume_from. Here the source is self. Returns how many utf-8 characters where consumed, when succesful.

§Examples
use manger::ConsumeSource;

let source = "{42}";

let unconsumed = source.consume_lit(&'{')?;
assert_eq!(unconsumed, "42}");

let (num, unconsumed) = unconsumed.consume::<u32>()?;
assert_eq!(num, 42);
assert_eq!(unconsumed, "}");

let unconsumed = unconsumed.consume_lit(&'}')?;
assert_eq!(unconsumed, "");
Source

fn mut_consume_lit<T: SelfConsumable>( &mut self, literal: &T, ) -> Result<usize, ConsumeError>

A shorthand for the consume_item. Here the source is self and the item is literal.

Will mutate source to have the unconsumed part.

§Examples
use manger::ConsumeSource;

let mut source = "{42}";

source.mut_consume_lit(&'{')?;
assert_eq!(source, "42}");

let num = source.mut_consume::<u32>()?;
assert_eq!(num, 42);
assert_eq!(source, "}");

source.mut_consume_lit(&'}')?;
assert_eq!(source, "");
Source

fn mut_consume<T: Consumable>(&mut self) -> Result<T, ConsumeError>

A shorthand for the consume_from. Here the source is self.

Will mutate source to have the unconsumed part.

§Examples
use manger::ConsumeSource;

let mut source = "{42}";

source.mut_consume_lit(&'{')?;
assert_eq!(source, "42}");

let num = source.mut_consume::<u32>()?;
assert_eq!(num, 42);
assert_eq!(source, "}");

source.mut_consume_lit(&'}')?;
assert_eq!(source, "");
Source

fn mut_consume_by<T: Consumable>(&mut self) -> Result<(T, usize), ConsumeError>

A shorthand for the consume_how_many_from. Here the source is self.

Will mutate source to have the unconsumed part.

§Examples
use manger::ConsumeSource;

let mut source = "{42}";

source.mut_consume_lit(&'{')?;
assert_eq!(source, "42}");

let (num, amount) = source.mut_consume_by::<u32>()?;
assert_eq!(num, 42);
assert_eq!(amount, 2);
assert_eq!(source, "}");

source.mut_consume_lit(&'}')?;
assert_eq!(source, "");

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'s> ConsumeSource for &'s str

Implementors§