Momento Rust SDKの非同期API、設定、エラー処理、結果型
非同期API
SDKのすべてのAPIは非同期で、Future
を返します。つまり
tokio
を推奨します。この依存関係を含む例
#[tokio::main]
の使い方を説明するサンプルは
github repo の example
ディレクトリ にあります。
構成
タイムアウトやキープアライブなどの設定を、さまざまな環境で適切な値に調整できるよう、あらかじめビルドされたコンフィギュレーションが用意されており、 環境に応じて適切な値に調整することができます。例えば
momento::cache::configurations::Laptop::latest()
- タイムアウトが緩やかな開発環境に適している smomento::cache::configurations::InRegion::latest()
- より厳格なタイムアウトがある本番環境での設定に適している
これらの設定は CacheClient
ビルダと TopicClient
ビルダに渡すことができます。
高度な使用例では、プリビルドを使用するのではなく、独自の設定を構築することができます。
Credential Providers
CredentialProvider
構造体は、Momento サービスの API キーを提供するために使用します。クレデンシャルプロバイダを作成するための
最も一般的な CredentialProvider
を作成するファクトリ関数は次の 2 つです:
CredentialProvider::from_env_var
- 環境変数からAPIキーを読み込むCredentialProvider::from_string
- APIキーを文字列として受け取ります。 クレットマネージャーなどからキーを取得する際に使用できます。
エラー処理
ほとんどのAPIは MomentoResult
を返しますが、これは Result<T, MomentoError>
の型エイリアスです。これは Result<T, MomentoError>
の型の別名に過ぎません。
match
ステートメントを使って Result
を処理したり、 ?
演算子を使ってエラーを伝搬させたりすることができます。
Enum Response Types, Type Coercion via into
and try_into
多くの API では、返されるレスポンスの型が複数ある場合があります。例えば、CacheClient::get
はキャッシュヒットまたはキャッシュミスを返します。
これらのレスポンスは列挙型として表現されます。
あるいは、try_into
を使用して、レスポンスを希望の型に直接強制することもできます。
すべての Momento キャッシュの値は vec<u8>
として保存されますが、UTF-8 文字列を使用している場合は、これらの強制子に対しても try_into
を使用できます。
以下は、CacheClient::get
レスポンスをどのように 扱うかの例です:
Using a match
:
let _item: String = match cache_client.get(cache_name, "key").await? {
GetResponse::Hit { value } => value.try_into()?,
GetResponse::Miss => return Err(anyhow::Error::msg("cache miss"))
};
Or directly via try_into
:
let _item: String = cache_client.get(cache_name, "key").await?.try_into()?;
リストや辞書のような Momento コレクションのデータ型を使用している場合、これらのデータ型を表現するために使用できると期待される主な Rust 型の into
をサポートしています。
例えば、Momento 辞書では以下のようになります。
let _item: HashMap<String, String> = cache_client
.dictionary_fetch(cache_name, "dictionary_key")
.await?
.try_into()?;