🐕

tauri-store-plugin 2.0.0 正式版アップデート後の静的解析エラー解消

2024/10/05に公開

2.0.0 正式版アップデートで発生した静的解析エラー

私の場合、tauri-store-pluginを2.0.0-rc.3から2.0.1にアップデートした際、最初に静的解析でエラーが発生しました。以前のバージョンで使用していたいくつかのメソッドが、2.0.1では動作しなくなっていたためです。特に、ストアの値を更新する際に使っていたinsertメソッドや、ストアの初期化方法に変更が加えられていました。

最初はコードのロジックに問題があるのではと考えましたが、実際にはAPIの変更が原因でした。さらに、これらの変更がドキュメント(crates.io)にまだ明確に記載されていなかったため、エラーの原因を特定するまでに少し手間取りましたが、定義元の実装を見たら一発解決でした。

実際には、ストアとやり取りするためのメソッドが変更されており、以下の修正を行うことで問題が解決します。

ストアの更新方法

変更の一つとして、ストアの値を更新する方法が変わっていました。旧APIをそのまま使い続けると、静的解析でエラーが発生します。

アップデート前 (2.0.0-rc.3):

let store = store.lock().unwrap();
store
    .insert("your_key".to_string(), json!(your_data))
    .unwrap();

アップデート後 (2.0.1):

let store = store.lock().unwrap();
store.set("your_key".to_string(), json!(your_data));

insertメソッドがsetに置き換えられています。新しいバージョンでは、setがデータの挿入や更新を処理するようになり、APIが簡素化されています。すべてのinsertの部分をsetに置き換えることで、エラーを回避できます。

ストアの初期化方法

ストアの初期化方法も若干変更されています。新しいバージョンでは、StoreBuilder APIがより簡潔になっています。

アップデート前 (2.0.0-rc.3):

// ストアの初期化
let store = StoreBuilder::new("store.bin").build(app.handle().clone());

アップデート後 (2.0.1):

// ストアの初期化
let store = StoreBuilder::new(app, "store.bin").build();

ここでは、app.handle().clone()が不要になり、appを直接渡すだけで済むようになっています。前と比べてコードが簡潔になった気がしますね。

まとめ

tauri-store-plugin 2.0.0-rc.3から2.0.1へのアップデートに伴う主な変更点は次のとおりです:

  • ストアの更新方法insertsetに置き換える。
  • ストアの初期化方法:ストアの初期化コードをStoreBuilder::new(app, "store.bin")に更新する。

この手のエラーは定義元のファイルを見に行けばしっかり修正できるのがいいですね。

Discussion