5 releases
0.0.5 | Jun 3, 2023 |
---|---|
0.0.4 | May 23, 2023 |
0.0.3 | May 20, 2023 |
0.0.2 | May 18, 2023 |
0.0.1 | May 18, 2023 |
#157 in Parser tooling
110KB
2.5K
SLoC
Placeholder crate - DaisyChain
is a work-in-progress currently, and not quite ready for use!
DaisyChain
provides a library for parsing unicode text. It aims to have a gentle and intuitive API, without sacrificing performance (it can be zero-copy). Being a library, rather than a framework means that it can be used alongside and complement other parsing toolkits.
Synopsis
use daisychain::prelude::*;
use std::str::FromStr;
struct Time {
hours: u32,
mins: u32,
}
impl FromStr for Time {
type Err = ParsingError;
/// eg "09:23" or "23:59"
fn from_str(s: &str) -> Result<Self, Self::Err> {
let (_cursor, hours, mins) = dc::Cursor::from(s)
.digits(2..=2) // matching also sets the selection
.parse_selection::<u32>() // daisychain will use u32::FromStr
.text(":")
.digits(2..=2)
.parse_selection() // often no need to specify type explicitly
.end_of_stream() // ensure we are at end-of-string
.validate()?;
Ok(Time { hours, mins })
}
}
See The DaisyChain Cookbook for more examples
License
daisychain
is distributed under the terms of either the MIT license or the
Apache License (Version 2.0)
Dependencies
~71–365KB