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}