shipyard 0.11.2

Entity Component System
Documentation
use crate::tracking::Tracking;

/// Indicates that a `struct` or `enum` can be store in the `World`.
#[cfg(feature = "thread_local")]
pub trait Component: Sized + 'static {
    /// Kind of event to track for this component.
    type Tracking: Tracking;
}
/// Indicates that a `struct` or `enum` can be store in the `World`.
#[cfg(not(feature = "thread_local"))]
pub trait Component: Sized + Send + Sync + 'static {
    /// Kind of event to track for this component.
    type Tracking: Tracking;
}

/// Indicates that a `struct` or `enum` can be store a single time in the `World`.
#[cfg(feature = "thread_local")]
pub trait Unique: Sized + 'static {}
/// Indicates that a `struct` or `enum` can be store a single time in the `World`.
#[cfg(not(feature = "thread_local"))]
pub trait Unique: Sized + Send + Sync + 'static {}