difference-rs

Crates.iodifference-rs
lib.rsdifference-rs
version3.2.0
created_at2025-06-24 01:50:18.901201+00
updated_at2025-07-17 00:33:55.73813+00
descriptionA Rust text diffing and assertion library.
homepage
repositoryhttps://github.com/naomijub/difference-rs
max_upload_size
id1723792
size219,867
Julia Naomi (naomijub)

documentation

https://docs.rs/difference_rs/latest/difference_rs/

README

difference_rs

License:MIT Build Status Coverage Status

A Rust, updated, text diffing library with built-in diffing assertion.

Examples

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()),
]);

Usage

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} for Difference, Changeset, ChangesetMulti

[dependencies]
difference_rs = { version = "3.2", feature = ["serde"] }

Now you can use the crate in your code

Using the binary

difference_rs can also be used as a command-line application. The best way to install it is using:

$ cargo install --features=bin
Commit count: 0

cargo fmt