mtree2

Crates.iomtree2
lib.rsmtree2
version0.6.14
created_at2024-06-28 17:08:23.466218+00
updated_at2025-07-14 09:25:12.539069+00
descriptionA crate for iterating through the entries of an mtree record file.
homepage
repositoryhttps://github.com/VorpalBlade/paketkoll
max_upload_size
id1286859
size27,517,945
Arvid Norlander (VorpalBlade)

documentation

README

mtree2

[ lib.rs ] [ crates.io ]

This is a fork of mtree-rs fixing some issues and improving performance. Unfortunately the upstream has been dead apart from one comment, so a fork was necessary.

The original README is reproduced below:


A library for iterating through entries of an mtree.

mtree is a data format used for describing a sequence of files. Their location is record, along with optional extra values like checksums, size, permissions etc.

For details on the spec see mtree(5).

Examples

use mtree2::MTree;
use std::time::SystemTime;

// We're going to load data from a string so this example with pass doctest,
// but there's no reason you can't use a file, or any other data source.
let raw_data = "
/set type=file uid=0 gid=0 mode=644
./.BUILDINFO time=1523250074.300237174 size=8602 md5digest=13c0a46c2fb9f18a1a237d4904b6916e \
     sha256digest=db1941d00645bfaab04dd3898ee8b8484874f4880bf03f717adf43a9f30d9b8c
./.PKGINFO time=1523250074.276237110 size=682 md5digest=fdb9ac9040f2e78f3561f27e5b31c815 \
     sha256digest=5d41b48b74d490b7912bdcef6cf7344322c52024c0a06975b64c3ca0b4c452d1
/set mode=755
./usr time=1523250049.905171912 type=dir
./usr/bin time=1523250065.373213293 type=dir
";
let entries = MTree::from_reader(raw_data.as_bytes());
for entry in entries {
    // Normally you'd want to handle any errors
    let entry = entry.unwrap();
    // We can print out a human-readable copy of the entry
    println!("{}", entry);
    // Let's check that if there is a modification time, it's in the past
    if let Some(time) = entry.time() {
        assert!(time < SystemTime::now());
    }
    // We might also want to take a checksum of the file, and compare it to the digests
    // supplied by mtree, but this example doesn't have access to a filesystem.
}

MSRV (Minimum Supported Rust Version) policy

The MSRV may be bumped as needed. It is guaranteed that this program will at least build on the current stable Rust release. An MSRV change is not considered a breaking change and as such may change even in a patch version.

Commit count: 527

cargo fmt