The Rind global Registry owns and separates Metadata (immutable definitions) from Instance Data (mutable runtime data), and offers controlled APIs to instantiate and access both.
Metadata Store
A metadata store is a typed collection of model definitions. Each store groups metadata for one model family (for example, Units metadata). Metadata in a store is:
- loaded from source (
toml, extensions, or internal registration), - immutable after load,
- shared across Runtimes (typically via
Arc<T>).
Metadata Registry
The metadata registry is the registry subsystem that manages all metadata stores.
It is responsible for:
- registering model metadata stores,
- resolving metadata by model type and key,
- validating definition-level invariants before instantiation,
- exposing read-oriented lookup APIs.
Instance Registry
The instance registry is the registry subsystem that manages live model instances.
It is responsible for:
- instantiating instance data from metadata,
- storing and retrieving active instances,
- enforcing runtime-safe mutation/access APIs,
- coordinating lifecycle-bound cleanup and disposal.
Example
registry.meta::<ServiceMetaStore>().get("api")?;
registry.instances::<ServiceInstanceStore>().instantiate("api")?;
registry.instances::<ServiceInstanceStore>().with_instance_mut(id, |svc| {
svc.restart_policy.bump_failures();
});