Skip to content

Quick Start

This guide walks you through basic persistent ETS operations with shelf.

Terminal window
gleam add shelf
import gleam/dynamic/decode
import shelf/set
pub fn main() {
// Open a persistent set — loads existing data from disk
let assert Ok(table) =
set.open(name: "users", path: "data/users.dets", base_directory: "/app/data", key: decode.string, value: decode.int)
// Fast writes (to ETS)
let assert Ok(Nil) = set.insert(into: table, key: "alice", value: 42)
let assert Ok(Nil) = set.insert(into: table, key: "bob", value: 99)
// Fast reads (from ETS)
let assert Ok(42) = set.lookup(from: table, key: "alice")
// Persist to disk when ready
let assert Ok(Nil) = set.save(table)
// Close auto-saves
let assert Ok(Nil) = set.close(table)
}

On next startup, set.open automatically loads the saved data back into ETS. The decoders ensure that every entry loaded from disk matches the expected types — any corrupted or mistyped entries are caught at load time.