use crate::atomic_refcell::{ExclusiveBorrow, SharedBorrow};
use crate::entities::Entities;
use core::ops::{Deref, DerefMut};
pub struct EntitiesView<'a> {
pub(crate) entities: &'a Entities,
pub(crate) borrow: Option<SharedBorrow<'a>>,
pub(crate) all_borrow: Option<SharedBorrow<'a>>,
}
impl Deref for EntitiesView<'_> {
type Target = Entities;
#[inline]
fn deref(&self) -> &Self::Target {
self.entities
}
}
impl Clone for EntitiesView<'_> {
#[inline]
fn clone(&self) -> Self {
EntitiesView {
entities: self.entities,
borrow: self.borrow.clone(),
all_borrow: self.all_borrow.clone(),
}
}
}
pub struct EntitiesViewMut<'a> {
pub(crate) entities: &'a mut Entities,
pub(crate) _borrow: Option<ExclusiveBorrow<'a>>,
pub(crate) _all_borrow: Option<SharedBorrow<'a>>,
}
impl Deref for EntitiesViewMut<'_> {
type Target = Entities;
#[inline]
fn deref(&self) -> &Self::Target {
self.entities
}
}
impl DerefMut for EntitiesViewMut<'_> {
#[inline]
fn deref_mut(&mut self) -> &mut Self::Target {
self.entities
}
}