Skip to main content

rfc5545_types/
lib.rs

1//! iCalendar (RFC 5545) data model types.
2//!
3//! This crate provides the type-level representation of iCalendar components,
4//! properties, and parameters. It builds on [`calendar_types`] for date/time
5//! primitives and adds:
6//!
7//! - **Recurrence rules** ([`rrule`]): [`RRule`](rrule::RRule) with frequency-dependent
8//!   BYxxx rules, efficient bitset types ([`SecondSet`](rrule::SecondSet),
9//!   [`MinuteSet`](rrule::MinuteSet), [`HourSet`](rrule::HourSet),
10//!   [`MonthSet`](rrule::MonthSet), [`MonthDaySet`](rrule::MonthDaySet),
11//!   [`WeekNoSet`](rrule::WeekNoSet)), and the
12//!   [`WeekdayNumSet`](rrule::weekday_num_set::WeekdayNumSet).
13//! - **Time types** ([`time`]): [`DateTimeOrDate`](time::DateTimeOrDate),
14//!   [`Period`](time::Period), [`RDate`](time::RDate), [`TriggerValue`](time::TriggerValue),
15//!   and [`UtcOffset`](time::UtcOffset).
16//! - **Property value enums** ([`set`]): status types, parameter value enums, and
17//!   alarm action markers.
18//! - **String types** ([`string`]): validated iCalendar string newtypes
19//!   ([`ParamText`](string::ParamText), [`Text`](string::Text),
20//!   [`Name`](string::Name), [`CaselessStr`](string::CaselessStr)).
21//! - **Compound values** ([`value`]): [`Geo`](value::Geo),
22//!   [`Attachment`](value::Attachment), and [`FormatType`](value::FormatType).
23//! - **Request status** ([`request_status`]): [`RequestStatus`](request_status::RequestStatus)
24//!   and [`StatusCode`](request_status::StatusCode).
25//! - **Primitives** ([`primitive`]): type aliases for iCalendar integer and float values.
26
27pub mod request_status;
28pub mod rrule;
29pub mod set;
30pub mod string;
31pub mod time;
32pub mod value;
33
34/// iCalendar primitive value types.
35pub mod primitive {
36    use std::num::NonZero;
37
38    /// A signed 32-bit integer (RFC 5545 §3.3.8).
39    pub type Integer = i32;
40    /// A 64-bit floating-point number (RFC 5545 §3.3.7).
41    pub type Float = f64;
42    /// A positive integer (nonzero unsigned 32-bit).
43    pub type PositiveInteger = NonZero<u32>;
44}