FuDiff
A Rust library implementing a robust fuzzy unified diff format designed for AI-driven patching tools.
Features
- Context-based patching without relying on line numbers
- Fuzzy matching for reliable patch application
- Clean, minimalist diff format optimized for AI interactions
- Reversible patches - can apply and revert changes
- Extensive tests
- Optional serde support for serialization/deserialization (enable with serde feature)
Usage
use ;
// Create a diff between two strings
let diff = diff;
// Parse an existing diff
let diff = parse.unwrap;
// Apply a diff
let patched = diff.patch.unwrap;
// Revert a diff
let original = diff.revert.unwrap;
Diff Format
The format uses context lines (prefixed with space), deletions (prefixed with
-), and additions (prefixed with +):
fn compute(x: i32) -> i32 {
- let y = x * 2;
- println!("Value: {}", y);
+ let y = x + 10;
+ println!("Result: {}", y);
+ println!("Input was: {}", x);
y
}
The patch is located by matching the unchanged context lines rather than using
line numbers. Multiple changes are separated by hunk headers (@@ @@).
License
MIT