| Crates.io | difference-rs |
| lib.rs | difference-rs |
| version | 3.2.0 |
| created_at | 2025-06-24 01:50:18.901201+00 |
| updated_at | 2025-07-17 00:33:55.73813+00 |
| description | A Rust text diffing and assertion library. |
| homepage | |
| repository | https://github.com/naomijub/difference-rs |
| max_upload_size | |
| id | 1723792 |
| size | 219,867 |
A Rust, updated, text diffing library with built-in diffing assertion.
use difference_rs::Changeset;
let changeset = Changeset::new("test", "tent", "");
assert_eq!(changeset.diffs, vec![
Difference::Same("te".to_string()),
Difference::Rem("s".to_string()),
Difference::Add("n".to_string()),
Difference::Same("t".to_string())
]);

use difference_rs::{Changeset, Difference};
let changeset = Changeset::new_multi(
"https://localhost:8080/path?query=value",
"https://myapi.com/api/path?query=asset",
&["://", "/", "?", "="],
);
assert_eq!(changeset.diffs, vec![
Difference::Same("https://".to_string()),
Difference::Rem("localhost:8080/".to_string()),
Difference::Add("myapi.com/api/".to_string()),
Difference::Same("path?query=".to_string()),
Difference::Rem("value".to_string()),
Difference::Add("asset".to_string()),
]);

Add the following to your Cargo.toml:
[dependencies]
difference_rs = "3.2"
If you require serialization of the the Differences, use the feature serde:
This implements
serde::{Serialize, Deserialize}forDifference,Changeset,ChangesetMulti
[dependencies]
difference_rs = { version = "3.2", feature = ["serde"] }
Now you can use the crate in your code
difference_rs can also be used as a command-line application. The best way to install it is using:
$ cargo install --features=bin