1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

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使って差分比較してみた_001.jpg

ソース

まとめ

今回はRustのsimilarを使って差分比較してみました。📝

これだけの実装で簡単に差分比較できるので今後も注目していきたいです。

similarについて

※間違い等ありましたら、ご指摘いただけると助かります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?