pub struct Evidence {
pub label: String,
pub data: EvidenceData,
}Expand description
A piece of structured evidence backing a CheckResult.
Use this to attach decision-grade data (numbers, key-value pairs,
code snippets, file refs) instead of formatting them into the
free-form detail field. Consumers can read the typed payload
directly without parsing text.
§Example
use dev_report::{CheckResult, Evidence};
let check = CheckResult::pass("bench::parse")
.with_evidence(Evidence::numeric("mean_ns", 1234.0))
.with_evidence(Evidence::numeric("baseline_ns", 1100.0));
assert_eq!(check.evidence.len(), 2);Fields§
§label: StringShort human-readable label (e.g. "ops_per_sec").
data: EvidenceDataTyped payload.
Implementations§
Source§impl Evidence
impl Evidence
Sourcepub fn numeric(label: impl Into<String>, value: f64) -> Self
pub fn numeric(label: impl Into<String>, value: f64) -> Self
Build a numeric-evidence attachment.
§Example
use dev_report::Evidence;
let e = Evidence::numeric("ops_per_sec", 12_500.0);
assert_eq!(e.label, "ops_per_sec");Examples found in repository?
21fn build_report(producer: &str) -> Report {
22 let frozen_start = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 0).unwrap();
23 let frozen_end = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 5).unwrap();
24
25 let mut r = Report::new("sample-subject", "0.9.3").with_producer(producer);
26 r.set_started_at(frozen_start);
27
28 // Pass with no detail, no severity, no tags, no evidence.
29 let mut c1 = CheckResult::pass("compile");
30 c1.at = frozen_start;
31 r.push(c1);
32
33 // Pass with a duration and a single numeric evidence.
34 let mut c2 = CheckResult::pass("bench::parse")
35 .with_duration_ms(7)
36 .with_tag("bench")
37 .with_evidence(Evidence::numeric("mean_ns", 1234.5))
38 .with_evidence(Evidence::numeric_int("iterations", 1_000_000));
39 c2.at = frozen_start;
40 r.push(c2);
41
42 // Warn with key-value evidence.
43 let mut c3 = CheckResult::warn("env::leaked", Severity::Warning)
44 .with_detail("RUST_LOG was set during test")
45 .with_evidence(Evidence::kv("env", [("CI", "true"), ("RUST_LOG", "debug")]));
46 c3.at = frozen_start;
47 r.push(c3);
48
49 // Fail with snippet + file_ref (no line range) + file_ref (with line range).
50 let mut c4 = CheckResult::fail("test::round_trip", Severity::Error)
51 .with_detail("expected 42, got 41")
52 .with_duration_ms(13)
53 .with_tags(["unit", "flaky"])
54 .with_evidence(Evidence::snippet(
55 "panic",
56 "assertion `left == right` failed",
57 ))
58 .with_evidence(Evidence::file_ref("source", "src/math.rs"))
59 .with_evidence(Evidence::file_ref_lines(
60 "call_site",
61 "tests/smoke.rs",
62 42,
63 47,
64 ));
65 c4.at = frozen_start;
66 r.push(c4);
67
68 // Fail with Critical severity.
69 let mut c5 = CheckResult::fail("integration::startup", Severity::Critical)
70 .with_detail("service refused to start");
71 c5.at = frozen_start;
72 r.push(c5);
73
74 // Warn with Info severity (lowest severity, still warn verdict).
75 let mut c6 = CheckResult::warn("style::trailing_ws", Severity::Info)
76 .with_detail("3 trailing-whitespace warnings");
77 c6.at = frozen_start;
78 r.push(c6);
79
80 // Skip with no severity.
81 let mut c7 = CheckResult::skip("integration::network").with_detail("no network in sandbox");
82 c7.at = frozen_start;
83 r.push(c7);
84
85 // Manually-constructed FileRef via Evidence::file_ref (covered above);
86 // also exercise a standalone FileRef with line_start but no line_end —
87 // valid per the schema (both are optional independently).
88 let mut c8 = CheckResult::pass("doc::link_check");
89 c8.at = frozen_start;
90 let standalone = FileRef::new("docs/index.md").with_line_range(10, 10);
91 c8 = c8.with_evidence(Evidence {
92 label: "anchor".into(),
93 data: dev_report::EvidenceData::FileRef(standalone),
94 });
95 r.push(c8);
96
97 r.set_finished_at(Some(frozen_end));
98 r
99}Sourcepub fn numeric_int(label: impl Into<String>, value: i64) -> Self
pub fn numeric_int(label: impl Into<String>, value: i64) -> Self
Build a numeric-evidence attachment from an integer value.
Preserves precision for counters that exceed f64’s 53-bit
integer range (e.g. iteration counts, byte sizes). The value is
stored as f64 on the wire (the schema is unchanged), but
callers don’t have to perform a possibly-lossy as f64 cast.
For values up to 2^53 the round-trip is exact. Above that,
precision degrades the same way it would for any f64.
§Example
use dev_report::Evidence;
let e = Evidence::numeric_int("iterations", 1_000_000_i64);
assert_eq!(e.label, "iterations");Examples found in repository?
21fn build_report(producer: &str) -> Report {
22 let frozen_start = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 0).unwrap();
23 let frozen_end = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 5).unwrap();
24
25 let mut r = Report::new("sample-subject", "0.9.3").with_producer(producer);
26 r.set_started_at(frozen_start);
27
28 // Pass with no detail, no severity, no tags, no evidence.
29 let mut c1 = CheckResult::pass("compile");
30 c1.at = frozen_start;
31 r.push(c1);
32
33 // Pass with a duration and a single numeric evidence.
34 let mut c2 = CheckResult::pass("bench::parse")
35 .with_duration_ms(7)
36 .with_tag("bench")
37 .with_evidence(Evidence::numeric("mean_ns", 1234.5))
38 .with_evidence(Evidence::numeric_int("iterations", 1_000_000));
39 c2.at = frozen_start;
40 r.push(c2);
41
42 // Warn with key-value evidence.
43 let mut c3 = CheckResult::warn("env::leaked", Severity::Warning)
44 .with_detail("RUST_LOG was set during test")
45 .with_evidence(Evidence::kv("env", [("CI", "true"), ("RUST_LOG", "debug")]));
46 c3.at = frozen_start;
47 r.push(c3);
48
49 // Fail with snippet + file_ref (no line range) + file_ref (with line range).
50 let mut c4 = CheckResult::fail("test::round_trip", Severity::Error)
51 .with_detail("expected 42, got 41")
52 .with_duration_ms(13)
53 .with_tags(["unit", "flaky"])
54 .with_evidence(Evidence::snippet(
55 "panic",
56 "assertion `left == right` failed",
57 ))
58 .with_evidence(Evidence::file_ref("source", "src/math.rs"))
59 .with_evidence(Evidence::file_ref_lines(
60 "call_site",
61 "tests/smoke.rs",
62 42,
63 47,
64 ));
65 c4.at = frozen_start;
66 r.push(c4);
67
68 // Fail with Critical severity.
69 let mut c5 = CheckResult::fail("integration::startup", Severity::Critical)
70 .with_detail("service refused to start");
71 c5.at = frozen_start;
72 r.push(c5);
73
74 // Warn with Info severity (lowest severity, still warn verdict).
75 let mut c6 = CheckResult::warn("style::trailing_ws", Severity::Info)
76 .with_detail("3 trailing-whitespace warnings");
77 c6.at = frozen_start;
78 r.push(c6);
79
80 // Skip with no severity.
81 let mut c7 = CheckResult::skip("integration::network").with_detail("no network in sandbox");
82 c7.at = frozen_start;
83 r.push(c7);
84
85 // Manually-constructed FileRef via Evidence::file_ref (covered above);
86 // also exercise a standalone FileRef with line_start but no line_end —
87 // valid per the schema (both are optional independently).
88 let mut c8 = CheckResult::pass("doc::link_check");
89 c8.at = frozen_start;
90 let standalone = FileRef::new("docs/index.md").with_line_range(10, 10);
91 c8 = c8.with_evidence(Evidence {
92 label: "anchor".into(),
93 data: dev_report::EvidenceData::FileRef(standalone),
94 });
95 r.push(c8);
96
97 r.set_finished_at(Some(frozen_end));
98 r
99}Sourcepub fn kv<I, K, V>(label: impl Into<String>, pairs: I) -> Self
pub fn kv<I, K, V>(label: impl Into<String>, pairs: I) -> Self
Build a key-value-evidence attachment from any iterable of pairs.
§Example
use dev_report::Evidence;
let e = Evidence::kv("env", [("RUST_LOG", "debug"), ("CI", "true")]);
assert_eq!(e.label, "env");Examples found in repository?
21fn build_report(producer: &str) -> Report {
22 let frozen_start = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 0).unwrap();
23 let frozen_end = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 5).unwrap();
24
25 let mut r = Report::new("sample-subject", "0.9.3").with_producer(producer);
26 r.set_started_at(frozen_start);
27
28 // Pass with no detail, no severity, no tags, no evidence.
29 let mut c1 = CheckResult::pass("compile");
30 c1.at = frozen_start;
31 r.push(c1);
32
33 // Pass with a duration and a single numeric evidence.
34 let mut c2 = CheckResult::pass("bench::parse")
35 .with_duration_ms(7)
36 .with_tag("bench")
37 .with_evidence(Evidence::numeric("mean_ns", 1234.5))
38 .with_evidence(Evidence::numeric_int("iterations", 1_000_000));
39 c2.at = frozen_start;
40 r.push(c2);
41
42 // Warn with key-value evidence.
43 let mut c3 = CheckResult::warn("env::leaked", Severity::Warning)
44 .with_detail("RUST_LOG was set during test")
45 .with_evidence(Evidence::kv("env", [("CI", "true"), ("RUST_LOG", "debug")]));
46 c3.at = frozen_start;
47 r.push(c3);
48
49 // Fail with snippet + file_ref (no line range) + file_ref (with line range).
50 let mut c4 = CheckResult::fail("test::round_trip", Severity::Error)
51 .with_detail("expected 42, got 41")
52 .with_duration_ms(13)
53 .with_tags(["unit", "flaky"])
54 .with_evidence(Evidence::snippet(
55 "panic",
56 "assertion `left == right` failed",
57 ))
58 .with_evidence(Evidence::file_ref("source", "src/math.rs"))
59 .with_evidence(Evidence::file_ref_lines(
60 "call_site",
61 "tests/smoke.rs",
62 42,
63 47,
64 ));
65 c4.at = frozen_start;
66 r.push(c4);
67
68 // Fail with Critical severity.
69 let mut c5 = CheckResult::fail("integration::startup", Severity::Critical)
70 .with_detail("service refused to start");
71 c5.at = frozen_start;
72 r.push(c5);
73
74 // Warn with Info severity (lowest severity, still warn verdict).
75 let mut c6 = CheckResult::warn("style::trailing_ws", Severity::Info)
76 .with_detail("3 trailing-whitespace warnings");
77 c6.at = frozen_start;
78 r.push(c6);
79
80 // Skip with no severity.
81 let mut c7 = CheckResult::skip("integration::network").with_detail("no network in sandbox");
82 c7.at = frozen_start;
83 r.push(c7);
84
85 // Manually-constructed FileRef via Evidence::file_ref (covered above);
86 // also exercise a standalone FileRef with line_start but no line_end —
87 // valid per the schema (both are optional independently).
88 let mut c8 = CheckResult::pass("doc::link_check");
89 c8.at = frozen_start;
90 let standalone = FileRef::new("docs/index.md").with_line_range(10, 10);
91 c8 = c8.with_evidence(Evidence {
92 label: "anchor".into(),
93 data: dev_report::EvidenceData::FileRef(standalone),
94 });
95 r.push(c8);
96
97 r.set_finished_at(Some(frozen_end));
98 r
99}Sourcepub fn snippet(label: impl Into<String>, text: impl Into<String>) -> Self
pub fn snippet(label: impl Into<String>, text: impl Into<String>) -> Self
Build a snippet-evidence attachment.
§Example
use dev_report::Evidence;
let e = Evidence::snippet("panic", "thread 'main' panicked at ...");
assert_eq!(e.label, "panic");Examples found in repository?
21fn build_report(producer: &str) -> Report {
22 let frozen_start = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 0).unwrap();
23 let frozen_end = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 5).unwrap();
24
25 let mut r = Report::new("sample-subject", "0.9.3").with_producer(producer);
26 r.set_started_at(frozen_start);
27
28 // Pass with no detail, no severity, no tags, no evidence.
29 let mut c1 = CheckResult::pass("compile");
30 c1.at = frozen_start;
31 r.push(c1);
32
33 // Pass with a duration and a single numeric evidence.
34 let mut c2 = CheckResult::pass("bench::parse")
35 .with_duration_ms(7)
36 .with_tag("bench")
37 .with_evidence(Evidence::numeric("mean_ns", 1234.5))
38 .with_evidence(Evidence::numeric_int("iterations", 1_000_000));
39 c2.at = frozen_start;
40 r.push(c2);
41
42 // Warn with key-value evidence.
43 let mut c3 = CheckResult::warn("env::leaked", Severity::Warning)
44 .with_detail("RUST_LOG was set during test")
45 .with_evidence(Evidence::kv("env", [("CI", "true"), ("RUST_LOG", "debug")]));
46 c3.at = frozen_start;
47 r.push(c3);
48
49 // Fail with snippet + file_ref (no line range) + file_ref (with line range).
50 let mut c4 = CheckResult::fail("test::round_trip", Severity::Error)
51 .with_detail("expected 42, got 41")
52 .with_duration_ms(13)
53 .with_tags(["unit", "flaky"])
54 .with_evidence(Evidence::snippet(
55 "panic",
56 "assertion `left == right` failed",
57 ))
58 .with_evidence(Evidence::file_ref("source", "src/math.rs"))
59 .with_evidence(Evidence::file_ref_lines(
60 "call_site",
61 "tests/smoke.rs",
62 42,
63 47,
64 ));
65 c4.at = frozen_start;
66 r.push(c4);
67
68 // Fail with Critical severity.
69 let mut c5 = CheckResult::fail("integration::startup", Severity::Critical)
70 .with_detail("service refused to start");
71 c5.at = frozen_start;
72 r.push(c5);
73
74 // Warn with Info severity (lowest severity, still warn verdict).
75 let mut c6 = CheckResult::warn("style::trailing_ws", Severity::Info)
76 .with_detail("3 trailing-whitespace warnings");
77 c6.at = frozen_start;
78 r.push(c6);
79
80 // Skip with no severity.
81 let mut c7 = CheckResult::skip("integration::network").with_detail("no network in sandbox");
82 c7.at = frozen_start;
83 r.push(c7);
84
85 // Manually-constructed FileRef via Evidence::file_ref (covered above);
86 // also exercise a standalone FileRef with line_start but no line_end —
87 // valid per the schema (both are optional independently).
88 let mut c8 = CheckResult::pass("doc::link_check");
89 c8.at = frozen_start;
90 let standalone = FileRef::new("docs/index.md").with_line_range(10, 10);
91 c8 = c8.with_evidence(Evidence {
92 label: "anchor".into(),
93 data: dev_report::EvidenceData::FileRef(standalone),
94 });
95 r.push(c8);
96
97 r.set_finished_at(Some(frozen_end));
98 r
99}Sourcepub fn file_ref(label: impl Into<String>, path: impl Into<String>) -> Self
pub fn file_ref(label: impl Into<String>, path: impl Into<String>) -> Self
Build a file-reference-evidence attachment with no line range.
§Example
use dev_report::Evidence;
let e = Evidence::file_ref("source", "src/lib.rs");
assert_eq!(e.label, "source");Examples found in repository?
15fn main() {
16 let mut r = Report::new("sample-subject", "0.9.3").with_producer("dev-bench");
17
18 r.push(CheckResult::pass("compile"));
19 r.push(CheckResult::skip("network"));
20
21 r.push(
22 CheckResult::fail("test::round_trip", Severity::Error)
23 .with_detail("expected 42, got 41")
24 .with_evidence(Evidence::file_ref_lines("site", "src/math.rs", 10, 12)),
25 );
26
27 r.push(
28 CheckResult::fail("integration::startup", Severity::Critical)
29 .with_detail("service refused to start")
30 .with_evidence(Evidence::file_ref("source", "src/bin/server.rs")),
31 );
32
33 r.push(
34 CheckResult::warn("style::trailing_ws", Severity::Warning)
35 .with_detail("3 trailing-whitespace warnings"),
36 );
37
38 r.finish();
39
40 println!("{}", r.to_sarif());
41}More examples
21fn build_report(producer: &str) -> Report {
22 let frozen_start = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 0).unwrap();
23 let frozen_end = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 5).unwrap();
24
25 let mut r = Report::new("sample-subject", "0.9.3").with_producer(producer);
26 r.set_started_at(frozen_start);
27
28 // Pass with no detail, no severity, no tags, no evidence.
29 let mut c1 = CheckResult::pass("compile");
30 c1.at = frozen_start;
31 r.push(c1);
32
33 // Pass with a duration and a single numeric evidence.
34 let mut c2 = CheckResult::pass("bench::parse")
35 .with_duration_ms(7)
36 .with_tag("bench")
37 .with_evidence(Evidence::numeric("mean_ns", 1234.5))
38 .with_evidence(Evidence::numeric_int("iterations", 1_000_000));
39 c2.at = frozen_start;
40 r.push(c2);
41
42 // Warn with key-value evidence.
43 let mut c3 = CheckResult::warn("env::leaked", Severity::Warning)
44 .with_detail("RUST_LOG was set during test")
45 .with_evidence(Evidence::kv("env", [("CI", "true"), ("RUST_LOG", "debug")]));
46 c3.at = frozen_start;
47 r.push(c3);
48
49 // Fail with snippet + file_ref (no line range) + file_ref (with line range).
50 let mut c4 = CheckResult::fail("test::round_trip", Severity::Error)
51 .with_detail("expected 42, got 41")
52 .with_duration_ms(13)
53 .with_tags(["unit", "flaky"])
54 .with_evidence(Evidence::snippet(
55 "panic",
56 "assertion `left == right` failed",
57 ))
58 .with_evidence(Evidence::file_ref("source", "src/math.rs"))
59 .with_evidence(Evidence::file_ref_lines(
60 "call_site",
61 "tests/smoke.rs",
62 42,
63 47,
64 ));
65 c4.at = frozen_start;
66 r.push(c4);
67
68 // Fail with Critical severity.
69 let mut c5 = CheckResult::fail("integration::startup", Severity::Critical)
70 .with_detail("service refused to start");
71 c5.at = frozen_start;
72 r.push(c5);
73
74 // Warn with Info severity (lowest severity, still warn verdict).
75 let mut c6 = CheckResult::warn("style::trailing_ws", Severity::Info)
76 .with_detail("3 trailing-whitespace warnings");
77 c6.at = frozen_start;
78 r.push(c6);
79
80 // Skip with no severity.
81 let mut c7 = CheckResult::skip("integration::network").with_detail("no network in sandbox");
82 c7.at = frozen_start;
83 r.push(c7);
84
85 // Manually-constructed FileRef via Evidence::file_ref (covered above);
86 // also exercise a standalone FileRef with line_start but no line_end —
87 // valid per the schema (both are optional independently).
88 let mut c8 = CheckResult::pass("doc::link_check");
89 c8.at = frozen_start;
90 let standalone = FileRef::new("docs/index.md").with_line_range(10, 10);
91 c8 = c8.with_evidence(Evidence {
92 label: "anchor".into(),
93 data: dev_report::EvidenceData::FileRef(standalone),
94 });
95 r.push(c8);
96
97 r.set_finished_at(Some(frozen_end));
98 r
99}Sourcepub fn file_ref_lines(
label: impl Into<String>,
path: impl Into<String>,
start: u32,
end: u32,
) -> Self
pub fn file_ref_lines( label: impl Into<String>, path: impl Into<String>, start: u32, end: u32, ) -> Self
Build a file-reference-evidence attachment with a [start, end]
line range (1-indexed, inclusive).
§Example
use dev_report::Evidence;
let e = Evidence::file_ref_lines("call_site", "src/lib.rs", 42, 47);
assert_eq!(e.label, "call_site");Examples found in repository?
15fn main() {
16 let mut r = Report::new("sample-subject", "0.9.3").with_producer("dev-bench");
17
18 r.push(CheckResult::pass("compile"));
19 r.push(CheckResult::skip("network"));
20
21 r.push(
22 CheckResult::fail("test::round_trip", Severity::Error)
23 .with_detail("expected 42, got 41")
24 .with_evidence(Evidence::file_ref_lines("site", "src/math.rs", 10, 12)),
25 );
26
27 r.push(
28 CheckResult::fail("integration::startup", Severity::Critical)
29 .with_detail("service refused to start")
30 .with_evidence(Evidence::file_ref("source", "src/bin/server.rs")),
31 );
32
33 r.push(
34 CheckResult::warn("style::trailing_ws", Severity::Warning)
35 .with_detail("3 trailing-whitespace warnings"),
36 );
37
38 r.finish();
39
40 println!("{}", r.to_sarif());
41}More examples
21fn build_report(producer: &str) -> Report {
22 let frozen_start = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 0).unwrap();
23 let frozen_end = chrono::Utc.with_ymd_and_hms(2026, 5, 11, 12, 0, 5).unwrap();
24
25 let mut r = Report::new("sample-subject", "0.9.3").with_producer(producer);
26 r.set_started_at(frozen_start);
27
28 // Pass with no detail, no severity, no tags, no evidence.
29 let mut c1 = CheckResult::pass("compile");
30 c1.at = frozen_start;
31 r.push(c1);
32
33 // Pass with a duration and a single numeric evidence.
34 let mut c2 = CheckResult::pass("bench::parse")
35 .with_duration_ms(7)
36 .with_tag("bench")
37 .with_evidence(Evidence::numeric("mean_ns", 1234.5))
38 .with_evidence(Evidence::numeric_int("iterations", 1_000_000));
39 c2.at = frozen_start;
40 r.push(c2);
41
42 // Warn with key-value evidence.
43 let mut c3 = CheckResult::warn("env::leaked", Severity::Warning)
44 .with_detail("RUST_LOG was set during test")
45 .with_evidence(Evidence::kv("env", [("CI", "true"), ("RUST_LOG", "debug")]));
46 c3.at = frozen_start;
47 r.push(c3);
48
49 // Fail with snippet + file_ref (no line range) + file_ref (with line range).
50 let mut c4 = CheckResult::fail("test::round_trip", Severity::Error)
51 .with_detail("expected 42, got 41")
52 .with_duration_ms(13)
53 .with_tags(["unit", "flaky"])
54 .with_evidence(Evidence::snippet(
55 "panic",
56 "assertion `left == right` failed",
57 ))
58 .with_evidence(Evidence::file_ref("source", "src/math.rs"))
59 .with_evidence(Evidence::file_ref_lines(
60 "call_site",
61 "tests/smoke.rs",
62 42,
63 47,
64 ));
65 c4.at = frozen_start;
66 r.push(c4);
67
68 // Fail with Critical severity.
69 let mut c5 = CheckResult::fail("integration::startup", Severity::Critical)
70 .with_detail("service refused to start");
71 c5.at = frozen_start;
72 r.push(c5);
73
74 // Warn with Info severity (lowest severity, still warn verdict).
75 let mut c6 = CheckResult::warn("style::trailing_ws", Severity::Info)
76 .with_detail("3 trailing-whitespace warnings");
77 c6.at = frozen_start;
78 r.push(c6);
79
80 // Skip with no severity.
81 let mut c7 = CheckResult::skip("integration::network").with_detail("no network in sandbox");
82 c7.at = frozen_start;
83 r.push(c7);
84
85 // Manually-constructed FileRef via Evidence::file_ref (covered above);
86 // also exercise a standalone FileRef with line_start but no line_end —
87 // valid per the schema (both are optional independently).
88 let mut c8 = CheckResult::pass("doc::link_check");
89 c8.at = frozen_start;
90 let standalone = FileRef::new("docs/index.md").with_line_range(10, 10);
91 c8 = c8.with_evidence(Evidence {
92 label: "anchor".into(),
93 data: dev_report::EvidenceData::FileRef(standalone),
94 });
95 r.push(c8);
96
97 r.set_finished_at(Some(frozen_end));
98 r
99}Sourcepub fn kind(&self) -> EvidenceKind
pub fn kind(&self) -> EvidenceKind
Discriminator for the payload variant.
§Example
use dev_report::{Evidence, EvidenceKind};
assert_eq!(Evidence::numeric("x", 1.0).kind(), EvidenceKind::Numeric);