4 个版本
使用旧的 Rust 2015
0.1.3 | 2022年4月13日 |
---|---|
0.1.2 | 2022年4月13日 |
0.1.1 | 2022年4月13日 |
0.1.0 | 2022年4月13日 |
#1673 在 解析器实现
109 每月下载量
在 2 个crate中使用 (通过 bliss-audio)
40KB
767 行
rcue
为 Rust 提供简单的 CUE 表格读取器。无依赖项,并可在稳定版本上编译。
用法
请参阅 生成的文档 或 parser.rs
中的用法和一些示例。
将以下内容添加到您的 Cargo.toml
中的 [dependencies]
通过 crates.io
rcue = "*"
或直接从 GitHub
rcue = { git = "https://github.com/gyng/rcue" }
在您的程序中
extern crate rcue;
use rcue::parser::parse;
use rcue::parser::parse_from_file;
fn main() {
let cue = parse_from_file("test/fixtures/unicode.cue", true).unwrap();
assert_eq!(cue.title, Some("マジコカタストロフィ".to_string()));
let file = std::fs::File::open("test/fixtures/unicode.cue").unwrap();
let mut buf_reader = std::io::BufReader::new(file);
let cue = parse(&mut buf_reader, true).unwrap();
assert_eq!(cue.title, Some("マジコカタストロフィ".to_string()));
}
限制和说明
当前实现有以下已知限制
-
缩进被视为不重要(=没有适当的环境支持)。例如,如果
REM
字段出现在TRACK
字段之后(但缩进到FILE
的级别,它将被错误地分配给TRACK
)。FILE "audio.wav" WAVE TRACK 01 AUDIO TITLE "track1" REM DISCID 860B640B ← This is wrongly(?) assigned to the TRACK
-
字段之间多余的空白会导致解析失败。
REM COMMENT "A lot of extra spaces"
-
字符串中的转义双引号
"
被转义为"
。
开发
详细日志信息
为了将详细日志信息输出到 STDOUT 以及在宽松模式下跳过的行的详细信息,请使用环境变量 RCUE_LOG
设置为 1
运行 rcue。例如
# myapp.rs
RCUE_LOG=1 cargo run
模糊测试
可以使用 cargo fuzz
在 nightly 中运行 rcue 的解析器模糊测试。
cargo install cargo-fuzz -f
cargo +nightly fuzz run fuzz_parser
Clippy
使用以下方式运行 Clippy
rustup install nightly # if not installed
rustup update nightly
cargo +nightly install clippy --force # --force to update
rustup run nightly cargo clippy
待办事项
- 重要的缩进/环境支持
- 序列化器
- 进一步清理解析