Skip to main content

Crate ezcal

Crate ezcal 

Source
Expand description

§ezcal

Ergonomic iCalendar (RFC 5545) + vCard (RFC 6350) library for Rust.

ezcal aims to be the simplest way to read and write .ics and .vcf files in Rust, while still being correct and complete enough for real-world use.

§Quick Start: Create an event

use ezcal::ical::{Calendar, Event};

let cal = Calendar::new()
    .event(
        Event::new()
            .summary("Team Standup")
            .location("Room 42")
            .starts("2026-03-15T09:00:00")
            .ends("2026-03-15T09:30:00")
    )
    .build();

let ics = cal.to_string();
assert!(ics.contains("Team Standup"));

§Quick Start: Parse an .ics file

use ezcal::ical::Calendar;

let input = "\
BEGIN:VCALENDAR\r\n\
VERSION:2.0\r\n\
PRODID:-//Test//EN\r\n\
BEGIN:VEVENT\r\n\
UID:example\r\n\
DTSTAMP:20260315T090000Z\r\n\
DTSTART:20260315T090000\r\n\
SUMMARY:Team Standup\r\n\
END:VEVENT\r\n\
END:VCALENDAR\r\n";

let calendar = Calendar::parse(input).unwrap();
for event in calendar.events() {
    println!("{}", event.get_summary().unwrap_or("(untitled)"));
}

§Quick Start: Create a vCard contact

use ezcal::vcard::Contact;

let card = Contact::new()
    .full_name("Jane Doe")
    .email("jane@example.com")
    .phone("+1-555-0123")
    .organization("Acme Corp")
    .build();

let vcf = card.to_string();
assert!(vcf.contains("Jane Doe"));

Re-exports§

pub use error::Error;
pub use error::Result;

Modules§

common
datetime
error
ical
vcard