ezcal 0.3.4

Ergonomic iCalendar + vCard library for Rust
Documentation
use ezcal::vcard::{Address, Contact, StructuredName};

fn main() {
    let card = Contact::new()
        .full_name("Jane Doe")
        .structured_name(
            StructuredName::new("Doe", "Jane")
                .with_prefix("Dr.")
                .with_additional("Marie"),
        )
        .email_typed("jane@acme.com", vec!["WORK".to_string()])
        .email_typed("jane.doe@gmail.com", vec!["HOME".to_string()])
        .phone_typed("+1-555-0123", vec!["WORK".to_string(), "VOICE".to_string()])
        .phone_typed("+1-555-0456", vec!["HOME".to_string()])
        .organization("Acme Corp")
        .title("Software Engineer")
        .role("Backend Team Lead")
        .note("Met at RustConf 2025")
        .url("https://jane.example.com")
        .address_typed(
            Address::new()
                .street("123 Main St")
                .city("San Francisco")
                .region("CA")
                .postal_code("94105")
                .country("USA"),
            vec!["WORK".to_string()],
            None,
        )
        .birthday("19900115")
        .build();

    // Print the .vcf output
    println!("{}", card);

    // In a real app, you'd write to a file:
    // std::fs::write("jane.vcf", card.to_string()).unwrap();
}