Crate hecs[−][src]
Expand description
A handy ECS
hecs provides a high-performance, minimalist entity-component-system (ECS) world. It is a
library, not a framework. In place of an explicit “System” abstraction, a World
’s entities are
easily queried from regular code. Organize your application however you like!
In order of importance, hecs pursues:
- fast traversals
- a simple interface
- a small dependency closure
- exclusion of externally-implementable functionality
let mut world = World::new();
// Nearly any type can be used as a component with zero boilerplate
let a = world.spawn((123, true, "abc"));
let b = world.spawn((42, false));
// Systems can be simple for loops
for (id, (number, &flag)) in world.query_mut::<(&mut i32, &bool)>() {
if flag { *number *= 2; }
}
// Random access is simple and safe
assert_eq!(*world.get::<i32>(a).unwrap(), 246);
assert_eq!(*world.get::<i32>(b).unwrap(), 42);
Modules
Structs
A collection of entities having the same component types
Determines freshness of information derived from World::archetypes
Error indicating that a ColumnBatchBuilder
was missing components
Handle for appending components
Batched version of QueryIter
The output of an EntityBuilder
, suitable for passing to
World::spawn
or World::insert
A collection of component data for entities with the same component types
An incomplete collection of component data for entities with the same component types
A collection of component types
Lightweight unique ID, or handle, of an entity
Helper for incrementally constructing a bundle of components with dynamic component types
Handle to an entity with any component types
Iterator over all of a world’s entities
Error indicating that an entity did not have a required component
Error indicating that no entity with a particular ID exists
A prepared query can be stored independently of the World
to amortize query set-up costs.
Combined borrow of a PreparedQuery
and a World
Iterates over all entities matching a PreparedQuery
A borrow of a World
sufficient to execute the query Q
Iterator over the set of entities with the components in Q
A query builder that’s convertible directly into an iterator
A borrow of a World
sufficient to execute the query Q
on a single entity
Shared borrow of an entity’s component
Unique borrow of an entity’s component
Entity IDs created by World::spawn_batch
Iterator over Entity
s spawned by World::spawn_column_batch()
Query transformer skipping entities that do not have a T
component
Query transformer skipping entities that have a T
component
An unordered collection of entities, each having any number of distinctly typed components
Enums
Errors that arise when accessing components
Errors that arise when querying a single entity
Traits
A statically typed collection of components
Types that can be components, implemented automatically for all Send + Sync + 'static
types
A dynamically typed collection of components
A collection of component types to fetch from a World
Type Definitions
Type of values yielded by a query