samod_core/io/
io_task_id.rs1use std::sync::atomic::AtomicUsize;
2
3static LAST_IO_TASK_ID: AtomicUsize = AtomicUsize::new(0);
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6pub struct IoTaskId(usize);
7
8impl IoTaskId {
9 pub(crate) fn new() -> Self {
10 let id = LAST_IO_TASK_ID.fetch_add(1, std::sync::atomic::Ordering::SeqCst);
11 IoTaskId(id)
12 }
13}
14
15impl From<usize> for IoTaskId {
16 fn from(id: usize) -> Self {
17 IoTaskId(id)
18 }
19}
20
21impl From<IoTaskId> for u32 {
22 fn from(id: IoTaskId) -> Self {
23 id.0 as u32
24 }
25}
26
27impl From<u32> for IoTaskId {
28 fn from(id: u32) -> Self {
29 IoTaskId(id as usize)
30 }
31}