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}