rasa
Type-safe key-value tables backed by Erlang’s ETS. Tables are
configured using a builder pattern, where you specify the table type
(Set or OrderedSet) and access level (Public, Protected, or
Private) before creating the table.
Requires OTP 27 or later.
Types
The access level of an ETS table. Public allows any process to read and
write. Protected allows any process to read but only the owner to write.
Private restricts both reads and writes to the owning process.
pub type Access {
Public
Protected
Private
}
Constructors
-
Public -
Protected -
Private
A Table builder. Defaults to Set and Protected, matching the
defaults specified by the erlang ets module.
pub opaque type Builder
The type of ETS table. Set tables have unordered keys. OrderedSet
tables maintain keys in sorted order.
pub type Kind {
Set
OrderedSet
}
Constructors
-
Set -
OrderedSet
Values
pub fn access(table: Table(a, b)) -> Result(Access, Nil)
Returns the table’s Access level (Public, Protected, or Private).
pub fn build(name: String) -> Builder
Creates a new Builder with the given name. Defaults to Set and
Protected.
pub fn delete(table: Table(a, b), key: a) -> Result(Nil, Nil)
Removes a key and its value from the table.
pub fn first(table: Table(a, b)) -> Result(#(a, b), Nil)
Returns the first key-value pair in the table without removing it from the
table. The order is guaranteed only for OrderedSet tables. See the
ets docs for more details.
pub fn insert(
table: Table(a, b),
key: a,
value: b,
) -> Result(Nil, Nil)
Inserts a key and value into the table. If the key already exists, its value is replaced with the new one.
pub fn insert_new(
table: Table(a, b),
key: a,
value: b,
) -> Result(Nil, Nil)
Inserts a key and value into the table only if the key does not already
exist. Returns Error(Nil) if the key is already present.
pub fn is_empty(table: Table(a, b)) -> Bool
Determines whether or not the table is empty. Returns True if the table
does not exist.
pub fn last(table: Table(a, b)) -> Result(#(a, b), Nil)
Returns the last key-value pair in the table without removing it from the
table. The order is guaranteed only for OrderedSet tables. See the
ets docs for more details.
pub fn lookup(table: Table(a, b), key: a) -> Result(b, Nil)
Returns the value associated with the given key, or Error(Nil) if
the key does not exist.
pub fn table(builder: Builder) -> Table(a, b)
Creates a new ETS table from a Builder. The table name is suffixed with
a unique integer to avoid name collisions. The table name is converted to
an atom which is used as the table identifier.
pub fn to_list(table: Table(a, b)) -> Result(List(#(a, b)), Nil)
Returns all entries in the table as a list of key-value tuples.