A column-based in-memory database for Data-Oriented Design.
This crate lies about safety. Rust wants to be monkey-safe; v11 aims for merely derp-safe.
The danger zones are easy to avoid:
register()functions on domains, properties and tables. This should only be done from the main thread, before any
Universes have been created.
- Doing strange things with the references in a table lock. (Namely,
pubitems that are marked
#[doc(hidden)]. These should only be used by macro-generated code.
Table indexing is strongly typed.
Each table has its own index type (
Ergonomics for juggling multiple locks.
Each property name is in the form "domain/property_name".
A domain is a simple namespacing scheme;
universes can pick and choose which domains they contain.
Before being added to a universe, the domain must be registered using
An arbitrary collection of verbs for you to use for table events. The precise meaning of the names of the events is user-defined.
Columns can be made searchable using
Data structures for storing columnar elements.
Creates a struct that holds many table locks that implement
Declares a domain. This is similar to a single-level namespace.
Generates a property, which is a singleton value accessed via the
This macro generates a column-based data table. (It is currently implemented using the procedural-masquerade hack.)
A context object whose reference should be passed around everywhere.
Return value for function parameters passed into
Trait describing bounds that all storable types must satisfy.