[](https://crates.io/crates/daisychain)
[](https://deps.rs/repo/github/akanalytics/daisychain)
[](https://docs.rs/daisychain/)
[](#rust-version-requirements-msrv)
[](LICENSE-MIT)
[](LICENSE-APACHE)
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
```rust
use daisychain::prelude::*;
use std::str::FromStr;
struct Time {
hours: u32,
mins: u32,
}
impl FromStr for Time {
type Err = dc::ParseError;
/// 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](https://docs.rs/crate/daisychain/latest/source/examples/cookbook/) for more examples
## License
`daisychain` is distributed under the terms of either the MIT license or the
Apache License (Version 2.0)