tiny_ecs 0.19.6

A tiny ECS that tries to avoid unnecessary copy/clones
Documentation
use std::error::Error;
use std::fmt;
use std::fmt::{Debug, Display};

#[derive(Debug)]
pub enum ECSError {
    Borrow,
    BorrowMut,
    Downcast,
    DowncastMut,
    PtrRef,
    PtrMut,
    NoComponentMap,
    NoComponentForEntity,
    WithAfterFinalise,
    FinaliseNonEntity,
    BitMasksExhausted,
    AddDupeComponent,
}

impl Display for ECSError {
    #[inline]
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            ECSError::Borrow => Display::fmt("already borrowed", f),
            ECSError::BorrowMut => Display::fmt("already mutably borrowed", f),
            ECSError::Downcast => Display::fmt("could not downcast to ref", f),
            ECSError::DowncastMut => Display::fmt("could not downcast to mut ref", f),
            ECSError::PtrRef => Display::fmt("failed to convert pointer to ref", f),
            ECSError::PtrMut => Display::fmt("failed to convert pointer to mut", f),
            ECSError::NoComponentMap => Display::fmt("no component map for type", f),
            ECSError::NoComponentForEntity => {
                Display::fmt("part map does not contain part for entity", f)
            }
            ECSError::WithAfterFinalise => Display::fmt("use of .with() after .finalise()", f),
            ECSError::FinaliseNonEntity => {
                Display::fmt("can not finalise() without new_entity()", f)
            }
            ECSError::BitMasksExhausted => {
                Display::fmt("bitmasks exhausted, can't add new component type", f)
            }
            ECSError::AddDupeComponent => {
                Display::fmt("attempted to add duplicate component to entity", f)
            }
        }
    }
}

impl Error for ECSError {}