Crates.io | rollsum |
lib.rs | rollsum |
version | 0.3.0 |
source | src |
created_at | 2015-05-06 20:04:14.650919 |
updated_at | 2020-09-27 17:45:32.523961 |
description | Rolling checksum implementation |
homepage | |
repository | https://github.com/aidanhs/rsroll |
max_upload_size | |
id | 2043 |
size | 20,592 |
rollsum is based on bupsplit, which in turn is based on rsync chunking.
Interface liable to change.
extern crate rollsum;
use std::env;
use std::fs;
use std::path::Path;
use std::io::prelude::*;
pub fn main () {
let args: Vec<_> = env::args().collect();
let mut file = fs::File::open(&Path::new(&args[1])).unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let mut ofs: usize = 0;
while ofs < buf.len() {
let mut b = rollsum::Bup::new();
if let Some(count) = b.find_chunk_edge(&buf[ofs..]) {
ofs += count;
println!("found edge at {}", ofs);
} else {
println!("end of the line!");
break
}
}
}