Documentation

Features

  • Async/await

  • Easy custom Store

  • Stores the values in a Map<String, Value> based on serde_json

Examples

let store = Arc::new(CustomStore::new());

let id = format!("id.{}", 0);                   // Generates an UID
let store = store.clone();
let session = store.get(&id).await.unwrap();    // Fresh Session

session.id().unwrap();                          // ""
session.status().unwrap();                      // SessionStatus::Created
session.state().unwrap();                       // State

session.set::<usize>("counter", 0).unwrap();    // None
session.set("number", 233).unwrap();            // None
session.get::<usize>("counter").unwrap();       // Some(0)
session.get::<u32>("number").unwrap();          // Some(233)

session.save().await;                           // Ok(())

let session = store.get(&id).await.unwrap();    // Matches Session

session.id().unwrap();                          // "id.len() == 32"
session.status().unwrap();                      // SessionStatus::Existed

session.remove::<usize>("counter").unwrap();    // Some(0)
session.remove::<u32>("number").unwrap();       // Some(233)

#[derive(Debug, Serialize, Deserialize, PartialEq)]
struct User {
    name: String,
    no: u32,
}

session.remove::<User>("user").is_ok();         // true

session.set("user", User {
    name: "Yao Ming",
    no: 11,
}).unwrap();                                    // None

session.get::<User>("user").unwrap();           // Option<User>

session.destroy().await;                        // Ok(())

session.status().unwrap();                      // SessionStatus::Destroyed
// or

store.remove(&id).await;                        // Ok(())

Stores

  • Memory
  • Filesystem
  • Redis
  • sled
  • Memcached
  • Mongodb
  • PostgreSQL
  • MySQL/MariaDB

License

This project is licensed under either of

at your option.