#![warn(elided_lifetimes_in_paths)]
#![warn(trivial_casts)]
#![warn(trivial_numeric_casts)]
#![warn(unused_qualifications)]
#![warn(clippy::used_underscore_binding)]
#![warn(clippy::similar_names)]
#![warn(clippy::invalid_upcast_comparisons)]
#![warn(clippy::cast_precision_loss)]
#![warn(clippy::cast_possible_wrap)]
#![warn(clippy::mutex_integer)]
#![warn(clippy::mut_mut)]
#![warn(clippy::items_after_statements)]
#![warn(clippy::print_stdout)]
#![warn(clippy::maybe_infinite_iter)]
#![allow(clippy::uninlined_format_args)]
#![allow(clippy::needless_lifetimes)]
#![allow(clippy::question_mark)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![warn(missing_docs)]
#![no_std]
#[cfg(feature = "std")]
extern crate std;
extern crate alloc;
mod add_component;
mod add_distinct_component;
mod add_entity;
pub mod advanced;
pub mod all_storages;
pub mod borrow;
mod component;
mod contains;
mod delete;
mod entities;
mod entity_id;
pub mod error;
mod get;
pub mod iter;
mod iter_component;
pub mod memory_usage;
mod r#mut;
mod not;
mod optional;
mod or;
mod public_transport;
mod remove;
pub mod scheduler;
mod seal;
pub mod sparse_set;
mod storage;
pub mod track;
mod unique;
pub mod views;
pub mod world;
pub use add_component::AddComponent;
pub use add_distinct_component::AddDistinctComponent;
pub use add_entity::AddEntity;
#[doc(inline)]
pub use component::{Component, Unique};
pub use contains::Contains;
pub use delete::Delete;
pub use entity_id::EntityId;
pub use get::Get;
#[doc(inline)]
pub use iter::IntoIter;
pub use remove::Remove;
#[doc(inline)]
pub use scheduler::{IntoWorkload, Workload};
#[cfg(feature = "proc")]
pub use shipyard_proc::{Borrow, BorrowInfo, Component, IntoIter, Label, Unique, WorldBorrow};
pub use unique::UniqueStorage;
#[doc(inline)]
pub use views::{
AllStoragesView, AllStoragesViewMut, EntitiesView, EntitiesViewMut, UniqueView, UniqueViewMut,
View, ViewMut,
};
#[doc(inline)]
pub use world::World;
use advanced::{atomic_refcell, get_component, get_unique, reserve, system, tracking};
type ShipHashMap<K, V> = hashbrown::HashMap<K, V>;
#[doc(hidden)]
pub type ShipHashSet<V> = hashbrown::HashSet<V>;
#[cfg(feature = "std")]
fn std_thread_id_generator() -> u64 {
use std::thread::ThreadId;
let thread_id = std::thread::current().id();
let thread_id: *const ThreadId = &thread_id;
let thread_id: *const u64 = thread_id as _;
unsafe { *thread_id }
}