[][src]Crate hecs

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();
let a = world.spawn((123, true, "abc"));
let b = world.spawn((42, false));
for (id, (number, &flag)) in &mut world.query::<(&mut i32, &bool)>() {
  if flag { *number *= 2; }
}
assert_eq!(*world.get::<i32>(a).unwrap(), 246);
assert_eq!(*world.get::<i32>(b).unwrap(), 42);

Structs

BuiltEntity

The output of an EntityBuilder, suitable for passing to World::spawn or World::insert

Entity

Lightweight unique ID of an entity

EntityBuilder

Helper for incrementally constructing a bundle of components with dynamic component types

EntityRef

Handle to an entity with any component types

Iter

Iterator over all of a world's entities

MissingComponent

Error indicating that an entity did not have a required component

NoSuchEntity

Error indicating that no entity with a particular ID exists

QueryBorrow

A borrow of a World sufficient to execute the query Q

QueryIter

Iterator over the set of entities with the components in Q

Ref

Shared borrow of an entity's component

RefMut

Unique borrow of an entity's component

World

An unordered collection of entities, each having any number of distinctly typed components

Enums

ComponentError

Errors that arise when accessing components

Traits

Bundle

A statically typed collection of components

Component

Types that can be components (implemented automatically)

DynamicBundle

A dynamically typed collection of components

Query

A collection of component types to fetch from a World

Derive Macros

Bundle

Implement Bundle for a monomorphic struct