use super::ReadGuard;
use super::Shared;
use super::WriteGuard;
use std::cmp::Ordering;
use std::ops::Deref;
use std::ops::DerefMut;
impl<T: PartialEq> PartialEq for Shared<T> {
fn eq(&self, other: &Self) -> bool {
self.read().eq(&other.read())
}
}
impl<T: Eq> Eq for Shared<T> {}
impl<T: PartialOrd> PartialOrd for Shared<T> {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
self.read().partial_cmp(&other.read())
}
}
impl<T: Ord> Ord for Shared<T> {
fn cmp(&self, other: &Self) -> Ordering {
self.read().cmp(&other.read())
}
}
impl<T> From<T> for Shared<T> {
fn from(value: T) -> Self {
Shared::new(value)
}
}
impl<'a, T> Deref for ReadGuard<'a, T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a, T> Deref for WriteGuard<'a, T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a, T> DerefMut for WriteGuard<'a, T> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}