Skip to content

Commit cd03300

Browse files
author
Matthew Shapiro
committed
Remove dynamic dispatch/boxing
1 parent 2907ee6 commit cd03300

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

opentelemetry-sdk/src/metrics/internal/mod.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ pub(crate) trait AtomicTracker<T>: Sync + Send + 'static {
2222

2323
/// Marks a type that can have an atomic tracker generated for it
2424
pub(crate) trait AtomicallyUpdate<T> {
25-
type Tracker: AtomicTracker<T>;
26-
fn new_atomic_tracker() -> Self::Tracker;
25+
type AtomicTracker: AtomicTracker<T>;
26+
fn new_atomic_tracker() -> Self::AtomicTracker;
2727
}
2828

2929
pub(crate) trait Number<T>:
@@ -104,9 +104,9 @@ impl AtomicTracker<u64> for AtomicU64 {
104104
}
105105

106106
impl AtomicallyUpdate<u64> for u64 {
107-
type Tracker = AtomicU64;
107+
type AtomicTracker = AtomicU64;
108108

109-
fn new_atomic_tracker() -> Self::Tracker {
109+
fn new_atomic_tracker() -> Self::AtomicTracker {
110110
AtomicU64::new(0)
111111
}
112112
}
@@ -126,9 +126,9 @@ impl AtomicTracker<i64> for AtomicI64 {
126126
}
127127

128128
impl AtomicallyUpdate<i64> for i64 {
129-
type Tracker = AtomicI64;
129+
type AtomicTracker = AtomicI64;
130130

131-
fn new_atomic_tracker() -> Self::Tracker {
131+
fn new_atomic_tracker() -> Self::AtomicTracker {
132132
AtomicI64::new(0)
133133
}
134134
}
@@ -166,9 +166,9 @@ impl AtomicTracker<f64> for F64AtomicTracker {
166166
}
167167

168168
impl AtomicallyUpdate<f64> for f64 {
169-
type Tracker = F64AtomicTracker;
169+
type AtomicTracker = F64AtomicTracker;
170170

171-
fn new_atomic_tracker() -> Self::Tracker {
171+
fn new_atomic_tracker() -> Self::AtomicTracker {
172172
F64AtomicTracker::new()
173173
}
174174
}

opentelemetry-sdk/src/metrics/internal/sum.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use super::{
1818
struct ValueMap<T: Number<T>> {
1919
values: Mutex<HashMap<AttributeSet, T>>,
2020
has_no_value_attribute_value: AtomicBool,
21-
no_attribute_value: Box<dyn AtomicTracker<T> + Send + Sync + 'static>,
21+
no_attribute_value: T::AtomicTracker,
2222
}
2323

2424
impl<T: Number<T>> Default for ValueMap<T> {
@@ -32,7 +32,7 @@ impl<T: Number<T>> ValueMap<T> {
3232
ValueMap {
3333
values: Mutex::new(HashMap::new()),
3434
has_no_value_attribute_value: AtomicBool::new(false),
35-
no_attribute_value: Box::new(T::new_atomic_tracker()),
35+
no_attribute_value: T::new_atomic_tracker(),
3636
}
3737
}
3838
}

0 commit comments

Comments
 (0)