1use jpholiday::{Date, JPHoliday, OriginalHolidayChecker};
6
7fn main() {
8 let new_year = Date::new(2017, 1, 1).unwrap();
10 println!("{new_year} は祝日? {}", jpholiday::is_holiday(new_year));
11 println!(
12 "{} の祝日名: {:?}",
13 Date::new(2017, 1, 2).unwrap(),
14 jpholiday::is_holiday_name(Date::new(2017, 1, 2).unwrap())
15 );
16
17 println!("\n2017 年の祝日一覧:");
18 for (date, name) in jpholiday::year_holidays(2017) {
19 println!(" {date} {name}");
20 }
21
22 println!("\n2017 年 5 月の祝日:");
23 for (date, name) in jpholiday::month_holidays(2017, 5) {
24 println!(" {date} {name}");
25 }
26
27 println!("\nゴールデンウィーク (2017-05-01 〜 2017-05-05):");
28 for (date, name) in jpholiday::between(
29 Date::new(2017, 5, 1).unwrap(),
30 Date::new(2017, 5, 5).unwrap(),
31 ) {
32 println!(" {date} {name}");
33 }
34
35 let jp = JPHoliday::new();
37 let holidays = jp.holidays(Date::new(2020, 1, 1).unwrap());
38 println!("\nクラス API: {:?}", holidays);
39
40 struct CompanyHoliday;
42 impl OriginalHolidayChecker for CompanyHoliday {
43 fn is_holiday(&self, date: Date) -> bool {
44 date == Date::new(2020, 2, 9).unwrap()
45 }
46 fn holiday_name(&self, _date: Date) -> String {
47 "特別休暇".to_string()
48 }
49 }
50
51 let mut jp = JPHoliday::new();
52 jp.register(CompanyHoliday);
53 let special = Date::new(2020, 2, 9).unwrap();
54 println!(
55 "\n独自祝日を登録: {} -> {:?}",
56 special,
57 jp.is_holiday_name(special)
58 );
59 jp.unregister::<CompanyHoliday>();
60 println!(
61 "登録解除後: {} -> {:?}",
62 special,
63 jp.is_holiday_name(special)
64 );
65}