Skip to content

Commit e2569b9

Browse files
authored
Place NumericIdProvider's Id behind an Arc (#554)
Allows the Id to be moved safely between threads. Also has the advantage of allowing NumericIdProvider to derive `Clone`.
1 parent 1779dbe commit e2569b9

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

pubsub/src/manager.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ pub trait IdProvider {
4949

5050
/// Provides a thread-safe incrementing integer which
5151
/// can be used as a subscription ID.
52-
#[derive(Debug)]
52+
#[derive(Clone, Debug)]
5353
pub struct NumericIdProvider {
54-
current_id: AtomicUsize,
54+
current_id: Arc<AtomicUsize>,
5555
}
5656

5757
impl NumericIdProvider {
@@ -63,7 +63,9 @@ impl NumericIdProvider {
6363
/// Create a new NumericIdProvider starting from
6464
/// the given ID.
6565
pub fn with_id(id: AtomicUsize) -> Self {
66-
Self { current_id: id }
66+
Self {
67+
current_id: Arc::new(id),
68+
}
6769
}
6870
}
6971

@@ -78,7 +80,7 @@ impl IdProvider for NumericIdProvider {
7880
impl Default for NumericIdProvider {
7981
fn default() -> Self {
8082
NumericIdProvider {
81-
current_id: AtomicUsize::new(1),
83+
current_id: Arc::new(AtomicUsize::new(1)),
8284
}
8385
}
8486
}

0 commit comments

Comments
 (0)