param_builder/
as_param.rs

1use crate::param::Param;
2
3pub trait AsParam {
4    fn as_param(&self) -> Param;
5}
6
7macro_rules! impl_copy_as_param {
8    ($t:ty) => {
9        impl AsParam for $t {
10            fn as_param(&self) -> Param {
11                Box::new(*self)
12            }
13        }
14    };
15    ($($t:ty),*) => {
16        $(impl_copy_as_param!($t);)*
17    }
18}
19
20impl_copy_as_param![bool, u32, i32, i64];
21
22macro_rules! impl_clone_as_param {
23    ($t:ty) => {
24        impl AsParam for $t {
25            fn as_param(&self) -> Param {
26                Box::new(self.clone())
27            }
28        }
29    };
30    ($($t:ty),*) => {
31        $(impl_clone_as_param!($t);)*
32    }
33}
34
35impl_clone_as_param![Vec<u8>, String];