#![allow(clippy::needless_lifetimes, clippy::elidable_lifetime_names)]
use crate::future::BoxFuture;
use std::future::Future;
use crate::error::Result;
pub trait CancelHandle: Send + Sync {
fn cancel(&self) -> impl Future<Output = Result<()>> + Send;
}
pub trait DynCancelHandle: Send + Sync {
fn cancel<'a>(&'a self) -> BoxFuture<'a, Result<()>>;
}
impl<T> DynCancelHandle for T
where
T: CancelHandle + 'static,
{
fn cancel<'a>(&'a self) -> BoxFuture<'a, Result<()>> {
Box::pin(<Self as CancelHandle>::cancel(self))
}
}