5个版本
0.0.5 | 2023年6月3日 |
---|---|
0.0.4 | 2023年5月23日 |
0.0.3 | 2023年5月20日 |
0.0.2 | 2023年5月18日 |
0.0.1 | 2023年5月18日 |
#103 在 解析器工具
58 每月下载量
110KB
2.5K SLoC
占位符crate - DaisyChain
目前仍在开发中,尚未准备好使用!
DaisyChain
提供了解析Unicode文本的库。它旨在拥有一个温和且直观的API,同时不牺牲性能(可以是零拷贝)。作为一个库而不是一个框架,这意味着它可以与其他解析工具包一起使用并补充它们。
概述
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 })
}
}
请参阅 DaisyChain食谱 以获取更多示例
许可
daisychain
在MIT许可或Apache许可(版本2.0)的条款下分发
依赖项
~72–360KB