Skip to main content

Module component

Module component 

Source
Expand description

§Components

A decoded component and the iCalendar component-name vocabulary.

iCalendar is a tree of components: a VCALENDAR holds VEVENT, VTODO, VJOURNAL, VFREEBUSY and VTIMEZONE components, an event or to-do holds VALARM components, and a time zone holds STANDARD and DAYLIGHT subcomponents. RFC 9073 adds PARTICIPANT, VLOCATION and VRESOURCE.

IcalComponent is that decoded node: a name, its properties, and its nested components. The whole calendar is the Ical aggregate, whose root is the VCALENDAR.

A known name is the closed IcalComponentKind identity (its wire spelling reached through Deref and FromStr); an unknown one keeps its verbatim bytes. Pure model, no crate::tree dependency.

This module also owns the per-component contract: one marker module per component the crate knows, each carrying its IcalComponentSpec impl, and the spec vtable that bridges the open IcalComponentKind back to those static impls. The marker is also the type-level key for typed subtree access (IcalCst::component).

Modules§

available
AVAILABLE
daylight
DAYLIGHT
participant
PARTICIPANT
spec
Component spec
standard
STANDARD
valarm
VALARM
vavailability
VAVAILABILITY
vcalendar
VCALENDAR
vevent
VEVENT
vfreebusy
VFREEBUSY
vjournal
VJOURNAL
vlocation
VLOCATION
vresource
VRESOURCE
vtimezone
VTIMEZONE
vtodo
VTODO

Structs§

IcalComponent
A decoded component: its name, its properties, and its nested components.
ParseIcalComponentKindError
Parse iCalendar component kind error.

Enums§

IcalComponentKind
The closed iCalendar component-name vocabulary, one fieldless variant per known component. An identity for dispatch and nesting rules; the open-vocabulary counterpart that also carries unknown names is IcalComponentName.
IcalComponentName
A component name: a known iCalendar name, or an unknown one kept verbatim.