param/
lib.rs

1pub trait Param<T> {
2    fn param(&self) -> T;
3}
4
5pub trait ParamRef<T> {
6    fn param_ref(&self) -> &T;
7}
8
9pub trait ParamMaybeRef<T> {
10    fn param_maybe_ref(&self) -> Option<&T>;
11}
12
13pub trait ParamMut<T> {
14    fn param_mut(&mut self) -> &mut T;
15}
16
17pub trait ParamMaybeMut<T> {
18    fn param_maybe_mut(&mut self) -> Option<&mut T>;
19}
20
21pub trait ParamSet<T> {
22    type Transformed;
23    fn param_set(self, item: T) -> Self::Transformed;
24}
25pub trait ParamRemove<T> {
26    type Transformed;
27    fn param_remove(self) -> Self::Transformed;
28}
29
30pub trait ParamTake<T> {
31    type Transformed;
32    fn param_take(self) -> (Self::Transformed, T);
33}
34
35impl<T: Clone> Param<T> for T {
36    fn param(&self) -> T {
37        self.clone()
38    }
39}