#ical #calendar

ics

一个用于创建符合RFC5545和RFC7986规范的iCalendar文件的库

20个版本

0.5.8 2022年9月25日
0.5.7 2021年8月11日
0.5.6 2021年7月30日
0.5.5 2020年11月28日
0.2.2 2018年11月3日

#48 in 日期和时间

Download history 766/week @ 2024-03-14 661/week @ 2024-03-21 661/week @ 2024-03-28 613/week @ 2024-04-04 667/week @ 2024-04-11 514/week @ 2024-04-18 537/week @ 2024-04-25 588/week @ 2024-05-02 681/week @ 2024-05-09 570/week @ 2024-05-16 446/week @ 2024-05-23 598/week @ 2024-05-30 853/week @ 2024-06-06 548/week @ 2024-06-13 496/week @ 2024-06-20 542/week @ 2024-06-27

2,546 每月下载量
用于 7 crates

MIT/Apache

69KB
1.5K SLoC

Crates.io Crates.io Build Status Documentation

一个用于创建符合RFC5545RFC7986规范的iCalendar文件的库。

最低支持的rustc

1.26.0+

此版本已正式支持并在CI中进行了测试。最低支持版本的更改将在更改日志中注明。

安装

要使用此库,请在您的 Cargo.toml 中将其作为依赖项添加

[dependencies]
ics = "0.5"

可选地,您可以禁用默认功能。

[dependencies.ics]
version = "0.5"
default-features = false

功能

  • rfc7986 (默认启用): 添加来自较新规范的特性

用法

use ics::properties::{Categories, Description, DtEnd, DtStart, Organizer, Status, Summary};
use ics::{escape_text, Event, ICalendar};

fn main() -> std::io::Result<()> {
    // create new iCalendar object
    let mut calendar = ICalendar::new("2.0", "-//xyz Corp//NONSGML PDA Calendar Version 1.0//EN");

    // create event which contains the information regarding the conference
    let mut event = Event::new("b68378cf-872d-44f1-9703-5e3725c56e71", "19960704T120000Z");
    // add properties
    event.push(Organizer::new("mailto:[email protected]"));
    event.push(DtStart::new("19960918T143000Z"));
    event.push(DtEnd::new("19960920T220000Z"));
    event.push(Status::confirmed());
    event.push(Categories::new("CONFERENCE"));
    event.push(Summary::new("Networld+Interop Conference"));
    // Values that are "TEXT" must be escaped (only if the text contains a comma,
    // semicolon, backslash or newline).
    event.push(Description::new(escape_text(
        "Networld+Interop Conference and Exhibit\n\
         Atlanta World Congress Center\n\
         Atlanta, Georgia"
    )));
    // add event to calendar
    calendar.add_event(event);

    // write calendar to file
    calendar.save_file("event.ics")?;
    Ok(())

    /* inside event.ics
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:-//xyz Corp//NONSGML PDA Calendar Version 1.0//EN
    BEGIN:VEVENT
    UID:b68378cf-872d-44f1-9703-5e3725c56e71
    DTSTAMP:19960704T120000Z
    ORGANIZER:mailto:[email protected]
    DTSTART:19960918T143000Z
    DTEND:19960920T220000Z
    STATUS:CONFIRMED
    CATEGORIES:CONFERENCE
    SUMMARY:Networld+Interop Conference
    DESCRIPTION:Networld+Interop Conference and Exhibit
    Atlanta World Congress
     Center
    Atlanta\, Georgia
    END:VEVENT
    END:VCALENDAR
    */
}

许可证

许可协议为以下之一

由您选择。

贡献

欢迎贡献!除非您明确声明,否则根据Apache-2.0许可证定义,任何有意提交给作品并由您提供的贡献,将如上双许可,不附加任何额外条款或条件。

无运行时依赖

功能