dummy_crate/
lib.rs

1///! # Dummy crate
2/// A useless dummy crate to learn how to publish crates. Do not use.
3
4/// Function that adds two numbers
5pub fn add(left: u64, right: u64) -> u64 {
6    left + right
7}
8
9/// Just some struct with two fields
10pub struct S {
11    pub i: i32,
12    pub u: u32,
13}
14
15impl S {
16    /// Constructor
17    pub fn new(i: i32, u: u32) -> S {
18        S { i, u }
19    }
20
21    /// Add two structs and return a- new one
22    /// ```
23    /// use dummy_crate::S;
24    /// let s1 = S::new(1i32, 1u32);
25    /// let s2 = S::new(2i32, 2u32);
26    ///
27    /// let s3 = s1.add(&s2);
28    ///
29    /// assert_eq!(s3.i, 3);
30    /// assert_eq!(s3.u, 3u32);
31    /// ```
32    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}