pub struct ICSWatcher<'a> {
pub callbacks: Vec<CalendarCallback>,
/* private fields */
}Expand description
Instantiate an ICSWatcher using ICSWatcher::new to watch for changes of an ics link.
Using this, you can also create and load backups.
If you want to handle when the watcher updates, you can manually call the ICSWatcher::update method.
§Examples
let mut ics_watcher = ICSWatcher::new(
"some url",
vec![
Box::new(|a, b, e| Box::pin(async move { log_events(a, b, e).await })),
],
);
// Try to load backup
let _ = ics_watcher.load_backup("Your Calendar");
// Run ics watcher infinitely and save backups as "Your Calendar"
ics_watcher
.run(Option::from("Your Calendar"))
.await
.expect("ICS Watcher crashed");Fields§
§callbacks: Vec<CalendarCallback>Implementations§
Source§impl<'a> ICSWatcher<'a>
impl<'a> ICSWatcher<'a>
pub fn new(ics_link: &'a str, callbacks: Vec<CalendarCallback>) -> Self
pub fn restore_state(&mut self, state: HashMap<String, IcalEvent>)
pub fn get_state(&self) -> &HashMap<String, IcalEvent>
pub fn get_calendar_name(&self) -> Option<String>
pub fn create_backup(&self, name: &str)
pub fn load_backup(&mut self, name: &str) -> Result<(), Box<dyn Error>>
pub async fn update(&mut self) -> Result<(), Box<dyn Error>>
pub async fn run(&mut self, backup: Option<&str>) -> Result<(), Box<dyn Error>>
Auto Trait Implementations§
impl<'a> Freeze for ICSWatcher<'a>
impl<'a> !RefUnwindSafe for ICSWatcher<'a>
impl<'a> !Send for ICSWatcher<'a>
impl<'a> !Sync for ICSWatcher<'a>
impl<'a> Unpin for ICSWatcher<'a>
impl<'a> !UnwindSafe for ICSWatcher<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more