1pub fn add(left: u64, right: u64) -> u64 {
6 left + right
7}
8
9pub struct S {
11 pub i: i32,
12 pub u: u32,
13}
14
15impl S {
16 pub fn new(i: i32, u: u32) -> S {
18 S { i, u }
19 }
20
21 pub fn add(&self, other: &S) -> S {
33 S::new(self.i + other.i, self.u + other.u)
34 }
35}
36
37#[cfg(test)]
38mod tests {
39 use super::*;
40
41 #[test]
42 fn it_works() {
43 let result = add(2, 2);
44 assert_eq!(result, 4);
45 }
46
47 #[test]
48 fn create_s() {
49 let s = S::new(10i32, 20u32);
50 assert_eq!(s.i, 10i32);
51 assert_eq!(s.u, 20u32);
52 }
53
54 #[test]
55 fn add_s() {
56 let s1 = S::new(1i32, 1u32);
57 let s2 = S::new(2i32, 2u32);
58
59 let s3 = s1.add(&s2);
60
61 assert_eq!(s3.i, 3);
62 assert_eq!(s3.u, 3u32);
63 }
64}