hexga_core/accessor.rs
1// Todo: Make a Constructor trait ?
2
3/*
4pub trait Has<'a,T>
5{
6 fn retrieve(&'a self) -> T;
7}
8impl<'a,T> Has<'a,T> for T where T:Copy
9{
10 fn retrieve(&'a self) -> T { *self }
11}
12*/
13
14pub trait Has<T>
15{
16 fn retrieve(&self) -> T;
17}
18impl<T> Has<T> for T
19where
20 T: Copy,
21{
22 fn retrieve(&self) -> T { *self }
23}
24
25/*
26pub trait Setter<T>
27{
28 fn set(&mut self, val: T) -> &mut Self;
29}
30impl<T> Setter<T> for T
31{
32 fn set(&mut self, val: T) -> &mut Self {
33 *self = val;
34 self
35 }
36}
37*/
38
39/*
40pub trait With<T>
41{
42 fn with(self, value: T);
43}
44*/
45
46//pub trait GetterSetter<T> : Has<T> + Setter<T>{}
47//impl<S,T> GetterSetter<T> for S where S:Has<T> +Setter<T>{}
48
49// Based on [GGEZ Has trait](https://docs.rs/ggez/latest/ggez/context/trait.Has.html)
50pub trait HasRef<T>
51{
52 fn retrive_ref(&self) -> &T;
53}
54impl<T> HasRef<T> for T
55{
56 fn retrive_ref(&self) -> &T { self }
57}
58
59// Based on [GGEZ HasMut trait](https://docs.rs/ggez/latest/ggez/context/trait.HasMut.html)
60pub trait HasMut<T>
61{
62 fn retrive_mut(&mut self) -> &mut T;
63}
64impl<T> HasMut<T> for T
65{
66 fn retrive_mut(&mut self) -> &mut T { self }
67}
68
69//pub trait Has<T> : HasRef<T> + HasMut<T>{}
70//impl<S,T> Has<T> for S where S:HasRef<T> +HasMut<T>{}
71
72/*
73pub trait HasReadGuard<'a,T>
74{
75 fn retrive_guard_ref(&'a self) -> T;
76}
77impl<'a,T> HasReadGuard<'a,&'a T> for &'a T { fn retrive_guard_ref(&'a self) -> &'a T { self } }
78*/