Skip to content

Commit 0cf60e9

Browse files
committed
refactor: implement AsRef<str> for ConstStorage
1 parent 291378e commit 0cf60e9

File tree

3 files changed

+38
-36
lines changed

3 files changed

+38
-36
lines changed

profiling/benches/concatenation.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,7 @@ fn bench_concatenation_internal2(c: &mut Criterion) {
6868
c.bench_function("bench_concatenation_internal2", |b| {
6969
b.iter(|| {
7070
for _ in 1..=100 {
71-
_ = std::hint::black_box(extract_function_name_v2(
72-
b"standard",
73-
b"",
74-
b"file",
75-
))
71+
_ = std::hint::black_box(extract_function_name_v2(b"standard", b"", b"file"))
7672
}
7773
});
7874
});

profiling/src/well_known.rs

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use datadog_alloc::Global;
22
use std::borrow::Cow;
3-
use std::ops::Deref;
43

54
use datadog_thin_str::{ConstStorage, ThinString};
65

@@ -44,45 +43,45 @@ pub enum WellKnown {
4443

4544
impl From<WellKnown> for Cow<'static, str> {
4645
fn from(well_known: WellKnown) -> Self {
47-
let storage: &'static _ = match well_known {
48-
WellKnown::Empty => inline_strings::EMPTY.as_storage(),
49-
50-
WellKnown::BracketedEval => inline_strings::BRACKETED_EVAL.as_storage(),
51-
WellKnown::BracketedFatal => inline_strings::BRACKETED_FATAL.as_storage(),
52-
WellKnown::BracketedGc => inline_strings::BRACKETED_GC.as_storage(),
53-
WellKnown::BracketedIdle => inline_strings::BRACKETED_IDLE.as_storage(),
54-
WellKnown::BracketedInclude => inline_strings::BRACKETED_INCLUDE.as_storage(),
55-
WellKnown::BracketedRequire => inline_strings::BRACKETED_REQUIRE.as_storage(),
56-
WellKnown::BracketedSelect => inline_strings::BRACKETED_SELECT.as_storage(),
57-
WellKnown::BracketedSleeping => inline_strings::BRACKETED_SLEEPING.as_storage(),
58-
WellKnown::BracketedTruncated => inline_strings::BRACKETED_TRUNCATED.as_storage(),
46+
let str: &'static str = match well_known {
47+
WellKnown::Empty => inline_strings::EMPTY.as_ref(),
48+
49+
WellKnown::BracketedEval => inline_strings::BRACKETED_EVAL.as_ref(),
50+
WellKnown::BracketedFatal => inline_strings::BRACKETED_FATAL.as_ref(),
51+
WellKnown::BracketedGc => inline_strings::BRACKETED_GC.as_ref(),
52+
WellKnown::BracketedIdle => inline_strings::BRACKETED_IDLE.as_ref(),
53+
WellKnown::BracketedInclude => inline_strings::BRACKETED_INCLUDE.as_ref(),
54+
WellKnown::BracketedRequire => inline_strings::BRACKETED_REQUIRE.as_ref(),
55+
WellKnown::BracketedSelect => inline_strings::BRACKETED_SELECT.as_ref(),
56+
WellKnown::BracketedSleeping => inline_strings::BRACKETED_SLEEPING.as_ref(),
57+
WellKnown::BracketedTruncated => inline_strings::BRACKETED_TRUNCATED.as_ref(),
5958
WellKnown::BracketedUnknownIncludeType => {
60-
inline_strings::BRACKETED_UNKNOWN_INCLUDE_TYPE.as_storage()
59+
inline_strings::BRACKETED_UNKNOWN_INCLUDE_TYPE.as_ref()
6160
}
6261

63-
WellKnown::Compilation => inline_strings::COMPILATION.as_storage(),
64-
WellKnown::Engine => inline_strings::ENGINE.as_storage(),
65-
WellKnown::Fatal => inline_strings::FATAL.as_storage(),
66-
WellKnown::Idle => inline_strings::IDLE.as_storage(),
67-
WellKnown::Include => inline_strings::INCLUDE.as_storage(),
68-
WellKnown::Induced => inline_strings::INDUCED.as_storage(),
69-
WellKnown::OpcacheRestart => inline_strings::OPCACHE_RESTART.as_storage(),
70-
WellKnown::PhpOpenTag => inline_strings::PHP_OPEN_TAG.as_storage(),
71-
WellKnown::Require => inline_strings::REQUIRE.as_storage(),
72-
WellKnown::Select => inline_strings::SELECT.as_storage(),
73-
WellKnown::Sleeping => inline_strings::SLEEPING.as_storage(),
74-
WellKnown::Unknown => inline_strings::UNKNOWN.as_storage(),
62+
WellKnown::Compilation => inline_strings::COMPILATION.as_ref(),
63+
WellKnown::Engine => inline_strings::ENGINE.as_ref(),
64+
WellKnown::Fatal => inline_strings::FATAL.as_ref(),
65+
WellKnown::Idle => inline_strings::IDLE.as_ref(),
66+
WellKnown::Include => inline_strings::INCLUDE.as_ref(),
67+
WellKnown::Induced => inline_strings::INDUCED.as_ref(),
68+
WellKnown::OpcacheRestart => inline_strings::OPCACHE_RESTART.as_ref(),
69+
WellKnown::PhpOpenTag => inline_strings::PHP_OPEN_TAG.as_ref(),
70+
WellKnown::Require => inline_strings::REQUIRE.as_ref(),
71+
WellKnown::Select => inline_strings::SELECT.as_ref(),
72+
WellKnown::Sleeping => inline_strings::SLEEPING.as_ref(),
73+
WellKnown::Unknown => inline_strings::UNKNOWN.as_ref(),
7574

7675
#[cfg(php_zts)]
77-
WellKnown::BracketedThreadStart => inline_strings::BRACKETED_THREAD_START.as_storage(),
76+
WellKnown::BracketedThreadStart => inline_strings::BRACKETED_THREAD_START.as_ref(),
7877
#[cfg(php_zts)]
79-
WellKnown::BracketedThreadStop => inline_strings::BRACKETED_THREAD_STOP.as_storage(),
78+
WellKnown::BracketedThreadStop => inline_strings::BRACKETED_THREAD_STOP.as_ref(),
8079
#[cfg(php_zts)]
81-
WellKnown::ThreadStart => inline_strings::THREAD_START.as_storage(),
80+
WellKnown::ThreadStart => inline_strings::THREAD_START.as_ref(),
8281
#[cfg(php_zts)]
83-
WellKnown::ThreadStop => inline_strings::THREAD_STOP.as_storage(),
82+
WellKnown::ThreadStop => inline_strings::THREAD_STOP.as_ref(),
8483
};
85-
Cow::Borrowed(storage.deref())
84+
Cow::Borrowed(str)
8685
}
8786
}
8887

thin-str/src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,10 @@ impl<const N: usize> ConstStorage<N> {
123123
unsafe { Storage::from_header(header_ptr) }
124124
}
125125
}
126+
127+
impl<const N: usize> AsRef<str> for ConstStorage<N> {
128+
fn as_ref(&self) -> &str {
129+
// SAFETY: ConstStorage always hold valid strings.
130+
unsafe { core::str::from_utf8_unchecked(&self.data) }
131+
}
132+
}

0 commit comments

Comments
 (0)