#finance-ledger #ledger #beancount #double-entry #accounting

rustledger-parser

Beancount parser with error recovery and full syntax support

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

Download history 64/week @ 2026-01-15 110/week @ 2026-01-22 54/week @ 2026-01-29 26/week @ 2026-02-05 99/week @ 2026-02-12 65/week @ 2026-02-19 72/week @ 2026-02-26 60/week @ 2026-03-05 24/week @ 2026-03-12 34/week @ 2026-03-19 62/week @ 2026-03-26

185 downloads per month
Used in 7 crates

GPL-3.0-only

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