blackbox_log/frame/
trace_field.rs

1macro_rules! trace_field {
2    (_impl pre $field:expr, $enc:expr, $signed:expr, $raw:expr) => {
3        tracing::trace!(
4            field = $field.name(),
5            encoding = ?$enc,
6            signed_encoding = $signed,
7            raw = $raw,
8        );
9    };
10    (_impl post $field:expr, $pred:expr, $signed:expr, $final:expr) => {
11        tracing::trace!(
12            field = $field.name(),
13            predictor = ?$pred,
14            signed = $signed,
15            value = $final,
16        );
17    };
18
19    (pre, field = $field:expr, enc = $enc:expr, raw = $raw:expr $(,)?) => {
20        if $enc.is_signed() {
21            trace_field!(_impl pre $field, $enc, $enc.is_signed(), $raw.cast_signed());
22        } else {
23            trace_field!(_impl pre $field, $enc, $enc.is_signed(), $raw);
24        }
25    };
26    (post, field = $field:expr, pred = $pred:expr, final = $final:expr $(,)?) => {
27        if $field.signed() {
28            trace_field!(_impl post $field, $pred, $field.signed(), $final.cast_signed());
29        } else {
30            trace_field!(_impl post $field, $pred, $field.signed(), $final);
31        }
32    };
33}