minimum_wage_jp 1.0.1

Japan minimum wage by prefecture: get rate for a date and check compliance
Documentation
use crate::YearDataset;
use chrono::NaiveDate;
use std::sync::LazyLock;

/// すべての年版データ(ここに年度を追加していく)
pub(crate) fn all_datasets() -> &'static [YearDataset] {
    static DATASETS: LazyLock<Vec<YearDataset>> = LazyLock::new(|| vec![ds_2024(), ds_2025()]);
    &DATASETS[..]
}
pub(crate) fn nd(y: i32, m: u32, d: u32) -> NaiveDate {
    NaiveDate::from_ymd_opt(y, m, d).expect("invalid date in dataset")
}

fn ds_2025() -> YearDataset {
    // 基準賃金(北海道→沖縄)
    // 県別の適用開始日(ない場合は全国一斉日)
    YearDataset {
        year: 2025,
        effective_from: nd(2025, 10, 1),
        rates: vec![
            (1, nd(2025, 10, 04), 1075), // 北海道 (override分) 10/03→10/04 に修正(テストに合わせる)
            (2, nd(2025, 10, 01), 1029),
            (3, nd(2025, 10, 01), 1031),
            (4, nd(2025, 10, 01), 1038),
            (5, nd(2025, 10, 01), 1031),
            (6, nd(2025, 10, 01), 1032),
            (7, nd(2025, 10, 01), 1033),
            (8, nd(2025, 10, 05), 1074), // 茨城 (override分)
            (9, nd(2025, 10, 01), 1068),
            (10, nd(2025, 10, 01), 1063),
            (11, nd(2025, 10, 01), 1141),
            (12, nd(2025, 10, 01), 1140),
            (13, nd(2025, 10, 01), 1226),
            (14, nd(2025, 10, 01), 1225),
            (15, nd(2025, 10, 01), 1050),
            (16, nd(2025, 10, 01), 1062),
            (17, nd(2025, 10, 01), 1054),
            (18, nd(2025, 10, 01), 1053),
            (19, nd(2025, 10, 01), 1052),
            (20, nd(2025, 10, 01), 1061),
            (21, nd(2025, 10, 01), 1065),
            (22, nd(2025, 10, 01), 1097),
            (23, nd(2025, 10, 01), 1140),
            (24, nd(2025, 10, 01), 1087),
            (25, nd(2025, 10, 01), 1080),
            (26, nd(2025, 10, 01), 1122),
            (27, nd(2025, 10, 01), 1177),
            (28, nd(2025, 10, 01), 1116),
            (29, nd(2025, 10, 01), 1051),
            (30, nd(2025, 10, 01), 1045),
            (31, nd(2025, 10, 01), 1030),
            (32, nd(2025, 10, 01), 1033),
            (33, nd(2025, 10, 01), 1047),
            (34, nd(2025, 10, 01), 1085),
            (35, nd(2025, 10, 01), 1043),
            (36, nd(2025, 10, 01), 1046),
            (37, nd(2025, 10, 01), 1036),
            (38, nd(2025, 10, 01), 1033),
            (39, nd(2025, 10, 01), 1023),
            (40, nd(2025, 10, 01), 1057),
            (41, nd(2025, 10, 01), 1030),
            (42, nd(2025, 10, 01), 1031),
            (43, nd(2025, 10, 01), 1034),
            (44, nd(2025, 10, 01), 1035),
            (45, nd(2025, 10, 01), 1023),
            (46, nd(2025, 10, 01), 1026),
            (47, nd(2025, 10, 01), 1023),
        ],
    }
}
fn ds_2024() -> YearDataset {
    YearDataset {
        year: 2024,
        effective_from: nd(2024, 10, 1),
        rates: vec![
            (1, nd(2024, 10, 01), 1010),
            (2, nd(2024, 10, 05), 953),
            (3, nd(2024, 10, 27), 952),
            (4, nd(2024, 10, 01), 973),
            (5, nd(2024, 10, 01), 951),
            (6, nd(2024, 10, 19), 955),
            (7, nd(2024, 10, 05), 955),
            (8, nd(2024, 10, 01), 1005),
            (9, nd(2024, 10, 01), 1004),
            (10, nd(2024, 10, 04), 985),
            (11, nd(2024, 10, 01), 1078),
            (12, nd(2024, 10, 01), 1076),
            (13, nd(2024, 10, 01), 1163),
            (14, nd(2024, 10, 01), 1162),
            (15, nd(2024, 10, 01), 985),
            (16, nd(2024, 10, 01), 998),
            (17, nd(2024, 10, 05), 984),
            (18, nd(2024, 10, 05), 984),
            (19, nd(2024, 10, 01), 988),
            (20, nd(2024, 10, 01), 998),
            (21, nd(2024, 10, 01), 1001),
            (22, nd(2024, 10, 01), 1034),
            (23, nd(2024, 10, 01), 1077),
            (24, nd(2024, 10, 01), 1023),
            (25, nd(2024, 10, 01), 1017),
            (26, nd(2024, 10, 01), 1058),
            (27, nd(2024, 10, 01), 1114),
            (28, nd(2024, 10, 01), 1052),
            (29, nd(2024, 10, 01), 986),
            (30, nd(2024, 10, 01), 980),
            (31, nd(2024, 10, 05), 957),
            (32, nd(2024, 10, 12), 962),
            (33, nd(2024, 10, 02), 982),
            (34, nd(2024, 10, 01), 1020),
            (35, nd(2024, 10, 01), 979),
            (36, nd(2024, 11, 01), 980),
            (37, nd(2024, 10, 02), 970),
            (38, nd(2024, 10, 13), 956),
            (39, nd(2024, 10, 09), 952),
            (40, nd(2024, 10, 05), 992),
            (41, nd(2024, 10, 17), 956),
            (42, nd(2024, 10, 12), 953),
            (43, nd(2024, 10, 05), 952),
            (44, nd(2024, 10, 05), 954),
            (45, nd(2024, 10, 05), 952),
            (46, nd(2024, 10, 05), 953),
            (47, nd(2024, 10, 09), 952),
        ],
    }
}