Crates.io | daisychain |
lib.rs | daisychain |
version | 0.0.5 |
source | src |
created_at | 2023-05-18 08:47:42.997063 |
updated_at | 2023-06-03 13:31:39.982979 |
description | a method chaining parsing library |
homepage | |
repository | https://github.com/akanalytics/daisychain |
max_upload_size | |
id | 867625 |
size | 139,051 |
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.
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
daisychain
is distributed under the terms of either the MIT license or the
Apache License (Version 2.0)