v9 0.1.38

A slim data engine for Data Oriented Design
Documentation

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:

  1. A clean API.
  2. Gotta go fast:
  • Compile-times must be fast.
  • Bulk operations (mainly the kernels) must be h*ckin' fast.
  1. 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.