fabric-cache-client

Crates.iofabric-cache-client
lib.rsfabric-cache-client
version0.1.4
created_at2024-12-25 19:18:41.025322+00
updated_at2025-01-30 04:33:44.369967+00
descriptionClient for interacting with a fabric server.
homepagehttps://crates.io/crates/fabric-client
repositoryhttps://github.com/antonio-hickey/fabric
max_upload_size
id1495179
size23,823
Antonio Hickey (antonio-hickey)

documentation

https://docs.rs/fabric-client/latest/fabric-client/index.html

README

Fabric Client

Client for interacting with a Fabric Cache server.

Install

Use cargo CLI:

cargo install fabric-client

Or manually add it into your Cargo.toml:

[dependencies]
fabric-client = "0.1.4"

Usage

For more thorough information, read the docs.

Simple example for a game leaderboard cache:

use fabric_cache_client::FabricClient;
use serde::{Deserialize, Serialize};

// Dummy data structures just for example
#[derive(Deserialize, Serialize, Debug)]
struct Leaderboard {
    top_3_players: Vec<Player>,
    highest_score: i32,
    last_updated: String,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
struct Player {
    name: String,
    score: i32,
}

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
    // Create a connection with the fabric-cache server
    let mut cache = FabricClient::connect("127.0.0.1:8731").await?;

    // Some dummy data for the example
    let players = vec![
        Player {
            name: "Leeroooy Jenkins".into(),
            score: 2830,
        },
        Player {
            name: "kinda l33t".into(),
            score: 2315,
        },
        Player {
            name: "Some Other Player".into(),
            score: 1950,
        },
    ];
    let leaderboard = Leaderboard {
        top_3_players: players.clone(),
        highest_score: players.first().map(|player| player.score).unwrap_or(0),
        last_updated: "{current timestamp}".into(),
    };

    // Insert the data into cache
    cache.set("myGamesLeaderboard", &leaderboard).await?;

    // Retrieve the data from cache
    let _leaderboard: Leaderboard = cache.get("myGamesLeaderboard").await?;

    // Update data in cache
    let mut leaderboard: Leaderboard = cache.get("myGamesLeaderboard").await?;
    leaderboard.top_3_players = vec![
        Player {
            name: "kinda l33t".into(),
            score: 2910,
        },
        Player {
            name: "Leeroooy Jenkins".into(),
            score: 2830,
        },
        Player {
            name: "Some Other Player".into(),
            score: 2100,
        },
    ];
    cache.set("myGamesLeaderboard", &leaderboard).await?;

    // Delete data in cache
    cache.remove("myGamesLeaderboard").await?;

    Ok(())
}
Commit count: 15

cargo fmt