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§
- Archetype
- A collection of entities having the same component types
- Archetype
Column - Shared reference to a single column of component data in an
Archetype - Archetype
Column Mut - Unique reference to a single column of component data in an
Archetype - Archetypes
Generation - Determines freshness of information derived from
World::archetypes - Batch
- A sequence of entities yielded by
BatchedIter - Batch
Incomplete - Error indicating that a
ColumnBatchBuilderwas missing components - Batch
Writer - Handle for appending components
- Batched
Iter - Batched version of
QueryIter - Built
Entity - The output of an
EntityBuilder, suitable for passing toWorld::spawnorWorld::insert - Built
Entity Clone - A collection of components that implement
Clone - Change
Tracker - Helper to track changes in
Tcomponents - Changes
- Collection of iterators over changes in
Tcomponents - Column
Batch - A collection of component data for entities with the same component types
- Column
Batch Builder - An incomplete collection of component data for entities with the same component types
- Column
Batch Type - A collection of component types
- Command
Buffer - Records operations for future application to a
World - Entity
- Lightweight unique ID, or handle, of an entity
- Entity
Builder - Helper for incrementally constructing a bundle of components with dynamic component types
- Entity
Builder Clone - Variant of
EntityBuilderthat clones components on use - Entity
Ref - Handle to an entity with any component types
- Iter
- Iterator over all of a world’s entities
- Missing
Component - Error indicating that an entity did not have a required component
- NoSuch
Entity - Error indicating that no entity with a particular ID exists
- Prepared
Query - A prepared query can be stored independently of the
Worldto amortize query set-up costs. - Prepared
Query Borrow - Combined borrow of a
PreparedQueryand aWorld - Prepared
Query Iter - Iterates over all entities matching a
PreparedQuery - Prepared
View - Provides random access to the results of a prepared query
- Query
Borrow - A borrow of a
Worldsufficient to execute the queryQ - Query
Iter - Iterator over the set of entities with the components in
Q - Query
Mut - A query builder that’s convertible directly into an iterator
- Query
One - A borrow of a
Worldsufficient to execute the queryQon a single entity - Ref
- Shared borrow of an entity’s component
- RefMut
- Unique borrow of an entity’s component
- Satisfies
- A query that matches all entities, yielding
bools indicating whether each satisfies queryQ - Spawn
Batch Iter - Entity IDs created by
World::spawn_batch - Spawn
Column Batch Iter - Iterator over
Entitys spawned byWorld::spawn_column_batch() - Taken
Entity - An entity removed from a
World - View
- Provides random access to the results of a query
- View
Borrow - A borrow of a
Worldsufficient to random-access the results of the queryQ. - With
- Transforms query
Qby skipping entities not satisfying queryR - Without
- Transforms query
Qby skipping entities satisfying queryR - World
- An unordered collection of entities, each having any number of distinctly typed components
Enums§
- Access
- Type of access a
Querymay have to anArchetype - Component
Error - Errors that arise when accessing components
- Or
- Holds an
L, or anR, or both - Query
OneError - Errors that arise when querying a single entity
Traits§
- Bundle
- A statically typed collection of components
- Component
- Types that can be components, implemented automatically for all
Send + Sync + 'statictypes - Component
Ref &Tor&mut TwhereTis some component type- Component
RefShared &TwhereTis some component type- Dynamic
Bundle - A dynamically typed collection of components
- Dynamic
Bundle Clone - A dynamically typed collection of cloneable components
- Query
- A collection of component types to fetch from a
World - Query
Shared - Marker trait indicating whether a given
Querywill not produce unique references
Functions§
- bundle_
satisfies_ query - Checks if a query is satisfied by a bundle. This is primarily useful for unit tests.
- dynamic_
bundle_ satisfies_ query - Checks if a query is satisfied by a dynamic bundle. For static bundles, see bundle_satisfies_query. This is primarily useful for unit tests.
Derive Macros§
- Bundle
macros - Implement
Bundlefor a struct - Dynamic
Bundle Clone macros - Implement
DynamicBundleClonefor a struct. - Query
macros - Implement
Queryfor a struct