[][src]Trait manger::ConsumeSource

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

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

ConsumeSource is only implemented for &str.

Required methods

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

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, "");

pub fn consume<T: Consumable>(self) -> Result<(T, Self), ConsumeError>[src]

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, "");

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

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, "");

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

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, "");

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

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, "");
Loading content...

Implementations on Foreign Types

impl<'s> ConsumeSource for &'s str[src]

Loading content...

Implementors

Loading content...