thai_year_conv/
lib.rs

1/// Trait สำหรับการแปลงปี
2pub trait YearConversion {
3    /// แปลงปีจาก ค.ศ. เป็น พ.ศ.
4    ///
5    /// # ตัวอย่าง
6    ///
7    /// ```
8    /// use thai_year_conv::Year;
9    /// let year = Year::new(2021);
10    /// assert_eq!(year.to_buddhist_year(), 2564);
11    /// ```
12    fn to_buddhist_year(&self) -> i32;
13
14    /// แปลงปีจาก พ.ศ. เป็น ค.ศ.
15    ///
16    /// # ตัวอย่าง
17    ///
18    /// ```
19    /// use thai_year_conv::Year;
20    /// let year = Year::new(2564);
21    /// assert_eq!(year.to_christian_year(), 2021);
22    /// ```
23    fn to_christian_year(&self) -> i32;
24}
25
26/// Struct สำหรับเก็บปี
27pub struct Year {
28    year: i32,
29}
30
31impl Year {
32    /// สร้าง `Year` ใหม่
33    ///
34    /// # ตัวอย่าง
35    ///
36    /// ```
37    /// use thai_year_conv::Year;
38    /// let year = Year::new(2021);
39    /// ```
40    pub fn new(year: i32) -> Self {
41        Self { year }
42    }
43}
44
45impl YearConversion for Year {
46    fn to_buddhist_year(&self) -> i32 {
47        self.year + 543
48    }
49
50    fn to_christian_year(&self) -> i32 {
51        self.year - 543
52    }
53}