@@ -83,23 +83,19 @@ impl TraceContext {
83
83
/// assert_eq!(context.parent_id(), parent_id.ok());
84
84
/// assert_eq!(context.sampled(), true);
85
85
/// ```
86
- pub fn from_headers ( headers : impl AsRef < Headers > ) -> crate :: Result < Self > {
86
+ pub fn from_headers ( headers : impl AsRef < Headers > ) -> Option < Self > {
87
87
let headers = headers. as_ref ( ) ;
88
88
let mut rng = rand:: thread_rng ( ) ;
89
89
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 ( ) ;
94
92
95
- let parts: Vec < & str > = traceparent. split ( '-' ) . collect ( ) ;
96
-
97
- Ok ( Self {
93
+ Some ( Self {
98
94
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 ( ) ?,
103
99
} )
104
100
}
105
101
@@ -237,7 +233,7 @@ mod test {
237
233
fn default ( ) -> crate :: Result < ( ) > {
238
234
let mut headers = crate :: Headers :: new ( ) ;
239
235
headers. insert ( TRACEPARENT , "00-01-deadbeef-00" ) ;
240
- let context = TraceContext :: from_headers ( & mut headers) ? ;
236
+ let context = TraceContext :: from_headers ( & mut headers) . unwrap ( ) ;
241
237
assert_eq ! ( context. version( ) , 0 ) ;
242
238
assert_eq ! ( context. trace_id( ) , 1 ) ;
243
239
assert_eq ! ( context. parent_id( ) . unwrap( ) , 3735928559 ) ;
@@ -249,7 +245,7 @@ mod test {
249
245
#[ test]
250
246
fn no_header ( ) -> crate :: Result < ( ) > {
251
247
let mut headers = crate :: Headers :: new ( ) ;
252
- let context = TraceContext :: from_headers ( & mut headers) ? ;
248
+ let context = TraceContext :: from_headers ( & mut headers) . unwrap ( ) ;
253
249
assert_eq ! ( context. version( ) , 0 ) ;
254
250
assert_eq ! ( context. parent_id( ) , None ) ;
255
251
assert_eq ! ( context. flags, 1 ) ;
@@ -261,7 +257,7 @@ mod test {
261
257
fn not_sampled ( ) -> crate :: Result < ( ) > {
262
258
let mut headers = crate :: Headers :: new ( ) ;
263
259
headers. insert ( TRACEPARENT , "00-01-02-00" ) ;
264
- let context = TraceContext :: from_headers ( & mut headers) ? ;
260
+ let context = TraceContext :: from_headers ( & mut headers) . unwrap ( ) ;
265
261
assert_eq ! ( context. sampled( ) , false ) ;
266
262
Ok ( ( ) )
267
263
}
@@ -270,7 +266,7 @@ mod test {
270
266
fn sampled ( ) -> crate :: Result < ( ) > {
271
267
let mut headers = crate :: Headers :: new ( ) ;
272
268
headers. insert ( TRACEPARENT , "00-01-02-01" ) ;
273
- let context = TraceContext :: from_headers ( & mut headers) ? ;
269
+ let context = TraceContext :: from_headers ( & mut headers) . unwrap ( ) ;
274
270
assert_eq ! ( context. sampled( ) , true ) ;
275
271
Ok ( ( ) )
276
272
}
0 commit comments