23 releases (9 breaking)
Uses new Rust 2024
| new 0.11.0 | Apr 3, 2026 |
|---|---|
| 0.10.0 | Mar 8, 2026 |
| 0.9.1 | Feb 18, 2026 |
#738 in Finance
185 downloads per month
Used in 7 crates
495KB
11K
SLoC
Beancount parser using Logos lexer and Winnow manual parser.
This crate provides a parser for the Beancount file format. It produces
a stream of Directives from source text, along with any parse errors.
Features
- Full Beancount syntax support (all 12 directive types)
- Error recovery (continues parsing after errors)
- Precise source locations for error reporting
- Support for includes, options, plugins
Example
use rustledger_parser::parse;
let source = r#"
2024-01-15 * "Coffee Shop" "Morning coffee"
Expenses:Food:Coffee 5.00 USD
Assets:Cash
"#;
let (directives, errors) = parse(source);
assert!(errors.is_empty());
assert_eq!(directives.len(), 1);
rustledger-parser
Fast Beancount parser using Logos lexer and Chumsky parser combinators.
Features
- Full Beancount syntax support (all 12 directive types)
- Error recovery (continues parsing after errors)
- Precise source locations for error reporting
- SIMD-accelerated lexing via Logos
Architecture
Source (&str) → Logos tokenize() → Vec<SpannedToken> → Chumsky parser → Directives
Example
use rustledger_parser::parse;
let source = r#"
2024-01-15 * "Coffee Shop" "Morning coffee"
Expenses:Food:Coffee 5.00 USD
Assets:Cash
"#;
let result = parse(source);
assert!(result.errors.is_empty());
assert_eq!(result.directives.len(), 1);
Cargo Features
rkyv(default) - Enable rkyv serialization for binary caching
License
GPL-3.0
Dependencies
~9–20MB
~271K SLoC