osom_lib_primitives/
does_not_have_to_be_used.rs1#[derive(Debug, Default, PartialEq, Eq, Hash, Clone)]
6#[repr(transparent)]
7pub struct DoesNotHaveToBeUsed<T> {
8 pub value: T,
9}
10
11impl<T> core::ops::Deref for DoesNotHaveToBeUsed<T> {
12 type Target = T;
13 fn deref(&self) -> &Self::Target {
14 &self.value
15 }
16}
17
18impl<T> core::ops::DerefMut for DoesNotHaveToBeUsed<T> {
19 fn deref_mut(&mut self) -> &mut Self::Target {
20 &mut self.value
21 }
22}
23
24impl<T> AsRef<T> for DoesNotHaveToBeUsed<T> {
25 fn as_ref(&self) -> &T {
26 &self.value
27 }
28}
29
30impl<T> AsMut<T> for DoesNotHaveToBeUsed<T> {
31 fn as_mut(&mut self) -> &mut T {
32 &mut self.value
33 }
34}
35
36impl<T> core::borrow::Borrow<T> for DoesNotHaveToBeUsed<T> {
37 fn borrow(&self) -> &T {
38 &self.value
39 }
40}
41
42impl<T> From<T> for DoesNotHaveToBeUsed<T> {
43 fn from(value: T) -> Self {
44 Self { value }
45 }
46}
47
48unsafe impl<T: Send> Send for DoesNotHaveToBeUsed<T> {}
49unsafe impl<T: Sync> Sync for DoesNotHaveToBeUsed<T> {}