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/