girltest/
lib.rs

1//! Girltest
2//!
3//! `girltest` is a module designed to enable operations involving girls.
4
5/// Holds a girl.
6#[derive(Debug)]
7pub struct Girl {
8    pub gender: String,
9    pub sexuality: String,
10    pub contains_boy: bool,
11    pub name: u32,
12    pub foot_name: Option<String>,
13}
14
15impl Girl {
16    pub fn new_girl(gender: String, sexuality: String, contains_boy: bool, name: u32) -> Self {
17        Girl {
18            gender,
19            sexuality,
20            contains_boy,
21            name,
22            foot_name: None,
23        }
24    }
25
26    pub fn get_gender(self: &Self) -> &String {
27        &self.gender
28    }
29
30    pub fn get_sexuality(&self) -> &String {
31        &self.sexuality
32    }
33
34    pub fn get_contains_boy(&self) -> bool {
35        self.contains_boy
36    }
37
38    pub fn get_name(&self) -> u32 {
39        self.name
40    }
41
42    /// Returns the starting initial of the `gender` field of a `Girl`.
43    ///
44    ///# Panics
45    /// Panics if `gender` is an empty `String`.
46    ///
47    /// # Examples
48    ///
49    /// ```
50    /// let girl = girltest::Girl::new_girl(
51    ///     String::from("boy"),
52    ///     String::from("gay"),
53    ///     true,
54    ///     32
55    /// );
56    ///
57    /// assert_eq!("b", girl.gender_initial());
58    /// ```
59    pub fn gender_initial(&self) -> &str {
60        &self.gender[..1]
61    }
62}