Skip to main content

Evidence

Struct Evidence 

Source
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: String

Short human-readable label (e.g. "ops_per_sec").

§data: EvidenceData

Typed payload.

Implementations§

Source§

impl Evidence

Source

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?
examples/schema_sample.rs (line 37)
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}
Source

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?
examples/schema_sample.rs (line 38)
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}
Source

pub fn kv<I, K, V>(label: impl Into<String>, pairs: I) -> Self
where I: IntoIterator<Item = (K, V)>, K: Into<String>, V: Into<String>,

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?
examples/schema_sample.rs (line 45)
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}
Source

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?
examples/schema_sample.rs (lines 54-57)
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}
Source

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?
examples/sarif_export.rs (line 30)
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
Hide additional examples
examples/schema_sample.rs (line 58)
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}
Source

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?
examples/sarif_export.rs (line 24)
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
Hide additional examples
examples/schema_sample.rs (lines 59-64)
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}
Source

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);

Trait Implementations§

Source§

impl Clone for Evidence

Source§

fn clone(&self) -> Evidence

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Evidence

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Evidence

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Evidence

Source§

fn eq(&self, other: &Evidence) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Evidence

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Evidence

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,