use crate::{ExecutorShared, TaskCompletion, TaskOptions};
#[derive(Clone, Debug)]
pub struct TaskSet {
shared: ExecutorShared,
}
impl TaskSet {
pub(crate) fn new(core: &ExecutorShared) -> Self {
Self { shared: core.clone() }
}
pub fn add<F, R, T>(&self, future: F, options: TaskOptions, completion: T)
where
F: IntoFuture<Output = R> + 'static,
R: 'static,
T: TaskCompletion<R>,
{
self.shared.add_task(future, options, completion);
}
}
#[cfg(test)]
mod tests {
use static_assertions::assert_not_impl_any;
use super::*;
#[test]
fn thread_safety() {
assert_not_impl_any!(TaskSet: Send, Sync);
}
}