1use core::marker::PhantomData;
4
5#[derive(Debug)]
10pub struct PublisherHandle<M> {
11 index: usize,
12 _marker: PhantomData<M>,
13}
14
15impl<M> PublisherHandle<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) -> PublisherHandle<()> {
32 PublisherHandle {
33 index: self.index,
34 _marker: PhantomData,
35 }
36 }
37}
38
39impl<M> Clone for PublisherHandle<M> {
40 fn clone(&self) -> Self {
41 *self
42 }
43}
44
45impl<M> Copy for PublisherHandle<M> {}
46
47impl<M> PartialEq for PublisherHandle<M> {
48 fn eq(&self, other: &Self) -> bool {
49 self.index == other.index
50 }
51}
52
53impl<M> Eq for PublisherHandle<M> {}