Oregami
Repositories/oxedyne/fe2o3

oxedyne/fe2o3/fe2o3_datime/src/core/known.rs

2.6 KiB, 13 runs

created by r1870400018:6351, which is this file's identity for as long as the history lasts, whatever it is later renamed to

download · who wrote it · its history

1//! [Written with AI entirely](https://need2know.ai/entirely-ai/code)\
2//! Anthropic Claude
3
4use oxedyne_fe2o3_core::prelude::*;
5
6#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
7pub struct KnownYear(pub i32);
8
9impl KnownYear {
10 pub fn new(year: i32) -> Self {
11 Self(year)
12 }
13
14 pub fn value(&self) -> i32 {
15 self.0
16 }
17}
18
19#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
20pub struct KnownMonth(pub u8);
21
22impl KnownMonth {
23 pub fn new(month: u8) -> Outcome<Self> {
24 if month < 1 || month > 12 {
25 return Err(err!("Invalid month: {}", month; Invalid, Input, Range));
26 }
27 Ok(Self(month))
28 }
29
30 pub fn value(&self) -> u8 {
31 self.0
32 }
33}
34
35#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
36pub struct KnownDay(pub u8);
37
38impl KnownDay {
39 pub fn new(day: u8) -> Outcome<Self> {
40 if day < 1 || day > 31 {
41 return Err(err!("Invalid day: {}", day; Invalid, Input, Range));
42 }
43 Ok(Self(day))
44 }
45
46 pub fn value(&self) -> u8 {
47 self.0
48 }
49}
50
51#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
52pub struct KnownHour(pub u8);
53
54impl KnownHour {
55 pub fn new(hour: u8) -> Outcome<Self> {
56 if hour > 23 {
57 return Err(err!("Invalid hour: {}", hour; Invalid, Input, Range));
58 }
59 Ok(Self(hour))
60 }
61
62 pub fn value(&self) -> u8 {
63 self.0
64 }
65}
66
67#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
68pub struct KnownMinute(pub u8);
69
70impl KnownMinute {
71 pub fn new(minute: u8) -> Outcome<Self> {
72 if minute > 59 {
73 return Err(err!("Invalid minute: {}", minute; Invalid, Input, Range));
74 }
75 Ok(Self(minute))
76 }
77
78 pub fn value(&self) -> u8 {
79 self.0
80 }
81}
82
83#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
84pub struct KnownSecond(pub u8);
85
86impl KnownSecond {
87 pub fn new(second: u8) -> Outcome<Self> {
88 if second > 59 {
89 return Err(err!("Invalid second: {}", second; Invalid, Input, Range));
90 }
91 Ok(Self(second))
92 }
93
94 pub fn value(&self) -> u8 {
95 self.0
96 }
97}
98
99#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
100pub struct KnownNanoSecond(pub u32);
101
102impl KnownNanoSecond {
103 pub fn new(nano: u32) -> Outcome<Self> {
104 if nano > 999_999_999 {
105 return Err(err!("Invalid nanosecond: {}", nano; Invalid, Input, Range));
106 }
107 Ok(Self(nano))
108 }
109
110 pub fn value(&self) -> u32 {
111 self.0
112 }
113}