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}