1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//! Contains the EntryInformation struct that holds information about each
//! entry that can be sorted.

//-----------------------------------------------------------------------------

use std::fmt::Display;

//-----------------------------------------------------------------------------

/// Represents an individual with a Name, Age, and Height.
#[derive(Clone)]
pub struct EntryInformation {
    /// Name of this individual.
    pub name: String,
    /// Age of this individual, in years.
    pub age: i32,
    /// Height of this individual, in inches.
    pub height: i32,
}

impl EntryInformation {
    /// Constructor
    ///
    /// # Parameters
    /// - name
    ///
    ///   Name of an individual
    /// - age
    ///
    ///   Age of an individual (in years)
    /// - height
    ///
    ///   Height of an individual (in inches)
    ///
    /// # Returns
    /// Returns a new instance of the EntryInformation struct.
    pub fn new(name: &str, age: i32, height: i32) -> EntryInformation {
        EntryInformation {
            name: name.to_string(),
            age,
            height,
        }
    }
}

impl Display for EntryInformation {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.write_fmt(format_args!("{0:6} {1:3} {2:3}\"", self.name, self.age, self.height))
    }
}