casper_contract_sdk_codegen/
support.rs1pub trait IntoResult<T, E> {
4 fn into_result(self) -> Result<T, E>;
5}
6
7pub trait IntoOption<T> {
8 fn into_option(self) -> Option<T>;
9}
10
11#[cfg(test)]
12mod tests {
13 use super::*;
14
15 #[derive(Debug, PartialEq, Eq)]
16 struct MyOk;
17 #[derive(Debug, PartialEq, Eq)]
18 struct MyErr;
19
20 #[derive(Debug, PartialEq, Eq)]
21
22 enum CustomResult {
23 Ok(MyOk),
24 Err(MyErr),
25 }
26
27 #[derive(Debug, PartialEq, Eq)]
28 enum CustomOption {
29 Some(MyOk),
30 None,
31 }
32
33 impl IntoResult<MyOk, MyErr> for CustomResult {
34 fn into_result(self) -> Result<MyOk, MyErr> {
35 match self {
36 CustomResult::Ok(ok) => Ok(ok),
37 CustomResult::Err(err) => Err(err),
38 }
39 }
40 }
41
42 impl IntoOption<MyOk> for CustomOption {
43 fn into_option(self) -> Option<MyOk> {
44 match self {
45 CustomOption::Some(value) => Some(value),
46 CustomOption::None => None,
47 }
48 }
49 }
50
51 #[test]
52 fn test_into_result() {
53 let ok = CustomResult::Ok(MyOk);
54 let err = CustomResult::Err(MyErr);
55
56 assert_eq!(ok.into_result(), Ok(MyOk));
57 assert_eq!(err.into_result(), Err(MyErr));
58 }
59
60 #[test]
61 fn test_into_option() {
62 let some = CustomOption::Some(MyOk);
63 let none = CustomOption::None;
64
65 assert_eq!(some.into_option(), Some(MyOk));
66 assert_eq!(none.into_option(), None);
67 }
68}