#[non_exhaustive]pub struct Report {
pub title: String,
pub verdict: Verdict,
pub metrics: Vec<Metric>,
pub groups: Vec<FindingGroup>,
pub scope_notes: Vec<ScopeNote>,
pub next_steps: Vec<NextStep>,
pub vocabulary_notes: Vec<Vocabulary>,
pub detail_level: DetailLevel,
pub max_compact_samples: usize,
pub top_issues_threshold: Option<usize>,
}Expand description
A complete decision-oriented report model.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.title: String§verdict: Verdict§metrics: Vec<Metric>§groups: Vec<FindingGroup>§scope_notes: Vec<ScopeNote>§next_steps: Vec<NextStep>§vocabulary_notes: Vec<Vocabulary>§detail_level: DetailLevel§max_compact_samples: usize§top_issues_threshold: Option<usize>Implementations§
Source§impl Report
impl Report
Sourcepub fn new(title: impl Into<String>, verdict: Verdict) -> Self
pub fn new(title: impl Into<String>, verdict: Verdict) -> Self
Creates a new report with a title and verdict.
Examples found in repository?
examples/report_demo.rs (line 32)
6fn main() {
7 let console = Console::stdout(ColorMode::Auto);
8
9 println!("=== 1. Verdict & Status ===");
10 println!(
11 "{}",
12 Verdict::Passed.render(console, "Configuration validated cleanly")
13 );
14 println!(
15 "{}",
16 Verdict::Warning.render(console, "3 non-critical findings detected")
17 );
18 println!(
19 "{}",
20 Verdict::Failed.render(console, "Build failed: 2 errors")
21 );
22 println!();
23
24 println!("=== 2. Error / Prerequisite Block ===");
25 let err_block = ErrorBlock::new("Required toolchain is unavailable")
26 .with_explanation("The configured version is not installed.")
27 .with_remedy("Install the required toolchain:")
28 .add_command("toolchain install stable");
29 print!("{}", err_block.render(console));
30
31 println!("=== 3. Decision-Oriented Report (Compact) ===");
32 let report = Report::new("Site audit v1.2.0", Verdict::Warning)
33 .add_scope_note(ScopeNote::new(
34 "Scope warnings",
35 vec![
36 "Git history partial".to_string(),
37 "1 file skipped".to_string(),
38 ],
39 ))
40 .add_metric(Metric::new("Errors", "0"))
41 .add_metric(Metric::new("Warnings", "4").with_trend(runemark::Trend::Negative, "+2"))
42 .add_metric(Metric::new("Score", "94/100").with_trend(runemark::Trend::Positive, "+5%"))
43 .add_group(
44 FindingGroup::new("Accessibility Violations")
45 .add_finding(
46 Finding::new(runemark::Tone::Warning, "Image missing alt attribute")
47 .with_rule_id("a11y/img-alt")
48 .with_badge(runemark::Badge::quick_win())
49 .with_confidence(runemark::Confidence::High)
50 .with_location(Location::file_line_col("src/pages/index.astro", 42, 10))
51 .with_remedy("Add alt=\"...\" description to <img> tag"),
52 )
53 .add_finding(
54 Finding::new(runemark::Tone::Warning, "Low contrast ratio on hero button")
55 .with_rule_id("a11y/contrast")
56 .with_location(Location::file_line("src/components/Hero.astro", 18)),
57 ),
58 )
59 .add_next_step(
60 NextStep::new("Run auto-fixer for formatting issues").with_command("audit --fix"),
61 );
62
63 print!("{}", report.render(console));
64
65 println!("=== 4. Detailed Report View ===");
66 let detailed_report = report.with_detail_level(DetailLevel::Detailed);
67 print!("{}", detailed_report.render(console));
68
69 println!("=== 5. Generator Diff View ===");
70 let diff = DiffBlock::new()
71 .add_change(
72 FileChange::new(FileAction::Added, "src/components/Footer.astro").with_delta("+1.2 kB"),
73 )
74 .add_change(FileChange::new(
75 FileAction::Modified,
76 "src/layouts/Layout.astro",
77 ))
78 .add_change(FileChange::new(
79 FileAction::Deleted,
80 "src/legacy/Footer.jsx",
81 ));
82 print!("{}", diff.render(console));
83}Sourcepub fn with_detail_level(self, level: DetailLevel) -> Self
pub fn with_detail_level(self, level: DetailLevel) -> Self
Sets the detail level mode.
Examples found in repository?
examples/report_demo.rs (line 66)
6fn main() {
7 let console = Console::stdout(ColorMode::Auto);
8
9 println!("=== 1. Verdict & Status ===");
10 println!(
11 "{}",
12 Verdict::Passed.render(console, "Configuration validated cleanly")
13 );
14 println!(
15 "{}",
16 Verdict::Warning.render(console, "3 non-critical findings detected")
17 );
18 println!(
19 "{}",
20 Verdict::Failed.render(console, "Build failed: 2 errors")
21 );
22 println!();
23
24 println!("=== 2. Error / Prerequisite Block ===");
25 let err_block = ErrorBlock::new("Required toolchain is unavailable")
26 .with_explanation("The configured version is not installed.")
27 .with_remedy("Install the required toolchain:")
28 .add_command("toolchain install stable");
29 print!("{}", err_block.render(console));
30
31 println!("=== 3. Decision-Oriented Report (Compact) ===");
32 let report = Report::new("Site audit v1.2.0", Verdict::Warning)
33 .add_scope_note(ScopeNote::new(
34 "Scope warnings",
35 vec![
36 "Git history partial".to_string(),
37 "1 file skipped".to_string(),
38 ],
39 ))
40 .add_metric(Metric::new("Errors", "0"))
41 .add_metric(Metric::new("Warnings", "4").with_trend(runemark::Trend::Negative, "+2"))
42 .add_metric(Metric::new("Score", "94/100").with_trend(runemark::Trend::Positive, "+5%"))
43 .add_group(
44 FindingGroup::new("Accessibility Violations")
45 .add_finding(
46 Finding::new(runemark::Tone::Warning, "Image missing alt attribute")
47 .with_rule_id("a11y/img-alt")
48 .with_badge(runemark::Badge::quick_win())
49 .with_confidence(runemark::Confidence::High)
50 .with_location(Location::file_line_col("src/pages/index.astro", 42, 10))
51 .with_remedy("Add alt=\"...\" description to <img> tag"),
52 )
53 .add_finding(
54 Finding::new(runemark::Tone::Warning, "Low contrast ratio on hero button")
55 .with_rule_id("a11y/contrast")
56 .with_location(Location::file_line("src/components/Hero.astro", 18)),
57 ),
58 )
59 .add_next_step(
60 NextStep::new("Run auto-fixer for formatting issues").with_command("audit --fix"),
61 );
62
63 print!("{}", report.render(console));
64
65 println!("=== 4. Detailed Report View ===");
66 let detailed_report = report.with_detail_level(DetailLevel::Detailed);
67 print!("{}", detailed_report.render(console));
68
69 println!("=== 5. Generator Diff View ===");
70 let diff = DiffBlock::new()
71 .add_change(
72 FileChange::new(FileAction::Added, "src/components/Footer.astro").with_delta("+1.2 kB"),
73 )
74 .add_change(FileChange::new(
75 FileAction::Modified,
76 "src/layouts/Layout.astro",
77 ))
78 .add_change(FileChange::new(
79 FileAction::Deleted,
80 "src/legacy/Footer.jsx",
81 ));
82 print!("{}", diff.render(console));
83}Sourcepub fn add_metric(self, metric: Metric) -> Self
pub fn add_metric(self, metric: Metric) -> Self
Adds a metric item to the summary grid.
Examples found in repository?
examples/report_demo.rs (line 40)
6fn main() {
7 let console = Console::stdout(ColorMode::Auto);
8
9 println!("=== 1. Verdict & Status ===");
10 println!(
11 "{}",
12 Verdict::Passed.render(console, "Configuration validated cleanly")
13 );
14 println!(
15 "{}",
16 Verdict::Warning.render(console, "3 non-critical findings detected")
17 );
18 println!(
19 "{}",
20 Verdict::Failed.render(console, "Build failed: 2 errors")
21 );
22 println!();
23
24 println!("=== 2. Error / Prerequisite Block ===");
25 let err_block = ErrorBlock::new("Required toolchain is unavailable")
26 .with_explanation("The configured version is not installed.")
27 .with_remedy("Install the required toolchain:")
28 .add_command("toolchain install stable");
29 print!("{}", err_block.render(console));
30
31 println!("=== 3. Decision-Oriented Report (Compact) ===");
32 let report = Report::new("Site audit v1.2.0", Verdict::Warning)
33 .add_scope_note(ScopeNote::new(
34 "Scope warnings",
35 vec![
36 "Git history partial".to_string(),
37 "1 file skipped".to_string(),
38 ],
39 ))
40 .add_metric(Metric::new("Errors", "0"))
41 .add_metric(Metric::new("Warnings", "4").with_trend(runemark::Trend::Negative, "+2"))
42 .add_metric(Metric::new("Score", "94/100").with_trend(runemark::Trend::Positive, "+5%"))
43 .add_group(
44 FindingGroup::new("Accessibility Violations")
45 .add_finding(
46 Finding::new(runemark::Tone::Warning, "Image missing alt attribute")
47 .with_rule_id("a11y/img-alt")
48 .with_badge(runemark::Badge::quick_win())
49 .with_confidence(runemark::Confidence::High)
50 .with_location(Location::file_line_col("src/pages/index.astro", 42, 10))
51 .with_remedy("Add alt=\"...\" description to <img> tag"),
52 )
53 .add_finding(
54 Finding::new(runemark::Tone::Warning, "Low contrast ratio on hero button")
55 .with_rule_id("a11y/contrast")
56 .with_location(Location::file_line("src/components/Hero.astro", 18)),
57 ),
58 )
59 .add_next_step(
60 NextStep::new("Run auto-fixer for formatting issues").with_command("audit --fix"),
61 );
62
63 print!("{}", report.render(console));
64
65 println!("=== 4. Detailed Report View ===");
66 let detailed_report = report.with_detail_level(DetailLevel::Detailed);
67 print!("{}", detailed_report.render(console));
68
69 println!("=== 5. Generator Diff View ===");
70 let diff = DiffBlock::new()
71 .add_change(
72 FileChange::new(FileAction::Added, "src/components/Footer.astro").with_delta("+1.2 kB"),
73 )
74 .add_change(FileChange::new(
75 FileAction::Modified,
76 "src/layouts/Layout.astro",
77 ))
78 .add_change(FileChange::new(
79 FileAction::Deleted,
80 "src/legacy/Footer.jsx",
81 ));
82 print!("{}", diff.render(console));
83}Sourcepub fn add_group(self, group: FindingGroup) -> Self
pub fn add_group(self, group: FindingGroup) -> Self
Adds a group of findings.
Examples found in repository?
examples/report_demo.rs (lines 43-58)
6fn main() {
7 let console = Console::stdout(ColorMode::Auto);
8
9 println!("=== 1. Verdict & Status ===");
10 println!(
11 "{}",
12 Verdict::Passed.render(console, "Configuration validated cleanly")
13 );
14 println!(
15 "{}",
16 Verdict::Warning.render(console, "3 non-critical findings detected")
17 );
18 println!(
19 "{}",
20 Verdict::Failed.render(console, "Build failed: 2 errors")
21 );
22 println!();
23
24 println!("=== 2. Error / Prerequisite Block ===");
25 let err_block = ErrorBlock::new("Required toolchain is unavailable")
26 .with_explanation("The configured version is not installed.")
27 .with_remedy("Install the required toolchain:")
28 .add_command("toolchain install stable");
29 print!("{}", err_block.render(console));
30
31 println!("=== 3. Decision-Oriented Report (Compact) ===");
32 let report = Report::new("Site audit v1.2.0", Verdict::Warning)
33 .add_scope_note(ScopeNote::new(
34 "Scope warnings",
35 vec![
36 "Git history partial".to_string(),
37 "1 file skipped".to_string(),
38 ],
39 ))
40 .add_metric(Metric::new("Errors", "0"))
41 .add_metric(Metric::new("Warnings", "4").with_trend(runemark::Trend::Negative, "+2"))
42 .add_metric(Metric::new("Score", "94/100").with_trend(runemark::Trend::Positive, "+5%"))
43 .add_group(
44 FindingGroup::new("Accessibility Violations")
45 .add_finding(
46 Finding::new(runemark::Tone::Warning, "Image missing alt attribute")
47 .with_rule_id("a11y/img-alt")
48 .with_badge(runemark::Badge::quick_win())
49 .with_confidence(runemark::Confidence::High)
50 .with_location(Location::file_line_col("src/pages/index.astro", 42, 10))
51 .with_remedy("Add alt=\"...\" description to <img> tag"),
52 )
53 .add_finding(
54 Finding::new(runemark::Tone::Warning, "Low contrast ratio on hero button")
55 .with_rule_id("a11y/contrast")
56 .with_location(Location::file_line("src/components/Hero.astro", 18)),
57 ),
58 )
59 .add_next_step(
60 NextStep::new("Run auto-fixer for formatting issues").with_command("audit --fix"),
61 );
62
63 print!("{}", report.render(console));
64
65 println!("=== 4. Detailed Report View ===");
66 let detailed_report = report.with_detail_level(DetailLevel::Detailed);
67 print!("{}", detailed_report.render(console));
68
69 println!("=== 5. Generator Diff View ===");
70 let diff = DiffBlock::new()
71 .add_change(
72 FileChange::new(FileAction::Added, "src/components/Footer.astro").with_delta("+1.2 kB"),
73 )
74 .add_change(FileChange::new(
75 FileAction::Modified,
76 "src/layouts/Layout.astro",
77 ))
78 .add_change(FileChange::new(
79 FileAction::Deleted,
80 "src/legacy/Footer.jsx",
81 ));
82 print!("{}", diff.render(console));
83}Sourcepub fn add_scope_note(self, note: ScopeNote) -> Self
pub fn add_scope_note(self, note: ScopeNote) -> Self
Adds a scope note with heading and items.
Examples found in repository?
examples/report_demo.rs (lines 33-39)
6fn main() {
7 let console = Console::stdout(ColorMode::Auto);
8
9 println!("=== 1. Verdict & Status ===");
10 println!(
11 "{}",
12 Verdict::Passed.render(console, "Configuration validated cleanly")
13 );
14 println!(
15 "{}",
16 Verdict::Warning.render(console, "3 non-critical findings detected")
17 );
18 println!(
19 "{}",
20 Verdict::Failed.render(console, "Build failed: 2 errors")
21 );
22 println!();
23
24 println!("=== 2. Error / Prerequisite Block ===");
25 let err_block = ErrorBlock::new("Required toolchain is unavailable")
26 .with_explanation("The configured version is not installed.")
27 .with_remedy("Install the required toolchain:")
28 .add_command("toolchain install stable");
29 print!("{}", err_block.render(console));
30
31 println!("=== 3. Decision-Oriented Report (Compact) ===");
32 let report = Report::new("Site audit v1.2.0", Verdict::Warning)
33 .add_scope_note(ScopeNote::new(
34 "Scope warnings",
35 vec![
36 "Git history partial".to_string(),
37 "1 file skipped".to_string(),
38 ],
39 ))
40 .add_metric(Metric::new("Errors", "0"))
41 .add_metric(Metric::new("Warnings", "4").with_trend(runemark::Trend::Negative, "+2"))
42 .add_metric(Metric::new("Score", "94/100").with_trend(runemark::Trend::Positive, "+5%"))
43 .add_group(
44 FindingGroup::new("Accessibility Violations")
45 .add_finding(
46 Finding::new(runemark::Tone::Warning, "Image missing alt attribute")
47 .with_rule_id("a11y/img-alt")
48 .with_badge(runemark::Badge::quick_win())
49 .with_confidence(runemark::Confidence::High)
50 .with_location(Location::file_line_col("src/pages/index.astro", 42, 10))
51 .with_remedy("Add alt=\"...\" description to <img> tag"),
52 )
53 .add_finding(
54 Finding::new(runemark::Tone::Warning, "Low contrast ratio on hero button")
55 .with_rule_id("a11y/contrast")
56 .with_location(Location::file_line("src/components/Hero.astro", 18)),
57 ),
58 )
59 .add_next_step(
60 NextStep::new("Run auto-fixer for formatting issues").with_command("audit --fix"),
61 );
62
63 print!("{}", report.render(console));
64
65 println!("=== 4. Detailed Report View ===");
66 let detailed_report = report.with_detail_level(DetailLevel::Detailed);
67 print!("{}", detailed_report.render(console));
68
69 println!("=== 5. Generator Diff View ===");
70 let diff = DiffBlock::new()
71 .add_change(
72 FileChange::new(FileAction::Added, "src/components/Footer.astro").with_delta("+1.2 kB"),
73 )
74 .add_change(FileChange::new(
75 FileAction::Modified,
76 "src/layouts/Layout.astro",
77 ))
78 .add_change(FileChange::new(
79 FileAction::Deleted,
80 "src/legacy/Footer.jsx",
81 ));
82 print!("{}", diff.render(console));
83}Sourcepub fn add_vocabulary(self, vocab: Vocabulary) -> Self
pub fn add_vocabulary(self, vocab: Vocabulary) -> Self
Adds a vocabulary note (dry-run, baseline, empty state).
Sourcepub fn add_next_step(self, step: NextStep) -> Self
pub fn add_next_step(self, step: NextStep) -> Self
Adds a next-step recommendation.
Examples found in repository?
examples/report_demo.rs (lines 59-61)
6fn main() {
7 let console = Console::stdout(ColorMode::Auto);
8
9 println!("=== 1. Verdict & Status ===");
10 println!(
11 "{}",
12 Verdict::Passed.render(console, "Configuration validated cleanly")
13 );
14 println!(
15 "{}",
16 Verdict::Warning.render(console, "3 non-critical findings detected")
17 );
18 println!(
19 "{}",
20 Verdict::Failed.render(console, "Build failed: 2 errors")
21 );
22 println!();
23
24 println!("=== 2. Error / Prerequisite Block ===");
25 let err_block = ErrorBlock::new("Required toolchain is unavailable")
26 .with_explanation("The configured version is not installed.")
27 .with_remedy("Install the required toolchain:")
28 .add_command("toolchain install stable");
29 print!("{}", err_block.render(console));
30
31 println!("=== 3. Decision-Oriented Report (Compact) ===");
32 let report = Report::new("Site audit v1.2.0", Verdict::Warning)
33 .add_scope_note(ScopeNote::new(
34 "Scope warnings",
35 vec![
36 "Git history partial".to_string(),
37 "1 file skipped".to_string(),
38 ],
39 ))
40 .add_metric(Metric::new("Errors", "0"))
41 .add_metric(Metric::new("Warnings", "4").with_trend(runemark::Trend::Negative, "+2"))
42 .add_metric(Metric::new("Score", "94/100").with_trend(runemark::Trend::Positive, "+5%"))
43 .add_group(
44 FindingGroup::new("Accessibility Violations")
45 .add_finding(
46 Finding::new(runemark::Tone::Warning, "Image missing alt attribute")
47 .with_rule_id("a11y/img-alt")
48 .with_badge(runemark::Badge::quick_win())
49 .with_confidence(runemark::Confidence::High)
50 .with_location(Location::file_line_col("src/pages/index.astro", 42, 10))
51 .with_remedy("Add alt=\"...\" description to <img> tag"),
52 )
53 .add_finding(
54 Finding::new(runemark::Tone::Warning, "Low contrast ratio on hero button")
55 .with_rule_id("a11y/contrast")
56 .with_location(Location::file_line("src/components/Hero.astro", 18)),
57 ),
58 )
59 .add_next_step(
60 NextStep::new("Run auto-fixer for formatting issues").with_command("audit --fix"),
61 );
62
63 print!("{}", report.render(console));
64
65 println!("=== 4. Detailed Report View ===");
66 let detailed_report = report.with_detail_level(DetailLevel::Detailed);
67 print!("{}", detailed_report.render(console));
68
69 println!("=== 5. Generator Diff View ===");
70 let diff = DiffBlock::new()
71 .add_change(
72 FileChange::new(FileAction::Added, "src/components/Footer.astro").with_delta("+1.2 kB"),
73 )
74 .add_change(FileChange::new(
75 FileAction::Modified,
76 "src/layouts/Layout.astro",
77 ))
78 .add_change(FileChange::new(
79 FileAction::Deleted,
80 "src/legacy/Footer.jsx",
81 ));
82 print!("{}", diff.render(console));
83}Source§impl Report
impl Report
Sourcepub fn write_to(
&self,
console: Console,
writer: &mut (impl Write + ?Sized),
) -> Result<()>
pub fn write_to( &self, console: Console, writer: &mut (impl Write + ?Sized), ) -> Result<()>
Writes the report formatted directly to a writer.
Sourcepub fn write_with_options(
&self,
console: Console,
options: RenderOptions,
writer: &mut (impl Write + ?Sized),
) -> Result<()>
pub fn write_with_options( &self, console: Console, options: RenderOptions, writer: &mut (impl Write + ?Sized), ) -> Result<()>
Writes the report with host-provided layout constraints.
Sourcepub fn render(&self, console: Console) -> String
pub fn render(&self, console: Console) -> String
Renders the report as a formatted String.
Examples found in repository?
examples/report_demo.rs (line 63)
6fn main() {
7 let console = Console::stdout(ColorMode::Auto);
8
9 println!("=== 1. Verdict & Status ===");
10 println!(
11 "{}",
12 Verdict::Passed.render(console, "Configuration validated cleanly")
13 );
14 println!(
15 "{}",
16 Verdict::Warning.render(console, "3 non-critical findings detected")
17 );
18 println!(
19 "{}",
20 Verdict::Failed.render(console, "Build failed: 2 errors")
21 );
22 println!();
23
24 println!("=== 2. Error / Prerequisite Block ===");
25 let err_block = ErrorBlock::new("Required toolchain is unavailable")
26 .with_explanation("The configured version is not installed.")
27 .with_remedy("Install the required toolchain:")
28 .add_command("toolchain install stable");
29 print!("{}", err_block.render(console));
30
31 println!("=== 3. Decision-Oriented Report (Compact) ===");
32 let report = Report::new("Site audit v1.2.0", Verdict::Warning)
33 .add_scope_note(ScopeNote::new(
34 "Scope warnings",
35 vec![
36 "Git history partial".to_string(),
37 "1 file skipped".to_string(),
38 ],
39 ))
40 .add_metric(Metric::new("Errors", "0"))
41 .add_metric(Metric::new("Warnings", "4").with_trend(runemark::Trend::Negative, "+2"))
42 .add_metric(Metric::new("Score", "94/100").with_trend(runemark::Trend::Positive, "+5%"))
43 .add_group(
44 FindingGroup::new("Accessibility Violations")
45 .add_finding(
46 Finding::new(runemark::Tone::Warning, "Image missing alt attribute")
47 .with_rule_id("a11y/img-alt")
48 .with_badge(runemark::Badge::quick_win())
49 .with_confidence(runemark::Confidence::High)
50 .with_location(Location::file_line_col("src/pages/index.astro", 42, 10))
51 .with_remedy("Add alt=\"...\" description to <img> tag"),
52 )
53 .add_finding(
54 Finding::new(runemark::Tone::Warning, "Low contrast ratio on hero button")
55 .with_rule_id("a11y/contrast")
56 .with_location(Location::file_line("src/components/Hero.astro", 18)),
57 ),
58 )
59 .add_next_step(
60 NextStep::new("Run auto-fixer for formatting issues").with_command("audit --fix"),
61 );
62
63 print!("{}", report.render(console));
64
65 println!("=== 4. Detailed Report View ===");
66 let detailed_report = report.with_detail_level(DetailLevel::Detailed);
67 print!("{}", detailed_report.render(console));
68
69 println!("=== 5. Generator Diff View ===");
70 let diff = DiffBlock::new()
71 .add_change(
72 FileChange::new(FileAction::Added, "src/components/Footer.astro").with_delta("+1.2 kB"),
73 )
74 .add_change(FileChange::new(
75 FileAction::Modified,
76 "src/layouts/Layout.astro",
77 ))
78 .add_change(FileChange::new(
79 FileAction::Deleted,
80 "src/legacy/Footer.jsx",
81 ));
82 print!("{}", diff.render(console));
83}Sourcepub fn render_with_options(
&self,
console: Console,
options: RenderOptions,
) -> String
pub fn render_with_options( &self, console: Console, options: RenderOptions, ) -> String
Renders the report with host-provided layout constraints.
Trait Implementations§
impl Eq for Report
impl StructuralPartialEq for Report
Auto Trait Implementations§
impl Freeze for Report
impl RefUnwindSafe for Report
impl Send for Report
impl Sync for Report
impl Unpin for Report
impl UnsafeUnpin for Report
impl UnwindSafe for Report
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more