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"));