13 个重大版本更新
0.14.0 | 2024年6月27日 |
---|---|
0.13.0 | 2024年2月10日 |
0.12.0 | 2024年2月7日 |
0.6.0 | 2023年12月19日 |
#1411 in Rust 模式
每月下载量 34
26KB
388 行
bparse
这个包提供了解析字节切片的实用工具。API 从其他解析器组合包中借鉴了一些概念,但通过放弃错误管理,专注于解析字节切片,大大简化了处理。
示例
经典的 nom 示例;十六进制颜色解析器
use bparse::{Pattern, Parser, range, end};
use std::str::from_utf8;
#[derive(Debug, PartialEq)]
pub struct Color {
pub red: u8,
pub green: u8,
pub blue: u8,
}
fn main() {
assert_eq!(hex_color("#2F14DF"), Some(Color {
red: 47,
green: 20,
blue: 223,
}));
}
fn hex_color(input: &str) -> Option<Color> {
let hexbyte = range(b'0', b'9').or(range(b'A', b'F')).or(range(b'a', b'f')).repeats(2);
let mut parser = Parser::new(input.as_bytes());
parser.try_match("#")?;
let red = parser.try_match(hexbyte)?;
let green = parser.try_match(hexbyte)?;
let blue = parser.try_match(hexbyte)?;
parser.try_match(end)?;
Some(Color {
red: u8::from_str_radix(from_utf8(red).unwrap(), 16).unwrap(),
green: u8::from_str_radix(from_utf8(green).unwrap(), 16).unwrap(),
blue: u8::from_str_radix(from_utf8(blue).unwrap(), 16).unwrap()
})
}