- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
// on every year that is evenly divisible by 4
// except every year that is evenly divisible by 100
// unless the year is also evenly divisible by 400
pub fn is_leap_year(year: usize) -> bool {
match ((year % 4), (year % 100), (year % 400)) {
(0, 0, 0) => true,
(0, 0, _) => false,
(0, _, _) => true,
(_, _, _) => false,
}
}
2400 не нужен
`year: usize` - где штатный тип для даты?
для языка который типа якобы "секурити овер эверифинг", заставлять разрабов переписывать велосипеды, это путь в никуда. ошибки переезжают из синтакса в семантику, и ты опять у того же самого разбитого корыта, но только с еще более уёбищным синтаксом.
с другой стороны, за исключением тривиальных случаев, такие таблицы они намного выразительнее чем пачки вложенных switch/case'ов, и IMO у компилера больше шансов это грамотно соптимизировать.
Ну вериложий компилер прекрасно такие таблички оптимизирует.
Может все-таки как-нибудь так?
Жаль что в стандарте нет
Они бы ещё WCT в стандарт внесли!
с другой стороны если ты знаешь что седьмой бит в байте отвечает за флаг Foo, то в тысячу раз логичнее иметь FOO 00000010b, чем 0x2 какой-нить
Та-даа!