56 releases (24 breaking)

0.32.1 Oct 5, 2023
0.31.0 Jul 18, 2023
0.26.2 Mar 7, 2023
0.8.2 Dec 21, 2022
0.7.2 Jul 20, 2022

#48 in Caching

Download history 256/week @ 2023-10-19 246/week @ 2023-10-26 30/week @ 2023-11-02 89/week @ 2023-11-09 180/week @ 2023-11-16 83/week @ 2023-11-23 256/week @ 2023-11-30 128/week @ 2023-12-07 240/week @ 2023-12-14 190/week @ 2023-12-21 69/week @ 2023-12-28 97/week @ 2024-01-04 17/week @ 2024-01-11 324/week @ 2024-01-18 81/week @ 2024-01-25 83/week @ 2024-02-01

506 downloads per month



Momento client-sdk-rust

⚠️ Experimental SDK ⚠️

Rust SDK for Momento is experimental and under active development. There could be non-backward compatible changes or removal in the future. Please be aware that you may need to update your source code with the current version of the SDK when its version gets upgraded.

Rust SDK for Momento, a serverless cache that automatically scales without any of the operational overhead required by traditional caching solutions.

Getting Started 🏃


  • A Momento Auth Token is required, you can generate one using the Momento Console

Installing Momento and Running the Example

Check out example directory!

Using Momento

use momento::{CredentialProviderBuilder, SimpleCacheClientBuilder};
use std::env;
use std::num::NonZeroU64;

async fn demo_cache_usage() {
    // Initialize Momento
    let credential_provider =
            .expect("env var MOMENTO_AUTH_TOKEN must be set to your auth token");
    let item_default_ttl_seconds = 60;
    let mut cache_client = SimpleCacheClientBuilder::new(

    // Create a cache named "cache"
    let cache_name = String::from("cache");

    // Set key with default TTL and get value with that key
    let key = String::from("my_key");
    let value = String::from("my_value");
        .set(&cache_name, key.clone(), value.clone(), None)
    let result = cache_client.get(&cache_name, key.clone()).await.unwrap();
    println!("Looked up value: {:?}", result.as_string());

    // Set key with TTL of 5 seconds
        .set(&cache_name, key.clone(), value.clone(), NonZeroU64::new(5))

    // Permanently delete cache

Running Tests ⚡

Doc and integration tests require an auth token for testing. Set the env var TEST_AUTH_TOKEN to provide it.

Running unit tests:

cargo test --lib

Running doc tests:

TEST_AUTH_TOKEN=<auth token> cargo test --doc

Running integration tests:

TEST_AUTH_TOKEN=<auth token> cargo test --tests

Development 🔨

At Momento, we believe exceptions are bugs. In Rust, this means the unchecked use of .unwrap() calls inherently fills your code with bugs and makes debugging panic calls a lot more difficult.

We rigorously check for proper formatting and use clippy to check for good code practices as well as avoiding .unwrap() calls. Instead, try to use an alternative, including but not limited to:

  • .expect("descriptive error message")
  • .unwrap_or_default("default string goes here")
  • Use ? to have the caller handle the error


Run this command to verify everything passes so that you can save yourself some time when our GitHub actions are ran against the commit:

cargo build && cargo clippy --all-targets --all-features -- -D warnings -W clippy::unwrap_used


~546K SLoC