A data engine for Data Oriented Design.
crate:v9 is a vastly simpler version of crate:v11. Example code
Design
A Universe works like a HashMap<TypeId, Any>.
A single instance of any type can be inserted into the universe.
Changes can then be made by running a Kernel.
A Kernel is any closure whose arguments all implement Extract.
(The Extract trait works like fn extract(&Universe) -> Self.)
Encapsulation
This crate makes an unreasonable amount of things public. This is intentional!
An application should encapsulate v9 behind its own interfaces.
It's hard to foresee all needs; hopefully you can do something useful with them,
and this is more honest than making things pub to satisfy my whims.
Safety
┐(ツ)┌
My priorities are:
- A clean API.
- Gotta go fast:
- Compile-times must be fast.
- Bulk operations (mainly the kernels) must be h*ckin' fast.
- Safety.
If you've tripped over something, that we'd maybe wish didn't compile, and it doesn't blow up at runtime in an obvious way, then I'll be concerned. Monkey-proofing is not a high priority.