nio_task/
id.rs

1use std::{fmt, num::NonZeroUsize, sync::Arc};
2
3use super::raw::RawTask;
4
5#[derive(Clone, Copy, Debug, Hash, Eq, PartialEq)]
6pub struct Id(pub(crate) NonZeroUsize);
7
8impl Id {
9    pub(super) fn new(task: &RawTask) -> Self {
10        Self(unsafe { NonZeroUsize::new_unchecked(Arc::as_ptr(task).cast::<()>() as usize) })
11    }
12}
13
14impl fmt::Display for Id {
15    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16        self.0.fmt(f)
17    }
18}