tauri-store-plugin 2.0.0 正式版アップデート後の静的解析エラー解消
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へのアップデートに伴う主な変更点は次のとおりです:
-
ストアの更新方法:
insert
をset
に置き換える。 -
ストアの初期化方法:ストアの初期化コードを
StoreBuilder::new(app, "store.bin")
に更新する。
この手のエラーは定義元のファイルを見に行けばしっかり修正できるのがいいですね。
Discussion