Skip to main content

ical/tree/component/
vcalendar.rs

1//! # VCALENDAR component lens
2//!
3//! The `VCALENDAR` component lens.
4
5use crate::{
6    component::IcalComponentKind,
7    prop::IcalPropKind,
8    tree::component::{IcalComponentLens, IcalComponentSpec},
9};
10
11/// The `VCALENDAR` component lens.
12#[allow(non_camel_case_types)]
13pub struct VCALENDAR;
14
15impl IcalComponentLens for VCALENDAR {}
16
17impl IcalComponentSpec for VCALENDAR {
18    const KIND: IcalComponentKind = IcalComponentKind::VCalendar;
19
20    fn allowed_children() -> &'static [IcalComponentKind] {
21        &[
22            IcalComponentKind::VEvent,
23            IcalComponentKind::VTodo,
24            IcalComponentKind::VJournal,
25            IcalComponentKind::VFreeBusy,
26            IcalComponentKind::VTimezone,
27            IcalComponentKind::VAvailability,
28        ]
29    }
30
31    fn required_props() -> &'static [IcalPropKind] {
32        &[IcalPropKind::ProdId]
33    }
34}