#parsing #parser


a method chaining parsing library

5 releases

new 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

#60 in Parser tooling

Download history 108/week @ 2023-05-15 32/week @ 2023-05-22 34/week @ 2023-05-29

174 downloads per month


2.5K SLoC

Crates.io dependency status Documentation Minimum rustc version LICENSE LICENSE

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
            .parse_selection()         // often no need to specify type explicitly
            .end_of_stream()           // ensure we are at end-of-string
        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)