Rust Rrule Versions Save

Rust crate for working with recurrence rules for calendar dates as defined in the iCalendar RFC and more.

v0.10.0

1 year ago

Changed

  • EXRULE functionality is put behind the feature flag exrule which is not enabled by default.
  • RRuleSet::all takes a limit argument to protect against long running iteration.
  • The iterator API does not have any validation limits by default. So rrule_set.into_iter().map(|dt| format!("{dt}")).collect<Vec<_>>() could lead to an infinite loop.
  • RRuleSet::all returns a tuple (Vec<DateTime>, bool) instead of the previous Result type. The boolean in the tuple indicates if the iteration was limited or not.
  • Datetime type returned from iteration is chrono::DateTime<rrule::Tz> rather than chrono::DateTime<chrono_tz::Tz>. Please use .with_timezone if use still want to use chrono_tz::Tz.

Removed

  • no-validation-limits feature is removed and is replaced by arguments to RRuleSet.
  • RRuleSet::just_before was removed to keep the public API more lean. Please use the iterator API directly if you need this use-case.
  • RRuleSet::just_after was removed to keep the public API more lean. Please use the iterator API directly if you need this use-case.
  • RRuleSet::all_between was replaced by rrule_set.before(dt).after(dt).all(limit).

Added

  • RRuleSet::after and RRuleSet::before was added to configure the boundaries of the recurrences before calling RRuleSet::all.
  • RRuleSet::all_unchecked was added to allow for iterating without any validation limits.
  • RRule<Unvalidated> implements FromStr and Deserialize
  • rrule::Tz "replaced" chrono_tz::Tz by wrapping it and adding support for the chrono::Local timezone.