vest_lib/regular/
clone.rs1use super::bytes::{Fixed, Tail, Variable};
2use super::uints::{U16Le, U32Le, U64Le, U8};
3use vstd::prelude::*;
4
5verus! {
6
7macro_rules! impl_reflexive_clone {
8 ($($ty:ty),*) => {
9 ::vstd::prelude::verus! {
10 $(
11 impl Clone for $ty {
12 fn clone(&self) -> (out: Self)
13 ensures
14 out == *self,
15 {
16 Self
17 }
18 }
19 )*
20 }
21 };
22}
23
24impl_reflexive_clone!(U8, U16Le, U32Le, U64Le, Tail);
25
26impl Clone for Variable {
27 fn clone(&self) -> (out: Self)
28 ensures
29 out == *self,
30 {
31 Variable(self.0)
32 }
33}
34
35impl<const N: usize> Clone for Fixed<N> {
36 fn clone(&self) -> (out: Self)
37 ensures
38 out == *self,
39 {
40 Fixed
41 }
42}
43
44}