Rust:
Анализ даты из строки
Как:
Для разбора дат в Rust мы используем крейт chrono, это основная библиотека для работы с датой и временем.
Сначала добавьте chrono в ваш Cargo.toml:
[dependencies]
chrono = "0.4"Затем вот простой пример разбора даты в формате ISO 8601:
extern crate chrono;
use chrono::prelude::*;
fn main() {
let date_str = "2023-04-05";
let parsed_date = date_str.parse::<NaiveDate>().unwrap();
println!("Разобранная дата: {}", parsed_date);
}Вывод:
Разобранная дата: 2023-04-05Погружение в детали
chrono является выбором Rust для разбора даты и времени, фактически с момента создания Rust. До chrono в Rust была базовая библиотека времени, но ей не хватало функциональности. chrono заполнил этот пробел.
Среди альтернатив есть крейт time, но chrono выигрывает по популярности и набору функций. С точки зрения реализации, разбор строки с датой включает в себя указание формата и обработку возможности неудачи — поэтому мы использовали unwrap(), что нормально для примеров, но в реальном коде используйте match или unwrap_or_else для изящной обработки ошибок.
Исторически программные языки сталкиваются с трудностями при работе с датами и временем. Это сложно из-за високосных лет, часовых поясов и изменений времени летом и зимой. Вот почему такие крейты, как chrono, ценны — они обрабатывают эти странности за нас.
Смотрите также
- Официальная документация крейта
chrono: https://docs.rs/chrono/ - Рекомендации Rust API по обработке ошибок: https://rust-lang.github.io/api-guidelines/error.html
- Глубокий взгляд на историю библиотеки времени Rust: https://www.reddit.com/r/rust/comments/2z54zb/history_of_rusts_time_library/