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}