13 releases

0.2.7 Sep 10, 2025
0.2.6 Jun 15, 2025
0.2.5 Jan 11, 2024
0.2.4 Sep 30, 2023
0.1.3 Jul 11, 2022

#357 in Database interfaces

Download history 285/week @ 2025-08-28 427/week @ 2025-09-04 620/week @ 2025-09-11 599/week @ 2025-09-18 332/week @ 2025-09-25 342/week @ 2025-10-02 354/week @ 2025-10-09 1004/week @ 2025-10-16 666/week @ 2025-10-23 645/week @ 2025-10-30 522/week @ 2025-11-06 570/week @ 2025-11-13 615/week @ 2025-11-20 640/week @ 2025-11-27 582/week @ 2025-12-04 420/week @ 2025-12-11

2,329 downloads per month
Used in 8 crates (3 directly)

LGPL-3.0-or-later

10MB
296K SLoC

C 243K SLoC // 0.1% comments M4 18K SLoC // 0.2% comments Visual Studio Project 15K SLoC Shell 10K SLoC // 0.2% comments Rust 6K SLoC // 0.0% comments Automake 2K SLoC // 0.0% comments Visual Studio Solution 717 SLoC Python 445 SLoC // 0.1% comments C++ 357 SLoC // 0.2% comments RPM Specfile 75 SLoC

rust-libesedb

Repository Crate Page Documentation License

Safe Rust bindings to libyal/libesedb (via libesedb-sys).

use libesedb::EseDb;

fn main() {
    let filename = std::env::args()
        .nth(1)
        .unwrap_or("Catalog1.edb".to_string());
    let db = EseDb::open(filename).unwrap();
    println!("Db load finished!");
    let string = db.table_by_name("string").unwrap();
    for rec in string.iter_records().unwrap() {
        let rec = rec.unwrap();
        let vals = rec.iter_values().unwrap().map(|v| v.unwrap_or_default().to_string()).collect::<Vec<_>>();
        println!("{}", vals.join("\t"));
    }
}

Test Data

Future Changes

  • v0.3.0
    • Remove close() methods in favour of drop!()
    • Lazy-load Values (store some sort of record reference, similar to current LongValue and MultiValue internally)
    • Values come in either FlatValue, LongValue, MultiValue variants, with a defined ValueType

Publishing Process

  1. git pull any changes from main
  2. Update version in Cargo.toml
    • Any changes to libesedb-sys will require updating the dependency version and a bump in the main crate version too
  3. git add / git commit the version change (and push); e.g. release: libesedb-v0.2.7
  4. Create a git tag / GitHub release
    • e.g. libesedb-v0.2.7
  5. Packaging dry-run
    • cargo publish --dry-run
    • cargo package --list
  6. Publish
    • cargo publish

License and Acknowledgement

This project is made available under the LGPL-3.0-or-later.

The time crate (used in FILETIME/OLETIME conversions) is available under the MIT License.

The core functionality that this library binds to is the hard work of Joachim Metz (~joachimmetz).

Dependencies