Skip to content

Commit 445c5fe

Browse files
committed
Make TraceContext::new return Option<Self>
1 parent 4f6ca04 commit 445c5fe

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

src/trace/trace_context.rs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -83,23 +83,19 @@ impl TraceContext {
8383
/// assert_eq!(context.parent_id(), parent_id.ok());
8484
/// assert_eq!(context.sampled(), true);
8585
/// ```
86-
pub fn from_headers(headers: impl AsRef<Headers>) -> crate::Result<Self> {
86+
pub fn from_headers(headers: impl AsRef<Headers>) -> Option<Self> {
8787
let headers = headers.as_ref();
8888
let mut rng = rand::thread_rng();
8989

90-
let traceparent = match headers.get(TRACEPARENT) {
91-
Some(header) => header.as_str(),
92-
None => return Ok(Self::new()),
93-
};
90+
let traceparent = headers.get(TRACEPARENT)?;
91+
let parts: Vec<&str> = traceparent.as_str().split('-').collect();
9492

95-
let parts: Vec<&str> = traceparent.split('-').collect();
96-
97-
Ok(Self {
93+
Some(Self {
9894
id: rng.gen(),
99-
version: u8::from_str_radix(parts[0], 16)?,
100-
trace_id: u128::from_str_radix(parts[1], 16)?,
101-
parent_id: Some(u64::from_str_radix(parts[2], 16)?),
102-
flags: u8::from_str_radix(parts[3], 16)?,
95+
version: u8::from_str_radix(parts[0], 16).ok()?,
96+
trace_id: u128::from_str_radix(parts[1], 16).ok()?,
97+
parent_id: Some(u64::from_str_radix(parts[2], 16).ok()?),
98+
flags: u8::from_str_radix(parts[3], 16).ok()?,
10399
})
104100
}
105101

@@ -237,7 +233,7 @@ mod test {
237233
fn default() -> crate::Result<()> {
238234
let mut headers = crate::Headers::new();
239235
headers.insert(TRACEPARENT, "00-01-deadbeef-00");
240-
let context = TraceContext::from_headers(&mut headers)?;
236+
let context = TraceContext::from_headers(&mut headers).unwrap();
241237
assert_eq!(context.version(), 0);
242238
assert_eq!(context.trace_id(), 1);
243239
assert_eq!(context.parent_id().unwrap(), 3735928559);
@@ -249,7 +245,7 @@ mod test {
249245
#[test]
250246
fn no_header() -> crate::Result<()> {
251247
let mut headers = crate::Headers::new();
252-
let context = TraceContext::from_headers(&mut headers)?;
248+
let context = TraceContext::from_headers(&mut headers).unwrap();
253249
assert_eq!(context.version(), 0);
254250
assert_eq!(context.parent_id(), None);
255251
assert_eq!(context.flags, 1);
@@ -261,7 +257,7 @@ mod test {
261257
fn not_sampled() -> crate::Result<()> {
262258
let mut headers = crate::Headers::new();
263259
headers.insert(TRACEPARENT, "00-01-02-00");
264-
let context = TraceContext::from_headers(&mut headers)?;
260+
let context = TraceContext::from_headers(&mut headers).unwrap();
265261
assert_eq!(context.sampled(), false);
266262
Ok(())
267263
}
@@ -270,7 +266,7 @@ mod test {
270266
fn sampled() -> crate::Result<()> {
271267
let mut headers = crate::Headers::new();
272268
headers.insert(TRACEPARENT, "00-01-02-01");
273-
let context = TraceContext::from_headers(&mut headers)?;
269+
let context = TraceContext::from_headers(&mut headers).unwrap();
274270
assert_eq!(context.sampled(), true);
275271
Ok(())
276272
}

0 commit comments

Comments
 (0)