1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! Convenience macros for instrumented operations.
/// Record any error from an expression to the current span.
///
/// Returns the `Result` unchanged — useful for one-liners where you
/// want error tracking without verbose handling.
///
/// # Example
///
/// ```rust,ignore
/// use otel_rs::try_record;
///
/// #[tracing::instrument]
/// async fn my_fn() -> Result<String, MyError> {
/// let value = try_record!(fallible_call().await);
/// Ok(value?)
/// }
/// ```
/// Record any error and early-return on `Err` (like `?` with span recording).
///
/// # Example
///
/// ```rust,ignore
/// use otel_rs::try_record_return;
///
/// #[tracing::instrument]
/// async fn my_fn() -> Result<String, MyError> {
/// let value = try_record_return!(fallible_call().await);
/// Ok(format!("Got: {value}"))
/// }
/// ```