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}