Skip to content

Commit d623da4

Browse files
committed
Use static string slices
1 parent 9d3d617 commit d623da4

16 files changed

+63
-110
lines changed

opentelemetry-sdk/benches/metric.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,7 @@ fn bench_counter(view: Option<Box<dyn View>>, temporality: &str) -> (SharedReade
149149
builder = builder.with_view(view);
150150
}
151151
let provider = builder.build();
152-
let cntr = provider
153-
.meter("test".to_string())
154-
.u64_counter("hello")
155-
.init();
152+
let cntr = provider.meter("test").u64_counter("hello").init();
156153

157154
(rdr, cntr)
158155
}
@@ -368,7 +365,7 @@ fn bench_histogram(bound_count: usize) -> (SharedReader, Histogram<u64>) {
368365
if let Some(view) = view {
369366
builder = builder.with_view(view);
370367
}
371-
let mtr = builder.build().meter("test_meter".to_string());
368+
let mtr = builder.build().meter("test_meter");
372369
let hist = mtr
373370
.u64_histogram(format!("histogram_{}", bound_count))
374371
.init();
@@ -408,7 +405,7 @@ fn benchmark_collect_histogram(b: &mut Bencher, n: usize) {
408405
let mtr = SdkMeterProvider::builder()
409406
.with_reader(r.clone())
410407
.build()
411-
.meter("sdk/metric/bench/histogram".to_string());
408+
.meter("sdk/metric/bench/histogram");
412409

413410
for i in 0..n {
414411
let h = mtr.u64_histogram(format!("fake_data_{i}")).init();

opentelemetry-sdk/benches/metrics_counter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ fn create_counter(name: &'static str) -> Counter<u64> {
4141
let meter_provider: SdkMeterProvider = SdkMeterProvider::builder()
4242
.with_reader(ManualReader::builder().build())
4343
.build();
44-
let meter = meter_provider.meter("benchmarks".to_string());
44+
let meter = meter_provider.meter("benchmarks");
4545

4646
println!("Counter_Created");
4747
meter.u64_counter(name).init()

opentelemetry-sdk/benches/metrics_gauge.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn create_gauge() -> Gauge<u64> {
3737
let meter_provider: SdkMeterProvider = SdkMeterProvider::builder()
3838
.with_reader(ManualReader::builder().build())
3939
.build();
40-
let meter = meter_provider.meter("benchmarks".to_string());
40+
let meter = meter_provider.meter("benchmarks");
4141

4242
meter.u64_gauge("gauge_bench").init()
4343
}

opentelemetry-sdk/benches/metrics_histogram.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ fn create_histogram(name: &'static str) -> Histogram<u64> {
3939
let meter_provider: SdkMeterProvider = SdkMeterProvider::builder()
4040
.with_reader(ManualReader::builder().build())
4141
.build();
42-
let meter = meter_provider.meter("benchmarks".to_string());
42+
let meter = meter_provider.meter("benchmarks");
4343

4444
meter.u64_histogram(name).init()
4545
}

opentelemetry-sdk/src/metrics/meter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ mod tests {
540540
#[ignore = "See issue https://github.com/open-telemetry/opentelemetry-rust/issues/1699"]
541541
fn test_instrument_creation() {
542542
let provider = SdkMeterProvider::builder().build();
543-
let meter = provider.meter("test".to_string());
543+
let meter = provider.meter("test");
544544
assert!(meter.u64_counter("test").try_init().is_ok());
545545
let result = meter.u64_counter("test with invalid name").try_init();
546546
// this assert fails, as result is always ok variant.

opentelemetry-sdk/src/metrics/meter_provider.rs

+17-41
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,9 @@ impl Drop for SdkMeterProviderInner {
138138
impl MeterProvider for SdkMeterProvider {
139139
fn versioned_meter(
140140
&self,
141-
name: String,
142-
version: Option<String>,
143-
schema_url: Option<String>,
141+
name: &'static str,
142+
version: Option<&'static str>,
143+
schema_url: Option<&'static str>,
144144
attributes: Option<Vec<KeyValue>>,
145145
) -> Meter {
146146
if self.inner.is_shutdown.load(Ordering::Relaxed) {
@@ -442,48 +442,24 @@ mod tests {
442442
#[test]
443443
fn same_meter_reused_same_scope() {
444444
let provider = super::SdkMeterProvider::builder().build();
445-
let _meter1 = provider.meter("test".to_string());
446-
let _meter2 = provider.meter("test".to_string());
445+
let _meter1 = provider.meter("test");
446+
let _meter2 = provider.meter("test");
447447
assert_eq!(provider.inner.meters.lock().unwrap().len(), 1);
448-
let _meter3 = provider.versioned_meter(
449-
"test".to_string(),
450-
Some("1.0.0".to_string()),
451-
Some("http://example.com".to_string()),
452-
None,
453-
);
454-
let _meter4 = provider.versioned_meter(
455-
"test".to_string(),
456-
Some("1.0.0".to_string()),
457-
Some("http://example.com".to_string()),
458-
None,
459-
);
460-
let _meter5 = provider.versioned_meter(
461-
"test".to_string(),
462-
Some("1.0.0".to_string()),
463-
Some("http://example.com".to_string()),
464-
None,
465-
);
448+
let _meter3 =
449+
provider.versioned_meter("test", Some("1.0.0"), Some("http://example.com"), None);
450+
let _meter4 =
451+
provider.versioned_meter("test", Some("1.0.0"), Some("http://example.com"), None);
452+
let _meter5 =
453+
provider.versioned_meter("test", Some("1.0.0"), Some("http://example.com"), None);
466454
assert_eq!(provider.inner.meters.lock().unwrap().len(), 2);
467455

468456
// the below are different meters, as meter names are case sensitive
469-
let _meter6 = provider.versioned_meter(
470-
"ABC".to_string(),
471-
Some("1.0.0".to_string()),
472-
Some("http://example.com".to_string()),
473-
None,
474-
);
475-
let _meter7 = provider.versioned_meter(
476-
"Abc".to_string(),
477-
Some("1.0.0".to_string()),
478-
Some("http://example.com".to_string()),
479-
None,
480-
);
481-
let _meter8 = provider.versioned_meter(
482-
"abc".to_string(),
483-
Some("1.0.0".to_string()),
484-
Some("http://example.com".to_string()),
485-
None,
486-
);
457+
let _meter6 =
458+
provider.versioned_meter("ABC", Some("1.0.0"), Some("http://example.com"), None);
459+
let _meter7 =
460+
provider.versioned_meter("Abc", Some("1.0.0"), Some("http://example.com"), None);
461+
let _meter8 =
462+
provider.versioned_meter("abc", Some("1.0.0"), Some("http://example.com"), None);
487463
assert_eq!(provider.inner.meters.lock().unwrap().len(), 5);
488464
}
489465
}

opentelemetry-sdk/src/metrics/mod.rs

+15-15
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ mod tests {
432432
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
433433

434434
// Act
435-
let meter = meter_provider.meter("test".to_string());
435+
let meter = meter_provider.meter("test");
436436
let counter = meter
437437
.u64_counter("my_counter")
438438
.with_unit("my_unit")
@@ -483,8 +483,8 @@ mod tests {
483483
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
484484

485485
// Act
486-
let meter1 = meter_provider.meter("test.meter1".to_string());
487-
let meter2 = meter_provider.meter("test.meter2".to_string());
486+
let meter1 = meter_provider.meter("test.meter1");
487+
let meter2 = meter_provider.meter("test.meter2");
488488
let counter1 = meter1
489489
.u64_counter("my_counter")
490490
.with_unit("my_unit")
@@ -575,15 +575,15 @@ mod tests {
575575
// Meters are identical except for scope attributes, but scope attributes are not an identifying property.
576576
// Hence there should be a single metric stream output for this test.
577577
let meter1 = meter_provider.versioned_meter(
578-
"test.meter".to_string(),
579-
Some("v0.1.0".to_string()),
580-
Some("schema_url".to_string()),
578+
"test.meter",
579+
Some("v0.1.0"),
580+
Some("schema_url"),
581581
Some(vec![KeyValue::new("key", "value1")]),
582582
);
583583
let meter2 = meter_provider.versioned_meter(
584-
"test.meter".to_string(),
585-
Some("v0.1.0".to_string()),
586-
Some("schema_url".to_string()),
584+
"test.meter",
585+
Some("v0.1.0"),
586+
Some("schema_url"),
587587
Some(vec![KeyValue::new("key", "value2")]),
588588
);
589589
let counter1 = meter1
@@ -669,7 +669,7 @@ mod tests {
669669
.build();
670670

671671
// Act
672-
let meter = meter_provider.meter("test".to_string());
672+
let meter = meter_provider.meter("test");
673673
let histogram = meter
674674
.f64_histogram("test_histogram")
675675
.with_unit("test_unit")
@@ -714,7 +714,7 @@ mod tests {
714714
.build();
715715

716716
// Act
717-
let meter = meter_provider.meter("test".to_string());
717+
let meter = meter_provider.meter("test");
718718
let _observable_counter = meter
719719
.u64_observable_counter("my_observable_counter")
720720
.with_callback(|observer| {
@@ -789,7 +789,7 @@ mod tests {
789789
.build();
790790

791791
// Act
792-
let meter = meter_provider.meter("test".to_string());
792+
let meter = meter_provider.meter("test");
793793
let counter = meter.u64_counter("my_counter").init();
794794

795795
// Normally, this would generate 3 time-series, but since the view
@@ -2276,7 +2276,7 @@ mod tests {
22762276
counter_name: &'static str,
22772277
unit: Option<&'static str>,
22782278
) -> Counter<u64> {
2279-
let meter = self.meter_provider.meter(meter_name.to_string());
2279+
let meter = self.meter_provider.meter(meter_name);
22802280
let mut counter_builder = meter.u64_counter(counter_name);
22812281
if let Some(unit_name) = unit {
22822282
counter_builder = counter_builder.with_unit(unit_name);
@@ -2290,7 +2290,7 @@ mod tests {
22902290
counter_name: &'static str,
22912291
unit: Option<&'static str>,
22922292
) -> UpDownCounter<i64> {
2293-
let meter = self.meter_provider.meter(meter_name.to_string());
2293+
let meter = self.meter_provider.meter(meter_name);
22942294
let mut updown_counter_builder = meter.i64_up_down_counter(counter_name);
22952295
if let Some(unit_name) = unit {
22962296
updown_counter_builder = updown_counter_builder.with_unit(unit_name);
@@ -2299,7 +2299,7 @@ mod tests {
22992299
}
23002300

23012301
fn meter(&self) -> Meter {
2302-
self.meter_provider.meter("test".to_string())
2302+
self.meter_provider.meter("test")
23032303
}
23042304

23052305
fn flush_metrics(&self) {

opentelemetry-sdk/src/metrics/periodic_reader.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ mod tests {
393393

394394
// Act
395395
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
396-
let meter = meter_provider.meter("test".to_string());
396+
let meter = meter_provider.meter("test");
397397
let _counter = meter
398398
.u64_observable_counter("testcounter")
399399
.with_callback(move |_| {

opentelemetry-sdk/src/testing/metrics/in_memory_exporter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ use std::sync::{Arc, Mutex};
4141
/// .build();
4242
///
4343
/// // Create and record metrics using the MeterProvider
44-
/// let meter = meter_provider.meter("example".to_string());
44+
/// let meter = meter_provider.meter("example");
4545
/// let counter = meter.u64_counter("my_counter").init();
4646
/// counter.add(1, &[KeyValue::new("key", "value")]);
4747
///

opentelemetry/src/global/metrics.rs

+7-15
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
use crate::metrics::{self, Meter, MeterProvider};
22
use crate::KeyValue;
33
use once_cell::sync::Lazy;
4-
use std::{
5-
borrow::Cow,
6-
sync::{Arc, RwLock},
7-
};
4+
use std::sync::{Arc, RwLock};
85

96
type GlobalMeterProvider = Arc<dyn MeterProvider + Send + Sync>;
107

@@ -37,8 +34,8 @@ pub fn meter_provider() -> GlobalMeterProvider {
3734
/// If the name is an empty string, the provider will use a default name.
3835
///
3936
/// This is a more convenient way of expressing `global::meter_provider().meter(name)`.
40-
pub fn meter(name: impl Into<Cow<'static, str>>) -> Meter {
41-
meter_provider().meter(name.into().into_owned())
37+
pub fn meter(name: &'static str) -> Meter {
38+
meter_provider().meter(name)
4239
}
4340

4441
/// Creates a [`Meter`] with the name, version and schema url.
@@ -63,15 +60,10 @@ pub fn meter(name: impl Into<Cow<'static, str>>) -> Meter {
6360
/// );
6461
/// ```
6562
pub fn meter_with_version(
66-
name: impl Into<Cow<'static, str>>,
67-
version: Option<impl Into<Cow<'static, str>>>,
68-
schema_url: Option<impl Into<Cow<'static, str>>>,
63+
name: &'static str,
64+
version: Option<&'static str>,
65+
schema_url: Option<&'static str>,
6966
attributes: Option<Vec<KeyValue>>,
7067
) -> Meter {
71-
meter_provider().versioned_meter(
72-
name.into().into_owned(),
73-
version.map(|v| v.into().into_owned()),
74-
schema_url.map(|s| s.into().into_owned()),
75-
attributes,
76-
)
68+
meter_provider().versioned_meter(name, version, schema_url, attributes)
7769
}

opentelemetry/src/metrics/meter.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@ pub trait MeterProvider {
2929
/// let provider = global::meter_provider();
3030
///
3131
/// // meter used in applications
32-
/// let meter = provider.meter("my_app".to_string());
32+
/// let meter = provider.meter("my_app");
3333
///
3434
/// // meter used in libraries/crates that optionally includes version and schema url
3535
/// let meter = provider.versioned_meter(
36-
/// "my_library".to_string(),
37-
/// Some(env!("CARGO_PKG_VERSION").to_string()),
38-
/// Some("https://opentelemetry.io/schema/1.0.0".to_string()),
36+
/// "my_library",
37+
/// Some(env!("CARGO_PKG_VERSION")),
38+
/// Some("https://opentelemetry.io/schema/1.0.0"),
3939
/// Some(vec![KeyValue::new("key", "value")]),
4040
/// );
4141
/// ```
42-
fn meter(&self, name: String) -> Meter {
42+
fn meter(&self, name: &'static str) -> Meter {
4343
self.versioned_meter(name, None, None, None)
4444
}
4545

@@ -51,9 +51,9 @@ pub trait MeterProvider {
5151
/// default name will be used instead.
5252
fn versioned_meter(
5353
&self,
54-
name: String,
55-
version: Option<String>,
56-
schema_url: Option<String>,
54+
name: &'static str,
55+
version: Option<&'static str>,
56+
schema_url: Option<&'static str>,
5757
attributes: Option<Vec<KeyValue>>,
5858
) -> Meter;
5959
}

opentelemetry/src/metrics/noop.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ impl NoopMeterProvider {
2828
impl MeterProvider for NoopMeterProvider {
2929
fn versioned_meter(
3030
&self,
31-
_name: String,
32-
_version: Option<String>,
33-
_schema_url: Option<String>,
31+
_name: &'static str,
32+
_version: Option<&'static str>,
33+
_schema_url: Option<&'static str>,
3434
_attributes: Option<Vec<KeyValue>>,
3535
) -> Meter {
3636
Meter::new(Arc::new(NoopMeterCore::new()))

stress/src/metrics_counter.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,7 @@ lazy_static! {
3131
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
3232
"value10"
3333
];
34-
static ref COUNTER: Counter<u64> = PROVIDER
35-
.meter("test".to_string())
36-
.u64_counter("hello")
37-
.init();
34+
static ref COUNTER: Counter<u64> = PROVIDER.meter("test").u64_counter("hello").init();
3835
}
3936

4037
thread_local! {

stress/src/metrics_gauge.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@ lazy_static! {
2828
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
2929
"value10"
3030
];
31-
static ref GAUGE: Gauge<u64> = PROVIDER
32-
.meter("test".to_string())
33-
.u64_gauge("test_gauge")
34-
.init();
31+
static ref GAUGE: Gauge<u64> = PROVIDER.meter("test").u64_gauge("test_gauge").init();
3532
}
3633

3734
thread_local! {

stress/src/metrics_histogram.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,7 @@ lazy_static! {
3131
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
3232
"value10"
3333
];
34-
static ref HISTOGRAM: Histogram<u64> = PROVIDER
35-
.meter("test".to_string())
36-
.u64_histogram("hello")
37-
.init();
34+
static ref HISTOGRAM: Histogram<u64> = PROVIDER.meter("test").u64_histogram("hello").init();
3835
}
3936

4037
thread_local! {

stress/src/metrics_overflow.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@ lazy_static! {
2424
static ref PROVIDER: SdkMeterProvider = SdkMeterProvider::builder()
2525
.with_reader(ManualReader::builder().build())
2626
.build();
27-
static ref COUNTER: Counter<u64> = PROVIDER
28-
.meter("test".to_string())
29-
.u64_counter("hello")
30-
.init();
27+
static ref COUNTER: Counter<u64> = PROVIDER.meter("test").u64_counter("hello").init();
3128
}
3229

3330
thread_local! {

0 commit comments

Comments
 (0)