#![no_std]
#[deprecated]
#[must_use = "callbacks must be called"]
pub trait OnClose<E>: Clone {
fn on_close(&self, error: Option<E>);
}
#[expect(deprecated)]
impl<E, F: Clone + Fn(Option<E>)> OnClose<E> for F {
fn on_close(&self, error: Option<E>) {
self(error)
}
}
#[deprecated]
#[must_use = "callbacks must be called"]
pub trait OnItem<T> {
fn on_item(&self, message: T);
}
#[expect(deprecated)]
impl<T, F: Fn(T)> OnItem<T> for F {
fn on_item(&self, message: T) {
self(message)
}
}
#[must_use = "callbacks must be called"]
pub trait Start {
type Fut;
#[must_use]
fn make(&mut self) -> Self::Fut;
}
impl<Fut, F: FnMut() -> Fut> Start for F {
type Fut = Fut;
fn make(&mut self) -> Self::Fut {
self()
}
}