#rsync #diff


A library for tracking changes to a file over time

3 releases

Uses old Rust 2015

0.1.2 Sep 7, 2016
0.1.1 Aug 16, 2016
0.1.0 Aug 4, 2016

#9 in #rsync

21 downloads per month
Used in optra

CC0 license



CC0 Build Status Crates.io

rdiff is a package for comparing versions of a file over time. It is written is Rust, and expects version > 1.8.

To the extent possible under law, rdiff contributors have waived all copyright and related or neighboring rights to rdiff.



in Cargo.toml:

rdiff = "0.1"

In your rust file (taken from examples/predefined.rs):

extern crate rdiff;

use rdiff::BlockHashes;
use std::fs::File;

pub fn example() {
    let file = File::open("examples/filev1.txt").unwrap();
    let mut hashes = BlockHashes::new(file, 8).unwrap();
    let file = File::open("examples/filev2.txt").unwrap();
    let difference = hashes.diff_and_update(file).unwrap();
    println!("Inserts: {:?}", difference.inserts().collect::<Vec<_>>());
    println!("Deletes: {:?}", difference.deletes().collect::<Vec<_>>());

This will output

Inserts: [Insert(8, 'widely understood '), Insert(90, ' absolutely'), Insert(381, 'hters, or sons if the family was progressive.\n'), Insert(572, 'not, even though he had been following the news quite closely.\n\n'), Insert(734, '\nMr. Ben')]
Deletes: [Delete(34, 24), Delete(428, 8), Delete(638, 8), Delete(742, 8)]


~46K SLoC