Crate rive_cache_inmemory

Source
Expand description

§rive-cache-inmemory

rive-cache-inmemory is an implementation of an in-memory cache for the Rive ecosystem. It’s intended to be used only within the current process.

It processes incoming events, and adds/modifies/removes resources depending on the event type and data.

There’s also a simple API for iterating over resource entities and getting cache statistics (such as the number of stored users).

§Example

Update a cache with incoming events from the gateway:

use futures::StreamExt;
use std::{env, error::Error};

use rive_cache_inmemory::InMemoryCache;
use rive_gateway::Gateway;
use rive_models::authentication::Authentication;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let auth = Authentication::SessionToken(env::var("TOKEN")?);

    let mut gateway = Gateway::connect(auth).await?;

    // Create a cache with messages and emojis caching disabled:
    let cache = InMemoryCache::builder()
        .cache_messages(false)
        .cache_emojis(false)
        .build();

    while let Some(event) = gateway.next().await {
        let event = event?;

        // Update the cache with the event:
        cache.update(&event);
    }

    Ok(())
}

Structs§

Config
Configuration for an InMemoryCache.
InMemoryCache
An in-memory cache of Revolt data.
InMemoryCacheBuilder
Builder to configure and construct an InMemoryCache.
InMemoryCacheIter
Interface to create iterators over various resources.
InMemoryCacheStats
An interface for iterating over the various resources in the cache.
IterReference
Reference to a resource value being iterated over in the cache.
Reference
Immutable reference to a resource in the cache.
ResourceIter
Immutable cache iterator.