pub struct ComponentKey { /* private fields */ }Expand description
An identifier for a component
Implementations§
Source§impl ComponentKey
impl ComponentKey
Sourcepub fn of<T: Component>() -> Self
pub fn of<T: Component>() -> Self
Get the component key of a type
Examples found in repository?
examples/query.rs (line 54)
18fn main() {
19 let mut world = World::new();
20
21 for i in 0..5 {
22 let ent = world.spawn();
23
24 world.add(ent, Tag);
25 world.add(ent, Name("Object"));
26
27 if i % 2 == 0 {
28 world.add(ent, Num(i));
29 }
30 }
31
32 {
33 let ent = world.spawn();
34 world.add(ent, Num(1337));
35 }
36
37 /// Query with component tuple
38 let query = world.query::<(Tag, Num)>();
39 for e in &query {
40 println!("Entity #{e} has both `Tag` and `Num`");
41 }
42
43 /// you can also use `Exclude` to ensure some components are not included
44 for e in &world.query::<(Tag, Exclude<(Num,)>)>() {
45 println!("Entity #{e} has `Tag` without `Num`");
46 }
47
48 // `Filter` allows for more fine-grained control.
49 // In fact, the (Component1, Component2, ...) tuple implements `ToFilter` so it can be used in a query
50 //
51 // `ComponentKey` is used to identify component types,
52 // the `component_id` macro can be used as a shorthand to `ComponentKey` functions.
53 let filter = Filter::new()
54 .with_include(&[ComponentKey::of::<Tag>(), ComponentKey::of::<Name>()])
55 .with_exclude(&[component_id!(Num)]);
56
57 for _ in &world.query_filter(filter) {
58 // do stuff
59 }
60}Sourcepub fn from_value<T: Component>(value: &T) -> Self
pub fn from_value<T: Component>(value: &T) -> Self
Get a component key from a value
Trait Implementations§
Source§impl Clone for ComponentKey
impl Clone for ComponentKey
Source§fn clone(&self) -> ComponentKey
fn clone(&self) -> ComponentKey
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Hash for ComponentKey
impl Hash for ComponentKey
Source§impl PartialEq for ComponentKey
impl PartialEq for ComponentKey
Source§fn eq(&self, other: &ComponentKey) -> bool
fn eq(&self, other: &ComponentKey) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for ComponentKey
impl StructuralPartialEq for ComponentKey
Auto Trait Implementations§
impl Freeze for ComponentKey
impl RefUnwindSafe for ComponentKey
impl Send for ComponentKey
impl Sync for ComponentKey
impl Unpin for ComponentKey
impl UnsafeUnpin for ComponentKey
impl UnwindSafe for ComponentKey
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more