--- date-created: 2026-09-01 20:17 --- # Machoke Public Surface Machoke's primary goal is to be a common storage interface for different types of storage backends. The first Machoke user is [[falinks|Falinks]]. Its storage needs are simple. It just manages a flat list of keyed entries. The first backend for Machoke is just going to be a simple in-memory map that gets serialized on shutdown and loaded on startup. ## Design ### `Machoke` public interface | Method | Parameters | Returns | Description | | --------------- | ----------------------- | ---------------- | ---------------------------------------------------- | | `` | `machoke::Options` | `Result>` | Creates the `Machoke` object. | | `get` | `key: String` | `Result` | Returns the stored value for the `key` if it exists. | | `set` | `key: String, value: T` | `Result<()>` | Stores the value using `key`. | | `delete` | `key: String` | `Result` | Deletes the value if it exists for `key`. | | `list` | | `Result>>` | Retrieves all stored, raw values. | #### machoke::Options | Key | Type | Default | Description | | --- | --- | --- | --- | | `backend` | `Backend` | `Backend::Simple` | The storage backend to use. | | `path` | `std::path::PathBuf` | tbd | The path to the file/directory for the backend to use. | #### machoke::Entry | Field | Type | Description | | --- | --- | --- | | `key` | `String` | The entry key. | | `value` | `T` | The stored value. | #### machoke::Error - `NotFound`: no value exists for the provided key. - `InvalidKey`: the provided key cannot be used. - `Backend`: the storage backend failed.