はじめに
Rustのsimilarクレートで差分比較をしてみようと思います
といってもHelloWorld的な紹介です☀️
プロジェクトの作成
Rustでsimilarクレートを使う。
古いテキストと新しいテキストからTextDiffを作り
ChangeTagのDelete、Insert、EqualとChangeの差分を出力する
コードはこれだけで実装完了!!(お手軽なクレート📚)
下記examplesを参考にしました
lib.rs
// 省略
#[wasm_bindgen]
pub fn text_diff(txtold :String,txtnew :String) -> String {
let diff = TextDiff::from_lines(&txtold, &txtnew);
let mut result = String::new();
for change in diff.iter_all_changes() {
let sign = match change.tag() {
ChangeTag::Delete => "-",
ChangeTag::Insert => "+",
ChangeTag::Equal => " ",
};
result.push_str(&format!("{}{}", sign, change));
result.push('\n');
}
result
}
// 省略
今回の成果物
デモURL
デモ画像
ソース
まとめ
今回はRustのsimilarを使って差分比較してみました。📝
これだけの実装で簡単に差分比較できるので今後も注目していきたいです。
similarについて
※間違い等ありましたら、ご指摘いただけると助かります。