samod_core/io/io_task.rs
1use super::IoTaskId;
2
3#[derive(Debug, Clone, PartialEq, Eq, Hash)]
4pub struct IoTask<Action> {
5 pub task_id: IoTaskId,
6 pub action: Action,
7}
8
9impl<Action> IoTask<Action> {
10 pub(crate) fn new(action: Action) -> Self {
11 Self {
12 task_id: IoTaskId::new(),
13 action,
14 }
15 }
16
17 pub(crate) fn map<T, F: FnOnce(Action) -> T>(self, f: F) -> IoTask<T> {
18 IoTask {
19 task_id: self.task_id,
20 action: f(self.action),
21 }
22 }
23}