1use core::marker::PhantomData;
4
5#[derive(Debug)]
10pub struct SubscriberHandle<M> {
11 index: usize,
12 _marker: PhantomData<M>,
13}
14
15impl<M> SubscriberHandle<M> {
16 pub(crate) fn new(index: usize) -> Self {
18 Self {
19 index,
20 _marker: PhantomData,
21 }
22 }
23
24 pub(crate) fn index(&self) -> usize {
26 self.index
27 }
28
29 #[allow(dead_code)] pub(crate) fn untyped(&self) -> SubscriberHandle<()> {
32 SubscriberHandle {
33 index: self.index,
34 _marker: PhantomData,
35 }
36 }
37}
38
39impl<M> Clone for SubscriberHandle<M> {
40 fn clone(&self) -> Self {
41 *self
42 }
43}
44
45impl<M> Copy for SubscriberHandle<M> {}
46
47impl<M> PartialEq for SubscriberHandle<M> {
48 fn eq(&self, other: &Self) -> bool {
49 self.index == other.index
50 }
51}
52
53impl<M> Eq for SubscriberHandle<M> {}