Crates.io | liff |
lib.rs | liff |
version | 0.1.1 |
source | src |
created_at | 2021-12-19 14:40:07.657909 |
updated_at | 2021-12-19 14:43:15.477642 |
description | Fast levenshtein diff, fastest as we can do with levenshtein. |
homepage | |
repository | https://github.com/adrien-zinger/liff |
max_upload_size | |
id | 500404 |
size | 22,445 |
Compute the diff between two vectors with the Levenshtein algorithm.
Faster than other crate. Try cargo bench
to see the difference.
Levenshtein is a O(n1n2) time complexty and in space so you don't want to use it with a big raw. But you can use it with good chunks or text content!
let from: Vec<u8> = input_text_from.as_bytes().into();
let to: Vec<u8> = input_text_to.as_bytes().into();
let diff = diff::diff::<u8>(&from, &to);
The diff output can be used as a patch from another part of your code.
let res = apply::apply(from, &diff);
// res should be equals to "to"
the diff patch is quite bigger than we can do. You can compress it and that's what we do when we dump a file. You can read and write a diff with these functions.
diffio::write(std::path::Path::new("diff.d"), diff.clone());
let diff = diffio::read(std::path::Path::new("diff.d"));