ics 0.4.4

A library for creating iCalendar files as specified in RFC5545 and RFC7986.

A library for creating ICalendar files.

The library supports the ICalendar specification RFC5545 version 2.0 and also RFC7986.


To use this library add the library as a dependency in your Cargo.toml:

ics = "0.4"

By default some features are enabled. If you wish to disable them, specify in your Cargo.toml:

version = "0.4"
default-features = false


  • rfc7986 (enabled by default): adds properties from the newer specification RFC7986


use ics::properties::{Comment, Status, Summary};
use ics::{ICalendar, ToDo};

fn main() -> std::io::Result<()> {
// The ICalendar object is what is later written to the file.
let mut calendar = ICalendar::new("2.0", "ics-rs");

// Anything that can be converted to a Cow<str> is accepted as value which means
// &str and String can be used freely. For the sake of demonstrating the UID was
// taken from somewhere. Out of security reasons the UID should always be
// randomly generated.
let mut todo = ToDo::new("d4092ed9-1667-4518-a7c0-bcfaac4f1fc6", "20181021T190000");
todo.push(Summary::new("Katarina's Birthday Present"));
todo.push(Comment::new("Buy her Imagine Dragons tickets!"));


// Write `calendar` to a file.