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§
Sourcefn consume_lit<T: SelfConsumable>(
self,
literal: &T,
) -> Result<Self, ConsumeError>
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, "");
Sourcefn consume<T: Consumable>(self) -> Result<(T, Self), ConsumeError>
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, "");
Sourcefn mut_consume_lit<T: SelfConsumable>(
&mut self,
literal: &T,
) -> Result<usize, ConsumeError>
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, "");
Sourcefn mut_consume<T: Consumable>(&mut self) -> Result<T, ConsumeError>
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, "");
Sourcefn mut_consume_by<T: Consumable>(&mut self) -> Result<(T, usize), ConsumeError>
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.