[INFO] cloning repository https://github.com/nizamawscloud/aws-cloudformation-cloudformation-guard
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nizamawscloud/aws-cloudformation-cloudformation-guard" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnizamawscloud%2Faws-cloudformation-cloudformation-guard", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnizamawscloud%2Faws-cloudformation-cloudformation-guard'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ca562b92717448a68b720b3d7cb07f58d44de4d9
[INFO] testing nizamawscloud/aws-cloudformation-cloudformation-guard against master#2fd6efc32704647e64d3d646d21c4c68eae100e4 for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnizamawscloud%2Faws-cloudformation-cloudformation-guard" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/nizamawscloud/aws-cloudformation-cloudformation-guard
[INFO] finished tweaking git repo https://github.com/nizamawscloud/aws-cloudformation-cloudformation-guard
[INFO] tweaked toml for git repo https://github.com/nizamawscloud/aws-cloudformation-cloudformation-guard written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/nizamawscloud/aws-cloudformation-cloudformation-guard on toolchain 2fd6efc32704647e64d3d646d21c4c68eae100e4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/nizamawscloud/aws-cloudformation-cloudformation-guard already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded pin-project-lite v0.2.6
[INFO] [stderr]   Downloaded async-stream-impl v0.3.2
[INFO] [stderr]   Downloaded futures-macro v0.3.15
[INFO] [stderr]   Downloaded thread_local v1.1.3
[INFO] [stderr]   Downloaded slab v0.4.3
[INFO] [stderr]   Downloaded futures-task v0.3.15
[INFO] [stderr]   Downloaded socket2 v0.4.0
[INFO] [stderr]   Downloaded futures v0.3.15
[INFO] [stderr]   Downloaded tracing v0.1.26
[INFO] [stderr]   Downloaded async-stream v0.3.2
[INFO] [stderr]   Downloaded enumflags2_derive v0.7.0
[INFO] [stderr]   Downloaded colored v2.0.0
[INFO] [stderr]   Downloaded enumflags2 v0.7.1
[INFO] [stderr]   Downloaded pin-project v1.0.7
[INFO] [stderr]   Downloaded itertools v0.4.19
[INFO] [stderr]   Downloaded hyper v0.14.8
[INFO] [stderr]   Downloaded tracing-attributes v0.1.15
[INFO] [stderr]   Downloaded sharded-slab v0.1.1
[INFO] [stderr]   Downloaded syn v1.0.72
[INFO] [stderr]   Downloaded http v0.2.4
[INFO] [stderr]   Downloaded tokio v1.6.1
[INFO] [stderr]   Downloaded tracing-subscriber v0.2.18
[INFO] [stderr]   Downloaded once_cell v1.7.2
[INFO] [stderr]   Downloaded nom v5.1.2
[INFO] [stderr]   Downloaded futures-util v0.3.15
[INFO] [stderr]   Downloaded tracing-core v0.1.18
[INFO] [stderr]   Downloaded mio v0.7.11
[INFO] [stderr]   Downloaded nom_locate v2.1.0
[INFO] [stderr]   Downloaded serde_yaml v0.8.17
[INFO] [stderr]   Downloaded futures-executor v0.3.15
[INFO] [stderr]   Downloaded httparse v1.4.1
[INFO] [stderr]   Downloaded pin-project-internal v1.0.7
[INFO] [stderr]   Downloaded futures-core v0.3.15
[INFO] [stderr]   Downloaded tokio-stream v0.1.6
[INFO] [stderr]   Downloaded bytecount v0.6.2
[INFO] [stderr]   Downloaded yaml-rust v0.4.5
[INFO] [stderr]   Downloaded string-builder v0.2.0
[INFO] [stderr]   Downloaded futures-channel v0.3.15
[INFO] [stderr]   Downloaded futures-io v0.3.15
[INFO] [stderr]   Downloaded futures-sink v0.3.15
[INFO] [stderr]   Downloaded http-body v0.4.2
[INFO] [stderr]   Downloaded lexical-core v0.7.6
[INFO] [stderr]   Downloaded tracing-error v0.1.2
[INFO] [stderr]   Downloaded lambda_runtime v0.3.0
[INFO] [stderr]   Downloaded proc-macro-nested v0.1.7
[INFO] [stderr]   Downloaded simple_logger v1.11.0
[INFO] [stderr]   Downloaded tokio-macros v1.2.0
[INFO] [stderr]   Downloaded colored v1.9.3
[INFO] [stderr]   Downloaded bytes v1.0.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9593a93f78a8ace36c3ab2dec80c93926cf14bd022cb7472ad08bac2ec495320
[INFO] running `Command { std: "docker" "start" "-a" "9593a93f78a8ace36c3ab2dec80c93926cf14bd022cb7472ad08bac2ec495320", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9593a93f78a8ace36c3ab2dec80c93926cf14bd022cb7472ad08bac2ec495320", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9593a93f78a8ace36c3ab2dec80c93926cf14bd022cb7472ad08bac2ec495320", kill_on_drop: false }`
[INFO] [stdout] 9593a93f78a8ace36c3ab2dec80c93926cf14bd022cb7472ad08bac2ec495320
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 73f4c06e33066dbcc367e3851fb9a3f395166cc5ddffc56d7f1833970b32a300
[INFO] running `Command { std: "docker" "start" "-a" "73f4c06e33066dbcc367e3851fb9a3f395166cc5ddffc56d7f1833970b32a300", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-xid v0.2.2
[INFO] [stderr]    Compiling syn v1.0.72
[INFO] [stderr]    Compiling libc v0.2.94
[INFO] [stderr]    Compiling memchr v2.4.0
[INFO] [stderr]    Compiling log v0.4.14
[INFO] [stderr]    Compiling pin-project-lite v0.2.6
[INFO] [stderr]    Compiling futures-core v0.3.15
[INFO] [stderr]    Compiling serde_derive v1.0.126
[INFO] [stderr]    Compiling proc-macro2 v1.0.26
[INFO] [stderr]    Compiling serde v1.0.126
[INFO] [stderr]    Compiling proc-macro-hack v0.5.19
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling futures-macro v0.3.15
[INFO] [stderr]    Compiling proc-macro-nested v0.1.7
[INFO] [stderr]    Compiling futures-task v0.3.15
[INFO] [stderr]    Compiling futures-channel v0.3.15
[INFO] [stderr]    Compiling itoa v0.4.7
[INFO] [stderr]    Compiling quote v1.0.9
[INFO] [stderr]    Compiling futures-util v0.3.15
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling indexmap v1.6.2
[INFO] [stderr]    Compiling lexical-core v0.7.6
[INFO] [stderr]    Compiling bytes v1.0.1
[INFO] [stderr]    Compiling futures-sink v0.3.15
[INFO] [stderr]    Compiling nom v5.1.2
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling tracing-core v0.1.18
[INFO] [stderr]    Compiling tokio v1.6.1
[INFO] [stderr]    Compiling slab v0.4.3
[INFO] [stderr]    Compiling serde_json v1.0.64
[INFO] [stderr]    Compiling futures-io v0.3.15
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling arrayvec v0.5.2
[INFO] [stderr]    Compiling time v0.1.44
[INFO] [stderr]    Compiling num_cpus v1.13.0
[INFO] [stderr]    Compiling mio v0.7.11
[INFO] [stderr]    Compiling httparse v1.4.1
[INFO] [stderr]    Compiling linked-hash-map v0.5.4
[INFO] [stderr]    Compiling once_cell v1.7.2
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling http v0.2.4
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling thread_local v1.1.3
[INFO] [stderr]    Compiling chrono v0.4.19
[INFO] [stderr]    Compiling colored v1.9.3
[INFO] [stderr]    Compiling aho-corasick v0.7.18
[INFO] [stderr]    Compiling sharded-slab v0.1.1
[INFO] [stderr]    Compiling dtoa v0.4.8
[INFO] [stderr]    Compiling ansi_term v0.11.0
[INFO] [stderr]    Compiling regex-syntax v0.6.25
[INFO] [stderr]    Compiling try-lock v0.2.3
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]    Compiling bytecount v0.6.2
[INFO] [stderr]    Compiling unicode-segmentation v1.7.1
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling walkdir v2.3.2
[INFO] [stderr]    Compiling clap v2.33.3
[INFO] [stderr]    Compiling heck v0.3.2
[INFO] [stderr]    Compiling want v0.3.0
[INFO] [stderr]    Compiling tracing-subscriber v0.2.18
[INFO] [stderr]    Compiling simple_logger v1.11.0
[INFO] [stderr]    Compiling http-body v0.4.2
[INFO] [stderr]    Compiling colored v2.0.0
[INFO] [stderr]    Compiling socket2 v0.4.0
[INFO] [stderr]    Compiling string-builder v0.2.0
[INFO] [stderr]    Compiling tower-service v0.3.1
[INFO] [stderr]    Compiling httpdate v1.0.1
[INFO] [stderr]    Compiling itertools v0.4.19
[INFO] [stderr]    Compiling regex v1.5.4
[INFO] [stderr]    Compiling nom_locate v2.1.0
[INFO] [stderr]    Compiling tokio-macros v1.2.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.15
[INFO] [stderr]    Compiling enumflags2_derive v0.7.0
[INFO] [stderr]    Compiling pin-project-internal v1.0.7
[INFO] [stderr]    Compiling enumflags2 v0.7.1
[INFO] [stderr]    Compiling async-stream-impl v0.3.2
[INFO] [stderr]    Compiling async-stream v0.3.2
[INFO] [stderr]    Compiling tracing v0.1.26
[INFO] [stderr]    Compiling pin-project v1.0.7
[INFO] [stderr]    Compiling tracing-error v0.1.2
[INFO] [stderr]    Compiling futures-executor v0.3.15
[INFO] [stderr]    Compiling futures v0.3.15
[INFO] [stderr]    Compiling tokio-stream v0.1.6
[INFO] [stderr]    Compiling hyper v0.14.8
[INFO] [stderr]    Compiling serde_yaml v0.8.17
[INFO] [stderr]    Compiling cfn-guard v2.0.3 (/opt/rustwide/workdir/guard)
[INFO] [stdout] warning: unused import: `WhenConditions`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:9:114
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::rules::exprs::{GuardClause, GuardNamedRuleClause, QueryPart, RuleClause, TypeBlock, BlockGuardClause, WhenConditions, When...
[INFO] [stdout]   |                                                                                                                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:684:12
[INFO] [stdout]     |
[INFO] [stdout] 684 |         Ok('outer: loop {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]  --> guard/src/rules/path_value.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ALPHABETICAL` and `LAST_MODIFIED`
[INFO] [stdout]   --> guard/src/commands/validate.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::commands::{ALPHABETICAL, LAST_MODIFIED};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regular_ordering`
[INFO] [stdout]   --> guard/src/commands/validate.rs:12:83
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::commands::files::{alpabetical, get_files, iterate_over, last_modified, regular_ordering};
[INFO] [stdout]    |                                                                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use itertools::Itertools;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `path_value`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:5:36
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::{EvaluationType, path_value, Status};
[INFO] [stdout]   |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules::path_value::Path`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::rules::path_value::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorKind` and `Error`
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::rules::errors::{Error, ErrorKind};
[INFO] [stdout]    |                            ^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::Ref`
[INFO] [stdout]  --> guard/src/commands/tracker.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::Ref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QueryPart`
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::rules::exprs::{QueryPart, AccessQuery};
[INFO] [stdout]   |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> guard/src/migrate/parser.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> guard/src/commands/validate.rs:45:28
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut Write,
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut dyn Write,
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::Colorize`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::Colorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BitFlag`
[INFO] [stdout]   --> guard/src/commands/validate.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 | use enumflags2::{BitFlag, BitFlags};
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling lambda_runtime v0.3.0
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:86:41
[INFO] [stdout]    |
[INFO] [stdout] 86 |               skipped: HashSet<String>, longest_rule_len: usize) -> crate::rules::Result<()>
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     longest_rule_len: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:936:5
[INFO] [stdout]     |
[INFO] [stdout] 935 | pub(crate) struct RootScope<'s, 'loc> {
[INFO] [stdout]     |                   --------- field in this struct
[INFO] [stdout] 936 |     rules: &'s RulesFile<'loc>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RootScope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_type` is never read
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1034:5
[INFO] [stdout]      |
[INFO] [stdout] 1033 | pub(crate) struct BlockScope<'s, T> {
[INFO] [stdout]      |                   ---------- field in this struct
[INFO] [stdout] 1034 |     block_type: &'s Block<'s, T>,
[INFO] [stdout]      |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `comparison` is never used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1151:19
[INFO] [stdout]      |
[INFO] [stdout] 1129 | impl<'s> AutoReport<'s> {
[INFO] [stdout]      | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1151 |     pub(super) fn comparison(&mut self, status: Status, from: Option<PathAwareValue>, to: Option<PathAwareValue>, cmp: (CmpOperato...
[INFO] [stdout]      |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhenGuardBlockClause` is never constructed
[INFO] [stdout]    --> guard/src/rules/exprs.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub(crate) struct WhenGuardBlockClause<'loc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `context`, `span`, and `kind` are never used
[INFO] [stdout]   --> guard/src/rules/parser.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl<'a> ParserError<'a> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 46 |     pub(crate) fn context(&self) -> &str {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub(crate) fn span(&self) -> &Span<'a> {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub(crate) fn kind(&self) -> nom::error::ErrorKind {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clauses` is never used
[INFO] [stdout]     --> guard/src/rules/parser.rs:1122:4
[INFO] [stdout]      |
[INFO] [stdout] 1122 | fn clauses(input: Span) -> IResult<Span, Conjunctions<GuardClause>> {
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConjunctionsWrapper` is never constructed
[INFO] [stdout]     --> guard/src/rules/parser.rs:1532:19
[INFO] [stdout]      |
[INFO] [stdout] 1532 | pub(crate) struct ConjunctionsWrapper<'a>(pub(crate) Conjunctions<GuardClause<'a>>);
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_unary` and `is_binary` are never used
[INFO] [stdout]   --> guard/src/rules/values.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl CmpOperator {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 31 |     pub(crate) fn is_unary(&self) -> bool {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn is_binary(&self) -> bool { !self.is_unary() }
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_linked_hashmap` is never used
[INFO] [stdout]    --> guard/src/rules/values.rs:309:15
[INFO] [stdout]     |
[INFO] [stdout] 309 | pub(super) fn make_linked_hashmap<'a, I>(values: I) -> IndexMap<String, Value>
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `drop_last` and `extend_with_value` are never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl Path {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub(crate) fn drop_last(&mut self) -> &mut Self {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub(crate) fn extend_with_value(&self, part: &Value) -> Result<Path, Error> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_scalar` is never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:675:19
[INFO] [stdout]     |
[INFO] [stdout] 634 | impl PathAwareValue {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 675 |     pub(crate) fn is_scalar(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALPHABETICAL` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) const ALPHABETICAL: (&str, &str) = ("alphabetical", "a");
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAST_MODIFIED` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) const LAST_MODIFIED: (&str, &str) = ("last-modified", "l");
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RULES` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) const RULES: (&str, &str) = ("rules", "r");
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) const DATA: (&str, &str) = ("data", "d");
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_content` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) fn read_file_content(file: File) -> Result<String, std::io::Error> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_files` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) fn get_files<F>(file: &str, sort: F) -> Result<Vec<PathBuf>, Error>
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_files_with_filter` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub(crate) fn get_files_with_filter<S, F>(file: &str, sort: S, filter: F) -> Result<Vec<PathBuf>, Error>
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Iter` is never constructed
[INFO] [stdout]   --> guard/src/commands/files.rs:64:19
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub(crate) struct Iter<'i, T, C>
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iterate_over` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alpabetical` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:103:15
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub(crate) fn alpabetical(first : &walkdir::DirEntry, second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `last_modified` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub(crate) fn last_modified(first: &walkdir::DirEntry, second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `regular_ordering` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:120:15
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub(crate) fn regular_ordering(_first: &walkdir::DirEntry, _second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Type` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(crate) enum Type {
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OutputFormatType` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:37:17
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub(crate) enum OutputFormatType {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `report` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) trait Reporter : Debug {
[INFO] [stdout]    |                  -------- method in this trait
[INFO] [stdout] 44 |     fn report(&self,
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Validate` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate.rs:54:19
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) struct Validate {}
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Validate {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 57 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn validate_and_return_json(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `reporters`, `rules_file_name`, `data_file_name`, `verbose`, `print_json`, and `show_clause_failures` are never read
[INFO] [stdout]    --> guard/src/commands/validate.rs:272:5
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub(crate) struct ConsoleReporter<'r> {
[INFO] [stdout]     |                   --------------- fields in this struct
[INFO] [stdout] 271 |     root_context: StackTracker<'r>,
[INFO] [stdout] 272 |     reporters: &'r Vec<Box<dyn Reporter + 'r>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 273 |     rules_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 274 |     data_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 275 |     verbose: bool,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 276 |     print_json: bool,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 277 |     show_clause_failures: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConsoleReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `indent_spaces` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:280:4
[INFO] [stdout]     |
[INFO] [stdout] 280 | fn indent_spaces(indent: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_context` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:286:15
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub(super) fn print_context(cxt: &StatusContext, depth: usize) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_failing_clause` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:323:4
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn print_failing_clause(rules_file_name: &str, rule: &StatusContext, longest: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `report` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:381:8
[INFO] [stdout]     |
[INFO] [stdout] 362 | impl<'r, 'loc> ConsoleReporter<'r> {
[INFO] [stdout]     | ---------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 381 |     fn report(self) -> crate::rules::Result<()> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INDENT` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:434:7
[INFO] [stdout]     |
[INFO] [stdout] 434 | const INDENT: &str = "    ";
[INFO] [stdout]     |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_against_data_input` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:464:4
[INFO] [stdout]     |
[INFO] [stdout] 464 | fn evaluate_against_data_input<'r>(data_type: Type,
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenericSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct GenericSummary<'a> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl<'a> GenericSummary<'a> {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 25 |     pub(crate) fn new<'r>(data_file_name: &'r str,
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SingleLineSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | struct SingleLineSummary{}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retrieval_error_message` is never used
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn retrieval_error_message(rules_file: &str, data_file: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unary_error_message` is never used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn unary_error_message(rules_file: &str, data_file: &str, op_msg: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `binary_error_message` is never used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn binary_error_message(rules_file: &str, data_file: &str, op_msg: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Comparison` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:16:19
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(super) struct Comparison {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NameInfo` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(super) struct NameInfo<'a> {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `GenericReporter` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:40:18
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub(super) trait GenericReporter: Debug {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StructureType` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:52:17
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub(super) enum StructureType {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StructuredSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub(super) struct StructuredSummary {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl StructuredSummary {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 63 |     pub(super) fn new(hierarchy_type: StructureType) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DataOutput` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct DataOutput<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_name_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:108:15
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub(super) fn extract_name_info<'a>(rule_name: &'a str,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `colored_string` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:162:15
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub(super) fn colored_string(status: Option<Status>) -> ColoredString {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_all_failing_clauses` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:174:15
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub(super) fn find_all_failing_clauses(context: &StatusContext) -> Vec<&StatusContext> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_compliant_skipped_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:199:15
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(super) fn print_compliant_skipped_info(writer: &mut dyn Write,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_name_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:219:15
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub(super) fn print_name_info<R, U, B>(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SummaryType` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(super) enum SummaryType {
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SummaryTable` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(super) struct SummaryTable<'r> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:28:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<'a> SummaryTable<'a> {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 28 |     pub(crate) fn new<'r>(rules_file_name: &'r str, data_file_name: &'r str, summary_type: BitFlags<SummaryType>) -> SummaryTable<'r> {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_partition` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn print_partition(writer: &mut dyn Write,
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CfnReporter` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct CfnReporter<'a> {
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl<'a> CfnReporter<'a> {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 31 |     pub(crate) fn new<'r>(data_file_name: &'r str,
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SingleLineReporter` is never constructed
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | struct SingleLineReporter {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rulegen` is never constructed
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub(crate) struct Rulegen {}
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Rulegen {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 17 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_template_and_call_gen` is never used
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn parse_template_and_call_gen(template_contents: &str) -> HashMap<String, HashMap<String, HashSet<String>>>{
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_rules` is never used
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn gen_rules(cfn_resources: HashMap<String, Value>) -> HashMap<String, HashMap<String, HashSet<String>>> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_rules` is never used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn print_rules(rule_map : HashMap<String, HashMap<String, HashSet<String>>>, mut writer : Box<dyn std::io::Write>) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Test` is never constructed
[INFO] [stdout]   --> guard/src/commands/test.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct Test {}
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/test.rs:26:19
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Test {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 26 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestExpectations` is never constructed
[INFO] [stdout]    --> guard/src/commands/test.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | struct TestExpectations {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestSpec` is never constructed
[INFO] [stdout]    --> guard/src/commands/test.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | struct TestSpec {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_with_data` is never used
[INFO] [stdout]    --> guard/src/commands/test.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn test_with_data(test_data_files: &[PathBuf], rules: &RulesFile<'_>, verbose: bool) -> Result<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_test_case_report` is never used
[INFO] [stdout]    --> guard/src/commands/test.rs:188:16
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub (crate) fn print_test_case_report(by_result: &HashMap<String, indexmap::IndexSet<String>>) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseTree` is never constructed
[INFO] [stdout]  --> guard/src/commands/parse_tree.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(crate) struct ParseTree {}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/parse_tree.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ParseTree {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 10 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Migrate` is never constructed
[INFO] [stdout]   --> guard/src/commands/migrate.rs:24:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub(crate) struct Migrate {}
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Migrate {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 27 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `migrated_rules_by_type` is never used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:87:15
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub(crate) fn migrated_rules_by_type(rules: &[RuleLineType],
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aggregate_by_type` is never used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:110:15
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub(crate) fn aggregate_by_type(rules: &Vec<RuleLineType>) -> HashMap<TypeName, indexmap::IndexSet<&Clause>> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_resource_types_in_ruleset` is never used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub (crate) fn get_resource_types_in_ruleset(rules: &Vec<RuleLineType>) -> Result<Vec<TypeName>> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `migrate_rules` is never used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:149:16
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub (crate) fn migrate_rules(rules: Vec<RuleLineType>) -> Result<String> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetadataAppender` is never constructed
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(super) struct MetadataAppender<'d> {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DummyEval` is never constructed
[INFO] [stdout]  --> guard/src/commands/common_test_helpers.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(super) struct DummyEval{}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Command` is never used
[INFO] [stdout]  --> guard/src/command.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) trait Command {
[INFO] [stdout]   |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OldGuardValues` is never used
[INFO] [stdout]   --> guard/src/migrate/parser.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum OldGuardValues {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Assignment` is never constructed
[INFO] [stdout]   --> guard/src/migrate/parser.rs:44:19
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub(crate) struct Assignment {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CmpOperator` is never used
[INFO] [stdout]   --> guard/src/migrate/parser.rs:56:17
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) enum CmpOperator {
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PropertyComparison` is never constructed
[INFO] [stdout]   --> guard/src/migrate/parser.rs:82:19
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub(crate) struct PropertyComparison {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseRule` is never constructed
[INFO] [stdout]    --> guard/src/migrate/parser.rs:109:19
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub(crate) struct BaseRule {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConditionalRule` is never constructed
[INFO] [stdout]    --> guard/src/migrate/parser.rs:128:19
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub(crate) struct ConditionalRule {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Rule` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub(crate) enum Rule {
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Clause` is never constructed
[INFO] [stdout]    --> guard/src/migrate/parser.rs:157:19
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub(crate) struct Clause {
[INFO] [stdout]     |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RuleLineType` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:171:17
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub(crate) enum RuleLineType {
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_variable_dereference` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:195:16
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub (crate) fn parse_variable_dereference(input: Span) -> IResult<Span, String> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_complete_value` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:202:27
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub(in crate::migrate) fn parse_complete_value(input: Span) -> IResult<Span, Span> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `comment` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:216:27
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub(in crate::migrate) fn comment(input: Span) ->IResult<Span, String> {
[INFO] [stdout]     |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_old_guard_value` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:222:28
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub (in crate::migrate) fn parse_old_guard_value(input:Span) -> IResult<Span, OldGuardValues> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assignment` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:240:15
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub(crate) fn assignment(input: Span) -> IResult<Span, Assignment> {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `value_operator` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:267:27
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub(in crate::migrate) fn value_operator(input: Span) -> IResult<Span, CmpOperator> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `property_path` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:290:27
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub(in crate::migrate) fn property_path(input: Span) -> IResult<Span, String> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `property_comparison` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:297:27
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub(in crate::migrate) fn property_comparison(input: Span) -> IResult<Span, PropertyComparison> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `base_rule` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:315:27
[INFO] [stdout]     |
[INFO] [stdout] 315 | pub(in crate::migrate) fn base_rule(input: Span) -> IResult<Span, BaseRule> {
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `conditional_rule` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:339:27
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub(in crate::migrate) fn conditional_rule(input: Span) -> IResult<Span, ConditionalRule> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom_message` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:361:27
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub(in crate::migrate) fn custom_message(input: Span) -> IResult<Span, String> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rule` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:368:27
[INFO] [stdout]     |
[INFO] [stdout] 368 | pub(in crate::migrate) fn rule(input: Span) -> IResult<Span, Rule> {
[INFO] [stdout]     |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clause` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:381:27
[INFO] [stdout]     |
[INFO] [stdout] 381 | pub(in crate::migrate) fn clause(input: Span) -> IResult<Span, Clause> {
[INFO] [stdout]     |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_line` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:388:27
[INFO] [stdout]     |
[INFO] [stdout] 388 | pub(in crate::migrate) fn empty_line(input: Span) -> IResult<Span, RuleLineType> {
[INFO] [stdout]     |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rule_line` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:394:27
[INFO] [stdout]     |
[INFO] [stdout] 394 | pub(in crate::migrate) fn rule_line(input: Span) ->IResult<Span, RuleLineType> {
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rules_file` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:408:15
[INFO] [stdout]     |
[INFO] [stdout] 408 | pub(crate) fn parse_rules_file(input: &String, file_name: &String) -> Result<Vec<RuleLineType>, Error> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `str`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 |     data: &str,
[INFO] [stdout]    |           ^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider using `*const u8` and a length instead
[INFO] [stdout]    = note: string slices have no C equivalent
[INFO] [stdout]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `str`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 |     rules: &str,
[INFO] [stdout]    |            ^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider using `*const u8` and a length instead
[INFO] [stdout]    = note: string slices have no C equivalent
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `std::result::Result<std::string::String, errors::Error>`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | ) -> crate::rules::Result<String> {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
[INFO] [stdout]    = note: enum has no representation hint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:950:9
[INFO] [stdout]     |
[INFO] [stdout] 950 | /         extract_variables(&rules.assignments,
[INFO] [stdout] 951 | |                           &mut literals,
[INFO] [stdout] 952 | |                           &mut pending);
[INFO] [stdout]     | |_______________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 950 |         let _ = extract_variables(&rules.assignments,
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1046:9
[INFO] [stdout]      |
[INFO] [stdout] 1046 | /         extract_variables(&block_type.assignments,
[INFO] [stdout] 1047 | |                           &mut literals,
[INFO] [stdout] 1048 | |                           &mut pending);
[INFO] [stdout]      | |_______________________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1046 |         let _ = extract_variables(&block_type.assignments,
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/rules/parser.rs:32:33
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span {
[INFO] [stdout]    |                                 ^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span<'_> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:645:27
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                           ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |        |       |     |
[INFO] [stdout]     |                           |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                           |        |       the same lifetime is hidden here
[INFO] [stdout]     |                           |        the same lifetime is hidden here
[INFO] [stdout]     |                           the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                               ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:659:26
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                          ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                          |        |       |     |
[INFO] [stdout]     |                          |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                          |        |       the same lifetime is hidden here
[INFO] [stdout]     |                          |        the same lifetime is hidden here
[INFO] [stdout]     |                          the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                              ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:843:40
[INFO] [stdout]     |
[INFO] [stdout] 841 | fn clause_with_map<'loc, A, M, T: 'loc>(input: Span<'loc>,
[INFO] [stdout]     |                                                     ---- the lifetime is named here
[INFO] [stdout] 842 |                          access: A,
[INFO] [stdout] 843 |                          mapper: M) -> IResult<Span<'loc>, T>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^----^^^^^
[INFO] [stdout]     |                                        |            |
[INFO] [stdout]     |                                        |            the same lifetime is named here
[INFO] [stdout]     |                                        the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]     |
[INFO] [stdout] 843 |                          mapper: M) -> IResult<'loc, Span<'loc>, T>
[INFO] [stdout]     |                                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1040:87
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                              ----                                     ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                              |                                        |            |
[INFO] [stdout]      |                                              |                                        |            the same lifetime is named here
[INFO] [stdout]      |                                              the lifetime is named here               the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<'loc, Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                                                                               +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1075:86
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                ----                                  ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                |                                     |            |
[INFO] [stdout]      |                                                |                                     |            the same lifetime is named here
[INFO] [stdout]      |                                                the lifetime is named here            the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<'loc, Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                                                              +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/values.rs:155:17
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 let _ = write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/commands/files.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |                                         ^^^^^^^^^^                   ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<'_, T, C>
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate.rs:135:17
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 reader.read_to_string(&mut context);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let _ = reader.read_to_string(&mut context);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 145 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 | /         match &self.hierarchy_type {
[INFO] [stdout] 97 | |             StructureType::JSON => writeln!(writer, "{}", serde_json::to_string(&value)?),
[INFO] [stdout] 98 | |             StructureType::YAML => writeln!(writer, "{}", serde_yaml::to_string(&value)?),
[INFO] [stdout] 99 | |         };
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _ = match &self.hierarchy_type {
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let _ = writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |             writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let _ = writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let _ = writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 125 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |             write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 202 |             let _ = write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |             writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |             let _ = writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |         writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let _ = writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |         writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let _ = writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let _ = writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let _ = writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `query:` in this pattern is redundant
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender.rs:42:59
[INFO] [stdout]    |
[INFO] [stdout] 42 | ...                   let AccessQuery { query: query, match_all: all } =
[INFO] [stdout]    |                                         ^^^^^^^^^^^^ help: use shorthand field pattern: `query`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let _ = writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let _ = writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling cfn-guard-lambda v2.0.3 (/opt/rustwide/workdir/guard-lambda)
[INFO] [stdout] warning: unnecessary parentheses around match arm expression
[INFO] [stdout]   --> guard-lambda/src/main.rs:39:23
[INFO] [stdout]    |
[INFO] [stdout] 39 |             Err(e) => (e.to_string()),
[INFO] [stdout]    |                       ^             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 39 -             Err(e) => (e.to_string()),
[INFO] [stdout] 39 +             Err(e) => e.to_string(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WhenConditions`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:9:114
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::rules::exprs::{GuardClause, GuardNamedRuleClause, QueryPart, RuleClause, TypeBlock, BlockGuardClause, WhenConditions, When...
[INFO] [stdout]   |                                                                                                                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:684:12
[INFO] [stdout]     |
[INFO] [stdout] 684 |         Ok('outer: loop {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]  --> guard/src/rules/path_value.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ALPHABETICAL` and `LAST_MODIFIED`
[INFO] [stdout]   --> guard/src/commands/validate.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::commands::{ALPHABETICAL, LAST_MODIFIED};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regular_ordering`
[INFO] [stdout]   --> guard/src/commands/validate.rs:12:83
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::commands::files::{alpabetical, get_files, iterate_over, last_modified, regular_ordering};
[INFO] [stdout]    |                                                                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use itertools::Itertools;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `path_value`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:5:36
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::{EvaluationType, path_value, Status};
[INFO] [stdout]   |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules::path_value::Path`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::rules::path_value::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorKind` and `Error`
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::rules::errors::{Error, ErrorKind};
[INFO] [stdout]    |                            ^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::Ref`
[INFO] [stdout]  --> guard/src/commands/tracker.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::Ref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QueryPart`
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::rules::exprs::{QueryPart, AccessQuery};
[INFO] [stdout]   |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> guard/src/migrate/parser.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> guard/src/commands/validate.rs:45:28
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut Write,
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut dyn Write,
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::Colorize`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::Colorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BitFlag`
[INFO] [stdout]   --> guard/src/commands/validate.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 | use enumflags2::{BitFlag, BitFlags};
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:86:41
[INFO] [stdout]    |
[INFO] [stdout] 86 |               skipped: HashSet<String>, longest_rule_len: usize) -> crate::rules::Result<()>
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     longest_rule_len: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:936:5
[INFO] [stdout]     |
[INFO] [stdout] 935 | pub(crate) struct RootScope<'s, 'loc> {
[INFO] [stdout]     |                   --------- field in this struct
[INFO] [stdout] 936 |     rules: &'s RulesFile<'loc>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RootScope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_type` is never read
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1034:5
[INFO] [stdout]      |
[INFO] [stdout] 1033 | pub(crate) struct BlockScope<'s, T> {
[INFO] [stdout]      |                   ---------- field in this struct
[INFO] [stdout] 1034 |     block_type: &'s Block<'s, T>,
[INFO] [stdout]      |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `comparison` is never used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1151:19
[INFO] [stdout]      |
[INFO] [stdout] 1129 | impl<'s> AutoReport<'s> {
[INFO] [stdout]      | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1151 |     pub(super) fn comparison(&mut self, status: Status, from: Option<PathAwareValue>, to: Option<PathAwareValue>, cmp: (CmpOperato...
[INFO] [stdout]      |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhenGuardBlockClause` is never constructed
[INFO] [stdout]    --> guard/src/rules/exprs.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub(crate) struct WhenGuardBlockClause<'loc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `context`, `span`, and `kind` are never used
[INFO] [stdout]   --> guard/src/rules/parser.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl<'a> ParserError<'a> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 46 |     pub(crate) fn context(&self) -> &str {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub(crate) fn span(&self) -> &Span<'a> {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub(crate) fn kind(&self) -> nom::error::ErrorKind {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clauses` is never used
[INFO] [stdout]     --> guard/src/rules/parser.rs:1122:4
[INFO] [stdout]      |
[INFO] [stdout] 1122 | fn clauses(input: Span) -> IResult<Span, Conjunctions<GuardClause>> {
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConjunctionsWrapper` is never constructed
[INFO] [stdout]     --> guard/src/rules/parser.rs:1532:19
[INFO] [stdout]      |
[INFO] [stdout] 1532 | pub(crate) struct ConjunctionsWrapper<'a>(pub(crate) Conjunctions<GuardClause<'a>>);
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_binary` is never used
[INFO] [stdout]   --> guard/src/rules/values.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl CmpOperator {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn is_binary(&self) -> bool { !self.is_unary() }
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_linked_hashmap` is never used
[INFO] [stdout]    --> guard/src/rules/values.rs:309:15
[INFO] [stdout]     |
[INFO] [stdout] 309 | pub(super) fn make_linked_hashmap<'a, I>(values: I) -> IndexMap<String, Value>
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `drop_last` and `extend_with_value` are never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl Path {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub(crate) fn drop_last(&mut self) -> &mut Self {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub(crate) fn extend_with_value(&self, part: &Value) -> Result<Path, Error> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_scalar` is never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:675:19
[INFO] [stdout]     |
[INFO] [stdout] 634 | impl PathAwareValue {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 675 |     pub(crate) fn is_scalar(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RULES` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) const RULES: (&str, &str) = ("rules", "r");
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) const DATA: (&str, &str) = ("data", "d");
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn validate_and_return_json(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data_file_name` is never read
[INFO] [stdout]    --> guard/src/commands/validate.rs:274:5
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub(crate) struct ConsoleReporter<'r> {
[INFO] [stdout]     |                   --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 274 |     data_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConsoleReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_result_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:375:12
[INFO] [stdout]     |
[INFO] [stdout] 362 | impl<'r, 'loc> ConsoleReporter<'r> {
[INFO] [stdout]     | ---------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub fn get_result_json(self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_format_type` is never read
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct GenericSummary<'a> {
[INFO] [stdout]    |                   -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     output_format_type: OutputFormatType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GenericSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_format_type` is never read
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct CfnReporter<'a> {
[INFO] [stdout]    |                   ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     output_format_type: OutputFormatType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CfnReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]   --> guard/src/commands/helper.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn validate_and_return_json(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_resource_types_in_ruleset` is never used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub (crate) fn get_resource_types_in_ruleset(rules: &Vec<RuleLineType>) -> Result<Vec<TypeName>> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DummyEval` is never constructed
[INFO] [stdout]  --> guard/src/commands/common_test_helpers.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(super) struct DummyEval{}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:950:9
[INFO] [stdout]     |
[INFO] [stdout] 950 | /         extract_variables(&rules.assignments,
[INFO] [stdout] 951 | |                           &mut literals,
[INFO] [stdout] 952 | |                           &mut pending);
[INFO] [stdout]     | |_______________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 950 |         let _ = extract_variables(&rules.assignments,
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1046:9
[INFO] [stdout]      |
[INFO] [stdout] 1046 | /         extract_variables(&block_type.assignments,
[INFO] [stdout] 1047 | |                           &mut literals,
[INFO] [stdout] 1048 | |                           &mut pending);
[INFO] [stdout]      | |_______________________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1046 |         let _ = extract_variables(&block_type.assignments,
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/rules/parser.rs:32:33
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span {
[INFO] [stdout]    |                                 ^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span<'_> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:645:27
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                           ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |        |       |     |
[INFO] [stdout]     |                           |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                           |        |       the same lifetime is hidden here
[INFO] [stdout]     |                           |        the same lifetime is hidden here
[INFO] [stdout]     |                           the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                               ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:659:26
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                          ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                          |        |       |     |
[INFO] [stdout]     |                          |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                          |        |       the same lifetime is hidden here
[INFO] [stdout]     |                          |        the same lifetime is hidden here
[INFO] [stdout]     |                          the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                              ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:843:40
[INFO] [stdout]     |
[INFO] [stdout] 841 | fn clause_with_map<'loc, A, M, T: 'loc>(input: Span<'loc>,
[INFO] [stdout]     |                                                     ---- the lifetime is named here
[INFO] [stdout] 842 |                          access: A,
[INFO] [stdout] 843 |                          mapper: M) -> IResult<Span<'loc>, T>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^----^^^^^
[INFO] [stdout]     |                                        |            |
[INFO] [stdout]     |                                        |            the same lifetime is named here
[INFO] [stdout]     |                                        the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]     |
[INFO] [stdout] 843 |                          mapper: M) -> IResult<'loc, Span<'loc>, T>
[INFO] [stdout]     |                                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1040:87
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                              ----                                     ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                              |                                        |            |
[INFO] [stdout]      |                                              |                                        |            the same lifetime is named here
[INFO] [stdout]      |                                              the lifetime is named here               the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<'loc, Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                                                                               +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1075:86
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                ----                                  ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                |                                     |            |
[INFO] [stdout]      |                                                |                                     |            the same lifetime is named here
[INFO] [stdout]      |                                                the lifetime is named here            the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<'loc, Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                                                              +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/values.rs:155:17
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 let _ = write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/commands/files.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |                                         ^^^^^^^^^^                   ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<'_, T, C>
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate.rs:135:17
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 reader.read_to_string(&mut context);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let _ = reader.read_to_string(&mut context);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 145 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 | /         match &self.hierarchy_type {
[INFO] [stdout] 97 | |             StructureType::JSON => writeln!(writer, "{}", serde_json::to_string(&value)?),
[INFO] [stdout] 98 | |             StructureType::YAML => writeln!(writer, "{}", serde_yaml::to_string(&value)?),
[INFO] [stdout] 99 | |         };
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _ = match &self.hierarchy_type {
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let _ = writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |             writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let _ = writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let _ = writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 125 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |             write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 202 |             let _ = write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |             writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |             let _ = writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |         writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let _ = writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |         writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let _ = writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let _ = writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let _ = writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `query:` in this pattern is redundant
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender.rs:42:59
[INFO] [stdout]    |
[INFO] [stdout] 42 | ...                   let AccessQuery { query: query, match_all: all } =
[INFO] [stdout]    |                                         ^^^^^^^^^^^^ help: use shorthand field pattern: `query`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let _ = writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let _ = writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 26s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "73f4c06e33066dbcc367e3851fb9a3f395166cc5ddffc56d7f1833970b32a300", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "73f4c06e33066dbcc367e3851fb9a3f395166cc5ddffc56d7f1833970b32a300", kill_on_drop: false }`
[INFO] [stdout] 73f4c06e33066dbcc367e3851fb9a3f395166cc5ddffc56d7f1833970b32a300
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 13935b183793ca05137cab5e8a4ebcd81697de76109430e355c70fea39f63968
[INFO] running `Command { std: "docker" "start" "-a" "13935b183793ca05137cab5e8a4ebcd81697de76109430e355c70fea39f63968", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `WhenConditions`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:9:114
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::rules::exprs::{GuardClause, GuardNamedRuleClause, QueryPart, RuleClause, TypeBlock, BlockGuardClause, WhenConditions, When...
[INFO] [stdout]   |                                                                                                                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:684:12
[INFO] [stdout]     |
[INFO] [stdout] 684 |         Ok('outer: loop {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]  --> guard/src/rules/path_value.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ALPHABETICAL` and `LAST_MODIFIED`
[INFO] [stdout]   --> guard/src/commands/validate.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::commands::{ALPHABETICAL, LAST_MODIFIED};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regular_ordering`
[INFO] [stdout]   --> guard/src/commands/validate.rs:12:83
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::commands::files::{alpabetical, get_files, iterate_over, last_modified, regular_ordering};
[INFO] [stdout]    |                                                                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use itertools::Itertools;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `path_value`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:5:36
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::{EvaluationType, path_value, Status};
[INFO] [stdout]   |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules::path_value::Path`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::rules::path_value::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorKind` and `Error`
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::rules::errors::{Error, ErrorKind};
[INFO] [stdout]    |                            ^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::Ref`
[INFO] [stdout]  --> guard/src/commands/tracker.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::Ref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QueryPart`
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::rules::exprs::{QueryPart, AccessQuery};
[INFO] [stdout]   |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> guard/src/migrate/parser.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> guard/src/commands/validate.rs:45:28
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut Write,
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut dyn Write,
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::Colorize`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::Colorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BitFlag`
[INFO] [stdout]   --> guard/src/commands/validate.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 | use enumflags2::{BitFlag, BitFlags};
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:86:41
[INFO] [stdout]    |
[INFO] [stdout] 86 |               skipped: HashSet<String>, longest_rule_len: usize) -> crate::rules::Result<()>
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     longest_rule_len: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:936:5
[INFO] [stdout]     |
[INFO] [stdout] 935 | pub(crate) struct RootScope<'s, 'loc> {
[INFO] [stdout]     |                   --------- field in this struct
[INFO] [stdout] 936 |     rules: &'s RulesFile<'loc>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RootScope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_type` is never read
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1034:5
[INFO] [stdout]      |
[INFO] [stdout] 1033 | pub(crate) struct BlockScope<'s, T> {
[INFO] [stdout]      |                   ---------- field in this struct
[INFO] [stdout] 1034 |     block_type: &'s Block<'s, T>,
[INFO] [stdout]      |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `comparison` is never used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1151:19
[INFO] [stdout]      |
[INFO] [stdout] 1129 | impl<'s> AutoReport<'s> {
[INFO] [stdout]      | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1151 |     pub(super) fn comparison(&mut self, status: Status, from: Option<PathAwareValue>, to: Option<PathAwareValue>, cmp: (CmpOperato...
[INFO] [stdout]      |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhenGuardBlockClause` is never constructed
[INFO] [stdout]    --> guard/src/rules/exprs.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub(crate) struct WhenGuardBlockClause<'loc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `context`, `span`, and `kind` are never used
[INFO] [stdout]   --> guard/src/rules/parser.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl<'a> ParserError<'a> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 46 |     pub(crate) fn context(&self) -> &str {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub(crate) fn span(&self) -> &Span<'a> {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub(crate) fn kind(&self) -> nom::error::ErrorKind {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clauses` is never used
[INFO] [stdout]     --> guard/src/rules/parser.rs:1122:4
[INFO] [stdout]      |
[INFO] [stdout] 1122 | fn clauses(input: Span) -> IResult<Span, Conjunctions<GuardClause>> {
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConjunctionsWrapper` is never constructed
[INFO] [stdout]     --> guard/src/rules/parser.rs:1532:19
[INFO] [stdout]      |
[INFO] [stdout] 1532 | pub(crate) struct ConjunctionsWrapper<'a>(pub(crate) Conjunctions<GuardClause<'a>>);
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_unary` and `is_binary` are never used
[INFO] [stdout]   --> guard/src/rules/values.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl CmpOperator {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 31 |     pub(crate) fn is_unary(&self) -> bool {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn is_binary(&self) -> bool { !self.is_unary() }
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_linked_hashmap` is never used
[INFO] [stdout]    --> guard/src/rules/values.rs:309:15
[INFO] [stdout]     |
[INFO] [stdout] 309 | pub(super) fn make_linked_hashmap<'a, I>(values: I) -> IndexMap<String, Value>
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `drop_last` and `extend_with_value` are never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl Path {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub(crate) fn drop_last(&mut self) -> &mut Self {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub(crate) fn extend_with_value(&self, part: &Value) -> Result<Path, Error> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_scalar` is never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:675:19
[INFO] [stdout]     |
[INFO] [stdout] 634 | impl PathAwareValue {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 675 |     pub(crate) fn is_scalar(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALPHABETICAL` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) const ALPHABETICAL: (&str, &str) = ("alphabetical", "a");
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAST_MODIFIED` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) const LAST_MODIFIED: (&str, &str) = ("last-modified", "l");
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RULES` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) const RULES: (&str, &str) = ("rules", "r");
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) const DATA: (&str, &str) = ("data", "d");
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_content` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) fn read_file_content(file: File) -> Result<String, std::io::Error> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_files` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) fn get_files<F>(file: &str, sort: F) -> Result<Vec<PathBuf>, Error>
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_files_with_filter` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub(crate) fn get_files_with_filter<S, F>(file: &str, sort: S, filter: F) -> Result<Vec<PathBuf>, Error>
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Iter` is never constructed
[INFO] [stdout]   --> guard/src/commands/files.rs:64:19
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub(crate) struct Iter<'i, T, C>
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iterate_over` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alpabetical` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:103:15
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub(crate) fn alpabetical(first : &walkdir::DirEntry, second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `last_modified` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub(crate) fn last_modified(first: &walkdir::DirEntry, second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `regular_ordering` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:120:15
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub(crate) fn regular_ordering(_first: &walkdir::DirEntry, _second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Type` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(crate) enum Type {
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OutputFormatType` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:37:17
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub(crate) enum OutputFormatType {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `report` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) trait Reporter : Debug {
[INFO] [stdout]    |                  -------- method in this trait
[INFO] [stdout] 44 |     fn report(&self,
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Validate` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate.rs:54:19
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) struct Validate {}
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Validate {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 57 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn validate_and_return_json(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `reporters`, `rules_file_name`, `data_file_name`, `verbose`, `print_json`, and `show_clause_failures` are never read
[INFO] [stdout]    --> guard/src/commands/validate.rs:272:5
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub(crate) struct ConsoleReporter<'r> {
[INFO] [stdout]     |                   --------------- fields in this struct
[INFO] [stdout] 271 |     root_context: StackTracker<'r>,
[INFO] [stdout] 272 |     reporters: &'r Vec<Box<dyn Reporter + 'r>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 273 |     rules_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 274 |     data_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 275 |     verbose: bool,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 276 |     print_json: bool,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 277 |     show_clause_failures: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConsoleReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `indent_spaces` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:280:4
[INFO] [stdout]     |
[INFO] [stdout] 280 | fn indent_spaces(indent: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_context` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:286:15
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub(super) fn print_context(cxt: &StatusContext, depth: usize) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_failing_clause` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:323:4
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn print_failing_clause(rules_file_name: &str, rule: &StatusContext, longest: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `report` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:381:8
[INFO] [stdout]     |
[INFO] [stdout] 362 | impl<'r, 'loc> ConsoleReporter<'r> {
[INFO] [stdout]     | ---------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 381 |     fn report(self) -> crate::rules::Result<()> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INDENT` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:434:7
[INFO] [stdout]     |
[INFO] [stdout] 434 | const INDENT: &str = "    ";
[INFO] [stdout]     |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_against_data_input` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:464:4
[INFO] [stdout]     |
[INFO] [stdout] 464 | fn evaluate_against_data_input<'r>(data_type: Type,
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenericSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct GenericSummary<'a> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl<'a> GenericSummary<'a> {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 25 |     pub(crate) fn new<'r>(data_file_name: &'r str,
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SingleLineSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | struct SingleLineSummary{}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retrieval_error_message` is never used
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn retrieval_error_message(rules_file: &str, data_file: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unary_error_message` is never used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn unary_error_message(rules_file: &str, data_file: &str, op_msg: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `binary_error_message` is never used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn binary_error_message(rules_file: &str, data_file: &str, op_msg: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Comparison` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:16:19
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(super) struct Comparison {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NameInfo` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(super) struct NameInfo<'a> {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `GenericReporter` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:40:18
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub(super) trait GenericReporter: Debug {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StructureType` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:52:17
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub(super) enum StructureType {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StructuredSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub(super) struct StructuredSummary {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl StructuredSummary {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 63 |     pub(super) fn new(hierarchy_type: StructureType) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DataOutput` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct DataOutput<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_name_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:108:15
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub(super) fn extract_name_info<'a>(rule_name: &'a str,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `colored_string` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:162:15
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub(super) fn colored_string(status: Option<Status>) -> ColoredString {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_all_failing_clauses` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:174:15
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub(super) fn find_all_failing_clauses(context: &StatusContext) -> Vec<&StatusContext> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_compliant_skipped_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:199:15
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(super) fn print_compliant_skipped_info(writer: &mut dyn Write,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_name_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:219:15
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub(super) fn print_name_info<R, U, B>(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SummaryType` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(super) enum SummaryType {
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SummaryTable` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(super) struct SummaryTable<'r> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:28:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<'a> SummaryTable<'a> {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 28 |     pub(crate) fn new<'r>(rules_file_name: &'r str, data_file_name: &'r str, summary_type: BitFlags<SummaryType>) -> SummaryTable<'r> {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_partition` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn print_partition(writer: &mut dyn Write,
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CfnReporter` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct CfnReporter<'a> {
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl<'a> CfnReporter<'a> {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 31 |     pub(crate) fn new<'r>(data_file_name: &'r str,
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SingleLineReporter` is never constructed
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | struct SingleLineReporter {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rulegen` is never constructed
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub(crate) struct Rulegen {}
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Rulegen {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 17 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_template_and_call_gen` is never used
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn parse_template_and_call_gen(template_contents: &str) -> HashMap<String, HashMap<String, HashSet<String>>>{
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_rules` is never used
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn gen_rules(cfn_resources: HashMap<String, Value>) -> HashMap<String, HashMap<String, HashSet<String>>> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_rules` is never used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn print_rules(rule_map : HashMap<String, HashMap<String, HashSet<String>>>, mut writer : Box<dyn std::io::Write>) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Test` is never constructed
[INFO] [stdout]   --> guard/src/commands/test.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct Test {}
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/test.rs:26:19
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Test {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 26 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestExpectations` is never constructed
[INFO] [stdout]    --> guard/src/commands/test.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | struct TestExpectations {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestSpec` is never constructed
[INFO] [stdout]    --> guard/src/commands/test.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | struct TestSpec {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_with_data` is never used
[INFO] [stdout]    --> guard/src/commands/test.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn test_with_data(test_data_files: &[PathBuf], rules: &RulesFile<'_>, verbose: bool) -> Result<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_test_case_report` is never used
[INFO] [stdout]    --> guard/src/commands/test.rs:188:16
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub (crate) fn print_test_case_report(by_result: &HashMap<String, indexmap::IndexSet<String>>) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseTree` is never constructed
[INFO] [stdout]  --> guard/src/commands/parse_tree.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(crate) struct ParseTree {}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/parse_tree.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ParseTree {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 10 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Migrate` is never constructed
[INFO] [stdout]   --> guard/src/commands/migrate.rs:24:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub(crate) struct Migrate {}
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Migrate {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 27 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `migrated_rules_by_type` is never used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:87:15
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub(crate) fn migrated_rules_by_type(rules: &[RuleLineType],
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aggregate_by_type` is never used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:110:15
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub(crate) fn aggregate_by_type(rules: &Vec<RuleLineType>) -> HashMap<TypeName, indexmap::IndexSet<&Clause>> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_resource_types_in_ruleset` is never used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub (crate) fn get_resource_types_in_ruleset(rules: &Vec<RuleLineType>) -> Result<Vec<TypeName>> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `migrate_rules` is never used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:149:16
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub (crate) fn migrate_rules(rules: Vec<RuleLineType>) -> Result<String> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetadataAppender` is never constructed
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(super) struct MetadataAppender<'d> {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DummyEval` is never constructed
[INFO] [stdout]  --> guard/src/commands/common_test_helpers.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(super) struct DummyEval{}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Command` is never used
[INFO] [stdout]  --> guard/src/command.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) trait Command {
[INFO] [stdout]   |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OldGuardValues` is never used
[INFO] [stdout]   --> guard/src/migrate/parser.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum OldGuardValues {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Assignment` is never constructed
[INFO] [stdout]   --> guard/src/migrate/parser.rs:44:19
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub(crate) struct Assignment {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CmpOperator` is never used
[INFO] [stdout]   --> guard/src/migrate/parser.rs:56:17
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) enum CmpOperator {
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PropertyComparison` is never constructed
[INFO] [stdout]   --> guard/src/migrate/parser.rs:82:19
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub(crate) struct PropertyComparison {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseRule` is never constructed
[INFO] [stdout]    --> guard/src/migrate/parser.rs:109:19
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub(crate) struct BaseRule {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConditionalRule` is never constructed
[INFO] [stdout]    --> guard/src/migrate/parser.rs:128:19
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub(crate) struct ConditionalRule {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Rule` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub(crate) enum Rule {
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Clause` is never constructed
[INFO] [stdout]    --> guard/src/migrate/parser.rs:157:19
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub(crate) struct Clause {
[INFO] [stdout]     |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RuleLineType` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:171:17
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub(crate) enum RuleLineType {
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_variable_dereference` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:195:16
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub (crate) fn parse_variable_dereference(input: Span) -> IResult<Span, String> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_complete_value` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:202:27
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub(in crate::migrate) fn parse_complete_value(input: Span) -> IResult<Span, Span> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `comment` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:216:27
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub(in crate::migrate) fn comment(input: Span) ->IResult<Span, String> {
[INFO] [stdout]     |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_old_guard_value` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:222:28
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub (in crate::migrate) fn parse_old_guard_value(input:Span) -> IResult<Span, OldGuardValues> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assignment` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:240:15
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub(crate) fn assignment(input: Span) -> IResult<Span, Assignment> {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `value_operator` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:267:27
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub(in crate::migrate) fn value_operator(input: Span) -> IResult<Span, CmpOperator> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `property_path` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:290:27
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub(in crate::migrate) fn property_path(input: Span) -> IResult<Span, String> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `property_comparison` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:297:27
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub(in crate::migrate) fn property_comparison(input: Span) -> IResult<Span, PropertyComparison> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `base_rule` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:315:27
[INFO] [stdout]     |
[INFO] [stdout] 315 | pub(in crate::migrate) fn base_rule(input: Span) -> IResult<Span, BaseRule> {
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `conditional_rule` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:339:27
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub(in crate::migrate) fn conditional_rule(input: Span) -> IResult<Span, ConditionalRule> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom_message` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:361:27
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub(in crate::migrate) fn custom_message(input: Span) -> IResult<Span, String> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rule` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:368:27
[INFO] [stdout]     |
[INFO] [stdout] 368 | pub(in crate::migrate) fn rule(input: Span) -> IResult<Span, Rule> {
[INFO] [stdout]     |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clause` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:381:27
[INFO] [stdout]     |
[INFO] [stdout] 381 | pub(in crate::migrate) fn clause(input: Span) -> IResult<Span, Clause> {
[INFO] [stdout]     |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_line` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:388:27
[INFO] [stdout]     |
[INFO] [stdout] 388 | pub(in crate::migrate) fn empty_line(input: Span) -> IResult<Span, RuleLineType> {
[INFO] [stdout]     |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rule_line` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:394:27
[INFO] [stdout]     |
[INFO] [stdout] 394 | pub(in crate::migrate) fn rule_line(input: Span) ->IResult<Span, RuleLineType> {
[INFO] [stdout]     |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rules_file` is never used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:408:15
[INFO] [stdout]     |
[INFO] [stdout] 408 | pub(crate) fn parse_rules_file(input: &String, file_name: &String) -> Result<Vec<RuleLineType>, Error> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `str`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 |     data: &str,
[INFO] [stdout]    |           ^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider using `*const u8` and a length instead
[INFO] [stdout]    = note: string slices have no C equivalent
[INFO] [stdout]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `str`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 |     rules: &str,
[INFO] [stdout]    |            ^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider using `*const u8` and a length instead
[INFO] [stdout]    = note: string slices have no C equivalent
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `std::result::Result<std::string::String, errors::Error>`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | ) -> crate::rules::Result<String> {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
[INFO] [stdout]    = note: enum has no representation hint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:950:9
[INFO] [stdout]     |
[INFO] [stdout] 950 | /         extract_variables(&rules.assignments,
[INFO] [stdout] 951 | |                           &mut literals,
[INFO] [stdout] 952 | |                           &mut pending);
[INFO] [stdout]     | |_______________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 950 |         let _ = extract_variables(&rules.assignments,
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1046:9
[INFO] [stdout]      |
[INFO] [stdout] 1046 | /         extract_variables(&block_type.assignments,
[INFO] [stdout] 1047 | |                           &mut literals,
[INFO] [stdout] 1048 | |                           &mut pending);
[INFO] [stdout]      | |_______________________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1046 |         let _ = extract_variables(&block_type.assignments,
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/rules/parser.rs:32:33
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span {
[INFO] [stdout]    |                                 ^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span<'_> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:645:27
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                           ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |        |       |     |
[INFO] [stdout]     |                           |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                           |        |       the same lifetime is hidden here
[INFO] [stdout]     |                           |        the same lifetime is hidden here
[INFO] [stdout]     |                           the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                               ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:659:26
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                          ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                          |        |       |     |
[INFO] [stdout]     |                          |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                          |        |       the same lifetime is hidden here
[INFO] [stdout]     |                          |        the same lifetime is hidden here
[INFO] [stdout]     |                          the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                              ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:843:40
[INFO] [stdout]     |
[INFO] [stdout] 841 | fn clause_with_map<'loc, A, M, T: 'loc>(input: Span<'loc>,
[INFO] [stdout]     |                                                     ---- the lifetime is named here
[INFO] [stdout] 842 |                          access: A,
[INFO] [stdout] 843 |                          mapper: M) -> IResult<Span<'loc>, T>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^----^^^^^
[INFO] [stdout]     |                                        |            |
[INFO] [stdout]     |                                        |            the same lifetime is named here
[INFO] [stdout]     |                                        the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]     |
[INFO] [stdout] 843 |                          mapper: M) -> IResult<'loc, Span<'loc>, T>
[INFO] [stdout]     |                                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1040:87
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                              ----                                     ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                              |                                        |            |
[INFO] [stdout]      |                                              |                                        |            the same lifetime is named here
[INFO] [stdout]      |                                              the lifetime is named here               the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<'loc, Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                                                                               +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1075:86
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                ----                                  ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                |                                     |            |
[INFO] [stdout]      |                                                |                                     |            the same lifetime is named here
[INFO] [stdout]      |                                                the lifetime is named here            the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<'loc, Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                                                              +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/values.rs:155:17
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 let _ = write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/commands/files.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |                                         ^^^^^^^^^^                   ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<'_, T, C>
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate.rs:135:17
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 reader.read_to_string(&mut context);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let _ = reader.read_to_string(&mut context);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 145 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 | /         match &self.hierarchy_type {
[INFO] [stdout] 97 | |             StructureType::JSON => writeln!(writer, "{}", serde_json::to_string(&value)?),
[INFO] [stdout] 98 | |             StructureType::YAML => writeln!(writer, "{}", serde_yaml::to_string(&value)?),
[INFO] [stdout] 99 | |         };
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _ = match &self.hierarchy_type {
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let _ = writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |             writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let _ = writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let _ = writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 125 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |             write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 202 |             let _ = write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |             writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |             let _ = writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |         writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let _ = writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |         writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let _ = writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let _ = writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let _ = writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `query:` in this pattern is redundant
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender.rs:42:59
[INFO] [stdout]    |
[INFO] [stdout] 42 | ...                   let AccessQuery { query: query, match_all: all } =
[INFO] [stdout]    |                                         ^^^^^^^^^^^^ help: use shorthand field pattern: `query`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let _ = writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let _ = writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling cfn-guard v2.0.3 (/opt/rustwide/workdir/guard)
[INFO] [stdout] warning: unused import: `WhenConditions`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:9:114
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::rules::exprs::{GuardClause, GuardNamedRuleClause, QueryPart, RuleClause, TypeBlock, BlockGuardClause, WhenConditions, When...
[INFO] [stdout]   |                                                                                                                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:684:12
[INFO] [stdout]     |
[INFO] [stdout] 684 |         Ok('outer: loop {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]  --> guard/src/rules/path_value.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ALPHABETICAL` and `LAST_MODIFIED`
[INFO] [stdout]   --> guard/src/commands/validate.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::commands::{ALPHABETICAL, LAST_MODIFIED};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regular_ordering`
[INFO] [stdout]   --> guard/src/commands/validate.rs:12:83
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::commands::files::{alpabetical, get_files, iterate_over, last_modified, regular_ordering};
[INFO] [stdout]    |                                                                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use itertools::Itertools;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `path_value`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:5:36
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::{EvaluationType, path_value, Status};
[INFO] [stdout]   |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules::path_value::Path`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::rules::path_value::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorKind` and `Error`
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::rules::errors::{Error, ErrorKind};
[INFO] [stdout]    |                            ^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::Ref`
[INFO] [stdout]  --> guard/src/commands/tracker.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::Ref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QueryPart`
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::rules::exprs::{QueryPart, AccessQuery};
[INFO] [stdout]   |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> guard/src/migrate/parser.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> guard/src/commands/validate.rs:45:28
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut Write,
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut dyn Write,
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::Colorize`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::Colorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BitFlag`
[INFO] [stdout]   --> guard/src/commands/validate.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 | use enumflags2::{BitFlag, BitFlags};
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:86:41
[INFO] [stdout]    |
[INFO] [stdout] 86 |               skipped: HashSet<String>, longest_rule_len: usize) -> crate::rules::Result<()>
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     longest_rule_len: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:936:5
[INFO] [stdout]     |
[INFO] [stdout] 935 | pub(crate) struct RootScope<'s, 'loc> {
[INFO] [stdout]     |                   --------- field in this struct
[INFO] [stdout] 936 |     rules: &'s RulesFile<'loc>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RootScope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_type` is never read
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1034:5
[INFO] [stdout]      |
[INFO] [stdout] 1033 | pub(crate) struct BlockScope<'s, T> {
[INFO] [stdout]      |                   ---------- field in this struct
[INFO] [stdout] 1034 |     block_type: &'s Block<'s, T>,
[INFO] [stdout]      |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `comparison` is never used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1151:19
[INFO] [stdout]      |
[INFO] [stdout] 1129 | impl<'s> AutoReport<'s> {
[INFO] [stdout]      | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1151 |     pub(super) fn comparison(&mut self, status: Status, from: Option<PathAwareValue>, to: Option<PathAwareValue>, cmp: (CmpOperato...
[INFO] [stdout]      |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhenGuardBlockClause` is never constructed
[INFO] [stdout]    --> guard/src/rules/exprs.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub(crate) struct WhenGuardBlockClause<'loc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `context`, `span`, and `kind` are never used
[INFO] [stdout]   --> guard/src/rules/parser.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl<'a> ParserError<'a> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 46 |     pub(crate) fn context(&self) -> &str {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub(crate) fn span(&self) -> &Span<'a> {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub(crate) fn kind(&self) -> nom::error::ErrorKind {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clauses` is never used
[INFO] [stdout]     --> guard/src/rules/parser.rs:1122:4
[INFO] [stdout]      |
[INFO] [stdout] 1122 | fn clauses(input: Span) -> IResult<Span, Conjunctions<GuardClause>> {
[INFO] [stdout]      |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConjunctionsWrapper` is never constructed
[INFO] [stdout]     --> guard/src/rules/parser.rs:1532:19
[INFO] [stdout]      |
[INFO] [stdout] 1532 | pub(crate) struct ConjunctionsWrapper<'a>(pub(crate) Conjunctions<GuardClause<'a>>);
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_binary` is never used
[INFO] [stdout]   --> guard/src/rules/values.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl CmpOperator {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn is_binary(&self) -> bool { !self.is_unary() }
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_linked_hashmap` is never used
[INFO] [stdout]    --> guard/src/rules/values.rs:309:15
[INFO] [stdout]     |
[INFO] [stdout] 309 | pub(super) fn make_linked_hashmap<'a, I>(values: I) -> IndexMap<String, Value>
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `drop_last` and `extend_with_value` are never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl Path {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub(crate) fn drop_last(&mut self) -> &mut Self {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub(crate) fn extend_with_value(&self, part: &Value) -> Result<Path, Error> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_scalar` is never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:675:19
[INFO] [stdout]     |
[INFO] [stdout] 634 | impl PathAwareValue {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 675 |     pub(crate) fn is_scalar(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RULES` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) const RULES: (&str, &str) = ("rules", "r");
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) const DATA: (&str, &str) = ("data", "d");
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn validate_and_return_json(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data_file_name` is never read
[INFO] [stdout]    --> guard/src/commands/validate.rs:274:5
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub(crate) struct ConsoleReporter<'r> {
[INFO] [stdout]     |                   --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 274 |     data_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConsoleReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_result_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:375:12
[INFO] [stdout]     |
[INFO] [stdout] 362 | impl<'r, 'loc> ConsoleReporter<'r> {
[INFO] [stdout]     | ---------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub fn get_result_json(self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_format_type` is never read
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct GenericSummary<'a> {
[INFO] [stdout]    |                   -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     output_format_type: OutputFormatType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GenericSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_format_type` is never read
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct CfnReporter<'a> {
[INFO] [stdout]    |                   ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     output_format_type: OutputFormatType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CfnReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]   --> guard/src/commands/helper.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn validate_and_return_json(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_resource_types_in_ruleset` is never used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub (crate) fn get_resource_types_in_ruleset(rules: &Vec<RuleLineType>) -> Result<Vec<TypeName>> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DummyEval` is never constructed
[INFO] [stdout]  --> guard/src/commands/common_test_helpers.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(super) struct DummyEval{}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:950:9
[INFO] [stdout]     |
[INFO] [stdout] 950 | /         extract_variables(&rules.assignments,
[INFO] [stdout] 951 | |                           &mut literals,
[INFO] [stdout] 952 | |                           &mut pending);
[INFO] [stdout]     | |_______________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 950 |         let _ = extract_variables(&rules.assignments,
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1046:9
[INFO] [stdout]      |
[INFO] [stdout] 1046 | /         extract_variables(&block_type.assignments,
[INFO] [stdout] 1047 | |                           &mut literals,
[INFO] [stdout] 1048 | |                           &mut pending);
[INFO] [stdout]      | |_______________________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1046 |         let _ = extract_variables(&block_type.assignments,
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/rules/parser.rs:32:33
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span {
[INFO] [stdout]    |                                 ^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span<'_> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:645:27
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                           ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |        |       |     |
[INFO] [stdout]     |                           |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                           |        |       the same lifetime is hidden here
[INFO] [stdout]     |                           |        the same lifetime is hidden here
[INFO] [stdout]     |                           the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                               ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:659:26
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                          ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                          |        |       |     |
[INFO] [stdout]     |                          |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                          |        |       the same lifetime is hidden here
[INFO] [stdout]     |                          |        the same lifetime is hidden here
[INFO] [stdout]     |                          the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                              ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:843:40
[INFO] [stdout]     |
[INFO] [stdout] 841 | fn clause_with_map<'loc, A, M, T: 'loc>(input: Span<'loc>,
[INFO] [stdout]     |                                                     ---- the lifetime is named here
[INFO] [stdout] 842 |                          access: A,
[INFO] [stdout] 843 |                          mapper: M) -> IResult<Span<'loc>, T>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^----^^^^^
[INFO] [stdout]     |                                        |            |
[INFO] [stdout]     |                                        |            the same lifetime is named here
[INFO] [stdout]     |                                        the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]     |
[INFO] [stdout] 843 |                          mapper: M) -> IResult<'loc, Span<'loc>, T>
[INFO] [stdout]     |                                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1040:87
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                              ----                                     ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                              |                                        |            |
[INFO] [stdout]      |                                              |                                        |            the same lifetime is named here
[INFO] [stdout]      |                                              the lifetime is named here               the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<'loc, Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                                                                               +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1075:86
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                ----                                  ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                |                                     |            |
[INFO] [stdout]      |                                                |                                     |            the same lifetime is named here
[INFO] [stdout]      |                                                the lifetime is named here            the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<'loc, Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                                                              +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/values.rs:155:17
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 let _ = write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/commands/files.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |                                         ^^^^^^^^^^                   ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<'_, T, C>
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate.rs:135:17
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 reader.read_to_string(&mut context);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let _ = reader.read_to_string(&mut context);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 145 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 | /         match &self.hierarchy_type {
[INFO] [stdout] 97 | |             StructureType::JSON => writeln!(writer, "{}", serde_json::to_string(&value)?),
[INFO] [stdout] 98 | |             StructureType::YAML => writeln!(writer, "{}", serde_yaml::to_string(&value)?),
[INFO] [stdout] 99 | |         };
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _ = match &self.hierarchy_type {
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let _ = writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |             writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let _ = writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let _ = writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 125 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |             write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 202 |             let _ = write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |             writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |             let _ = writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |         writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let _ = writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |         writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let _ = writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let _ = writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let _ = writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `query:` in this pattern is redundant
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender.rs:42:59
[INFO] [stdout]    |
[INFO] [stdout] 42 | ...                   let AccessQuery { query: query, match_all: all } =
[INFO] [stdout]    |                                         ^^^^^^^^^^^^ help: use shorthand field pattern: `query`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let _ = writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let _ = writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling cfn-guard-lambda v2.0.3 (/opt/rustwide/workdir/guard-lambda)
[INFO] [stdout] warning: unnecessary parentheses around match arm expression
[INFO] [stdout]   --> guard-lambda/src/main.rs:39:23
[INFO] [stdout]    |
[INFO] [stdout] 39 |             Err(e) => (e.to_string()),
[INFO] [stdout]    |                       ^             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 39 -             Err(e) => (e.to_string()),
[INFO] [stdout] 39 +             Err(e) => e.to_string(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WhenConditions`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:9:114
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::rules::exprs::{GuardClause, GuardNamedRuleClause, QueryPart, RuleClause, TypeBlock, BlockGuardClause, WhenConditions, When...
[INFO] [stdout]   |                                                                                                                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:684:12
[INFO] [stdout]     |
[INFO] [stdout] 684 |         Ok('outer: loop {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2087:23
[INFO] [stdout]      |
[INFO] [stdout] 2087 |     struct Reporter {};
[INFO] [stdout]      |                       ^ help: remove this semicolon
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2152:60
[INFO] [stdout]      |
[INFO] [stdout] 2152 |     struct Reporter<'a> { root: &'a dyn EvaluationContext };
[INFO] [stdout]      |                                                            ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WhenConditions`
[INFO] [stdout]  --> guard/src/rules/evaluate.rs:9:114
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::rules::exprs::{GuardClause, GuardNamedRuleClause, QueryPart, RuleClause, TypeBlock, BlockGuardClause, WhenConditions, When...
[INFO] [stdout]   |                                                                                                                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:684:12
[INFO] [stdout]     |
[INFO] [stdout] 684 |         Ok('outer: loop {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2087:23
[INFO] [stdout]      |
[INFO] [stdout] 2087 |     struct Reporter {};
[INFO] [stdout]      |                       ^ help: remove this semicolon
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2152:60
[INFO] [stdout]      |
[INFO] [stdout] 2152 |     struct Reporter<'a> { root: &'a dyn EvaluationContext };
[INFO] [stdout]      |                                                            ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> guard/src/rules/values_tests.rs:124:6
[INFO] [stdout]     |
[INFO] [stdout] 124 |     };
[INFO] [stdout]     |      ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> guard/src/rules/values_tests.rs:217:27
[INFO] [stdout]     |
[INFO] [stdout] 217 |     struct DummyResolver{};
[INFO] [stdout]     |                           ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]  --> guard/src/rules/path_value.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ALPHABETICAL` and `LAST_MODIFIED`
[INFO] [stdout]   --> guard/src/commands/validate.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::commands::{ALPHABETICAL, LAST_MODIFIED};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regular_ordering`
[INFO] [stdout]   --> guard/src/commands/validate.rs:12:83
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::commands::files::{alpabetical, get_files, iterate_over, last_modified, regular_ordering};
[INFO] [stdout]    |                                                                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use itertools::Itertools;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `path_value`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:5:36
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::{EvaluationType, path_value, Status};
[INFO] [stdout]   |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules::path_value::Path`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::rules::path_value::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorKind` and `Error`
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::rules::errors::{Error, ErrorKind};
[INFO] [stdout]    |                            ^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::Ref`
[INFO] [stdout]  --> guard/src/commands/tracker.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::Ref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QueryPart`
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::rules::exprs::{QueryPart, AccessQuery};
[INFO] [stdout]   |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::super::common_test_helpers::DummyEval`
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender_tests.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::super::common_test_helpers::DummyEval;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |     struct Capture {};
[INFO] [stdout]    |                      ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> guard/src/migrate/parser.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules::values::Value::Bool`
[INFO] [stdout]  --> guard/src/migrate/parser_tests.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::values::Value::Bool;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> guard/src/rules/values_tests.rs:124:6
[INFO] [stdout]     |
[INFO] [stdout] 124 |     };
[INFO] [stdout]     |      ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> guard/src/rules/values_tests.rs:217:27
[INFO] [stdout]     |
[INFO] [stdout] 217 |     struct DummyResolver{};
[INFO] [stdout]     |                           ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Write`
[INFO] [stdout]  --> guard/src/rules/path_value.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ALPHABETICAL` and `LAST_MODIFIED`
[INFO] [stdout]   --> guard/src/commands/validate.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::commands::{ALPHABETICAL, LAST_MODIFIED};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regular_ordering`
[INFO] [stdout]   --> guard/src/commands/validate.rs:12:83
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::commands::files::{alpabetical, get_files, iterate_over, last_modified, regular_ordering};
[INFO] [stdout]    |                                                                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/generic_summary.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Serialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use itertools::Itertools;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `path_value`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:5:36
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::{EvaluationType, path_value, Status};
[INFO] [stdout]   |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules::path_value::Path`
[INFO] [stdout]  --> guard/src/commands/validate/common.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::rules::path_value::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `colored::*`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use colored::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> guard/src/commands/validate/cfn_reporter.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorKind` and `Error`
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::rules::errors::{Error, ErrorKind};
[INFO] [stdout]    |                            ^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::Ref`
[INFO] [stdout]  --> guard/src/commands/tracker.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::Ref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `QueryPart`
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::rules::exprs::{QueryPart, AccessQuery};
[INFO] [stdout]   |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::super::common_test_helpers::DummyEval`
[INFO] [stdout]  --> guard/src/commands/aws_meta_appender_tests.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::super::common_test_helpers::DummyEval;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |     struct Capture {};
[INFO] [stdout]    |                      ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> guard/src/migrate/parser.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules::values::Value::Bool`
[INFO] [stdout]  --> guard/src/migrate/parser_tests.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::rules::values::Value::Bool;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> guard/src/commands/validate.rs:45:28
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut Write,
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut dyn Write,
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> guard/src/commands/validate.rs:45:28
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut Write,
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |               writer: &mut dyn Write,
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BitFlag`
[INFO] [stdout]   --> guard/src/commands/validate.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 | use enumflags2::{BitFlag, BitFlags};
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variable`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2089:36
[INFO] [stdout]      |
[INFO] [stdout] 2089 |         fn resolve_variable(&self, variable: &str) -> Result<Vec<&PathAwareValue>> {
[INFO] [stdout]      |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variable`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_name`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2093:31
[INFO] [stdout]      |
[INFO] [stdout] 2093 |         fn rule_status(&self, rule_name: &str) -> Result<Status> {
[INFO] [stdout]      |                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2097:61
[INFO] [stdout]      |
[INFO] [stdout] 2097 | ...l_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<St...
[INFO] [stdout]      |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eval_type`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2117:36
[INFO] [stdout]      |
[INFO] [stdout] 2117 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stdout]      |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2117:63
[INFO] [stdout]      |
[INFO] [stdout] 2117 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stdout]      |                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clause`
[INFO] [stdout]     --> guard/src/rules/parser_tests.rs:4121:17
[INFO] [stdout]      |
[INFO] [stdout] 4121 |     let (_span, clause) = rule_block_clause(from_str2(when_inside_when))?;
[INFO] [stdout]      |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_clause`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BitFlag`
[INFO] [stdout]   --> guard/src/commands/validate.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 | use enumflags2::{BitFlag, BitFlags};
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:86:41
[INFO] [stdout]    |
[INFO] [stdout] 86 |               skipped: HashSet<String>, longest_rule_len: usize) -> crate::rules::Result<()>
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     longest_rule_len: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variable`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:42:36
[INFO] [stdout]    |
[INFO] [stdout] 42 |         fn resolve_variable(&self, variable: &str) -> Result<Vec<&PathAwareValue>> {
[INFO] [stdout]    |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_name`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:46:31
[INFO] [stdout]    |
[INFO] [stdout] 46 |         fn rule_status(&self, rule_name: &str) -> Result<Status> {
[INFO] [stdout]    |                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eval_type`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:34
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...   fn end_evaluation(&self, eval_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathA...
[INFO] [stdout]    |                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:61
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...al_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Sta...
[INFO] [stdout]    |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:89
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOp...
[INFO] [stdout]    |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_from`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:119
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOperator, bool)>) {
[INFO] [stdout]    |                                  ^^ help: if this is intentional, prefix it with an underscore: `_to`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:147
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOperator, bool)>) {
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eval_type`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:57:36
[INFO] [stdout]    |
[INFO] [stdout] 57 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stdout]    |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:57:63
[INFO] [stdout]    |
[INFO] [stdout] 57 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stdout]    |                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:936:5
[INFO] [stdout]     |
[INFO] [stdout] 935 | pub(crate) struct RootScope<'s, 'loc> {
[INFO] [stdout]     |                   --------- field in this struct
[INFO] [stdout] 936 |     rules: &'s RulesFile<'loc>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RootScope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_type` is never read
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1034:5
[INFO] [stdout]      |
[INFO] [stdout] 1033 | pub(crate) struct BlockScope<'s, T> {
[INFO] [stdout]      |                   ---------- field in this struct
[INFO] [stdout] 1034 |     block_type: &'s Block<'s, T>,
[INFO] [stdout]      |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `comparison` is never used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1151:19
[INFO] [stdout]      |
[INFO] [stdout] 1129 | impl<'s> AutoReport<'s> {
[INFO] [stdout]      | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1151 |     pub(super) fn comparison(&mut self, status: Status, from: Option<PathAwareValue>, to: Option<PathAwareValue>, cmp: (CmpOperato...
[INFO] [stdout]      |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VariableResolver` is never constructed
[INFO] [stdout]    --> guard/src/rules/evaluate_tests.rs:884:8
[INFO] [stdout]     |
[INFO] [stdout] 884 | struct VariableResolver<'a, 'b>(&'a dyn EvaluationContext, HashMap<String, Vec<&'b PathAwareValue>>);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhenGuardBlockClause` is never constructed
[INFO] [stdout]    --> guard/src/rules/exprs.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub(crate) struct WhenGuardBlockClause<'loc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `context`, `span`, and `kind` are never used
[INFO] [stdout]   --> guard/src/rules/parser.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl<'a> ParserError<'a> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 46 |     pub(crate) fn context(&self) -> &str {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub(crate) fn span(&self) -> &Span<'a> {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub(crate) fn kind(&self) -> nom::error::ErrorKind {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConjunctionsWrapper` is never constructed
[INFO] [stdout]     --> guard/src/rules/parser.rs:1532:19
[INFO] [stdout]      |
[INFO] [stdout] 1532 | pub(crate) struct ConjunctionsWrapper<'a>(pub(crate) Conjunctions<GuardClause<'a>>);
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_unary` and `is_binary` are never used
[INFO] [stdout]   --> guard/src/rules/values.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl CmpOperator {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 31 |     pub(crate) fn is_unary(&self) -> bool {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn is_binary(&self) -> bool { !self.is_unary() }
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `drop_last` and `extend_with_value` are never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl Path {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub(crate) fn drop_last(&mut self) -> &mut Self {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub(crate) fn extend_with_value(&self, part: &Value) -> Result<Path, Error> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_scalar` is never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:675:19
[INFO] [stdout]     |
[INFO] [stdout] 634 | impl PathAwareValue {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 675 |     pub(crate) fn is_scalar(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SAMPLE_MULTIPLE` is never used
[INFO] [stdout]   --> guard/src/rules/path_value_tests.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const SAMPLE_MULTIPLE : &str = r#"{
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALPHABETICAL` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) const ALPHABETICAL: (&str, &str) = ("alphabetical", "a");
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAST_MODIFIED` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) const LAST_MODIFIED: (&str, &str) = ("last-modified", "l");
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RULES` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) const RULES: (&str, &str) = ("rules", "r");
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) const DATA: (&str, &str) = ("data", "d");
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_files` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) fn get_files<F>(file: &str, sort: F) -> Result<Vec<PathBuf>, Error>
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_files_with_filter` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub(crate) fn get_files_with_filter<S, F>(file: &str, sort: S, filter: F) -> Result<Vec<PathBuf>, Error>
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Iter` is never constructed
[INFO] [stdout]   --> guard/src/commands/files.rs:64:19
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub(crate) struct Iter<'i, T, C>
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iterate_over` is never used
[INFO] [stdout]   --> guard/src/commands/files.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alpabetical` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:103:15
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub(crate) fn alpabetical(first : &walkdir::DirEntry, second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `last_modified` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub(crate) fn last_modified(first: &walkdir::DirEntry, second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `regular_ordering` is never used
[INFO] [stdout]    --> guard/src/commands/files.rs:120:15
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub(crate) fn regular_ordering(_first: &walkdir::DirEntry, _second: &walkdir::DirEntry) -> Ordering {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Type` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:31:17
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(crate) enum Type {
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OutputFormatType` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:37:17
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub(crate) enum OutputFormatType {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `report` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) trait Reporter : Debug {
[INFO] [stdout]    |                  -------- method in this trait
[INFO] [stdout] 44 |     fn report(&self,
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Validate` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate.rs:54:19
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) struct Validate {}
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Validate {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 57 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn validate_and_return_json(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `reporters`, `rules_file_name`, `data_file_name`, `verbose`, `print_json`, and `show_clause_failures` are never read
[INFO] [stdout]    --> guard/src/commands/validate.rs:272:5
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub(crate) struct ConsoleReporter<'r> {
[INFO] [stdout]     |                   --------------- fields in this struct
[INFO] [stdout] 271 |     root_context: StackTracker<'r>,
[INFO] [stdout] 272 |     reporters: &'r Vec<Box<dyn Reporter + 'r>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 273 |     rules_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 274 |     data_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 275 |     verbose: bool,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 276 |     print_json: bool,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 277 |     show_clause_failures: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConsoleReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `indent_spaces` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:280:4
[INFO] [stdout]     |
[INFO] [stdout] 280 | fn indent_spaces(indent: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_context` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:286:15
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub(super) fn print_context(cxt: &StatusContext, depth: usize) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_failing_clause` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:323:4
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn print_failing_clause(rules_file_name: &str, rule: &StatusContext, longest: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `report` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:381:8
[INFO] [stdout]     |
[INFO] [stdout] 362 | impl<'r, 'loc> ConsoleReporter<'r> {
[INFO] [stdout]     | ---------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 381 |     fn report(self) -> crate::rules::Result<()> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INDENT` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:434:7
[INFO] [stdout]     |
[INFO] [stdout] 434 | const INDENT: &str = "    ";
[INFO] [stdout]     |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variable`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2089:36
[INFO] [stdout]      |
[INFO] [stdout] 2089 |         fn resolve_variable(&self, variable: &str) -> Result<Vec<&PathAwareValue>> {
[INFO] [stdout]      |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variable`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_name`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2093:31
[INFO] [stdout]      |
[INFO] [stdout] 2093 |         fn rule_status(&self, rule_name: &str) -> Result<Status> {
[INFO] [stdout]      |                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_against_data_input` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:464:4
[INFO] [stdout]     |
[INFO] [stdout] 464 | fn evaluate_against_data_input<'r>(data_type: Type,
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenericSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct GenericSummary<'a> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl<'a> GenericSummary<'a> {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 25 |     pub(crate) fn new<'r>(data_file_name: &'r str,
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SingleLineSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | struct SingleLineSummary{}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retrieval_error_message` is never used
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn retrieval_error_message(rules_file: &str, data_file: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unary_error_message` is never used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn unary_error_message(rules_file: &str, data_file: &str, op_msg: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `binary_error_message` is never used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn binary_error_message(rules_file: &str, data_file: &str, op_msg: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Comparison` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:16:19
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(super) struct Comparison {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NameInfo` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub(super) struct NameInfo<'a> {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `GenericReporter` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:40:18
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub(super) trait GenericReporter: Debug {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StructureType` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:52:17
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub(super) enum StructureType {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StructuredSummary` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub(super) struct StructuredSummary {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl StructuredSummary {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 63 |     pub(super) fn new(hierarchy_type: StructureType) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DataOutput` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct DataOutput<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_name_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:108:15
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub(super) fn extract_name_info<'a>(rule_name: &'a str,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `colored_string` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:162:15
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub(super) fn colored_string(status: Option<Status>) -> ColoredString {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_all_failing_clauses` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:174:15
[INFO] [stdout]     |
[INFO] [stdout] 174 | pub(super) fn find_all_failing_clauses(context: &StatusContext) -> Vec<&StatusContext> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_compliant_skipped_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:199:15
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub(super) fn print_compliant_skipped_info(writer: &mut dyn Write,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_name_info` is never used
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:219:15
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub(super) fn print_name_info<R, U, B>(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SummaryType` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(super) enum SummaryType {
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SummaryTable` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub(super) struct SummaryTable<'r> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:28:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<'a> SummaryTable<'a> {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 28 |     pub(crate) fn new<'r>(rules_file_name: &'r str, data_file_name: &'r str, summary_type: BitFlags<SummaryType>) -> SummaryTable<'r> {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_partition` is never used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn print_partition(writer: &mut dyn Write,
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CfnReporter` is never constructed
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct CfnReporter<'a> {
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl<'a> CfnReporter<'a> {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 31 |     pub(crate) fn new<'r>(data_file_name: &'r str,
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SingleLineReporter` is never constructed
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | struct SingleLineReporter {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rulegen` is never constructed
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub(crate) struct Rulegen {}
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/rulegen.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Rulegen {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 17 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_rules` is never used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn print_rules(rule_map : HashMap<String, HashMap<String, HashSet<String>>>, mut writer : Box<dyn std::io::Write>) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Test` is never constructed
[INFO] [stdout]   --> guard/src/commands/test.rs:23:19
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct Test {}
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/test.rs:26:19
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Test {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 26 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestExpectations` is never constructed
[INFO] [stdout]    --> guard/src/commands/test.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | struct TestExpectations {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestSpec` is never constructed
[INFO] [stdout]    --> guard/src/commands/test.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | struct TestSpec {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_with_data` is never used
[INFO] [stdout]    --> guard/src/commands/test.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn test_with_data(test_data_files: &[PathBuf], rules: &RulesFile<'_>, verbose: bool) -> Result<i32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_test_case_report` is never used
[INFO] [stdout]    --> guard/src/commands/test.rs:188:16
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub (crate) fn print_test_case_report(by_result: &HashMap<String, indexmap::IndexSet<String>>) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseTree` is never constructed
[INFO] [stdout]  --> guard/src/commands/parse_tree.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(crate) struct ParseTree {}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/parse_tree.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ParseTree {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 10 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Migrate` is never constructed
[INFO] [stdout]   --> guard/src/commands/migrate.rs:24:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub(crate) struct Migrate {}
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Migrate {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 27 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DummyEval` is never constructed
[INFO] [stdout]  --> guard/src/commands/common_test_helpers.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(super) struct DummyEval{}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Command` is never used
[INFO] [stdout]  --> guard/src/command.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) trait Command {
[INFO] [stdout]   |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `str`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 |     data: &str,
[INFO] [stdout]    |           ^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider using `*const u8` and a length instead
[INFO] [stdout]    = note: string slices have no C equivalent
[INFO] [stdout]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `str`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 |     rules: &str,
[INFO] [stdout]    |            ^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider using `*const u8` and a length instead
[INFO] [stdout]    = note: string slices have no C equivalent
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2097:61
[INFO] [stdout]      |
[INFO] [stdout] 2097 | ...l_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<St...
[INFO] [stdout]      |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eval_type`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2117:36
[INFO] [stdout]      |
[INFO] [stdout] 2117 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stdout]      |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]     --> guard/src/rules/evaluate_tests.rs:2117:63
[INFO] [stdout]      |
[INFO] [stdout] 2117 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stdout]      |                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `std::result::Result<std::string::String, errors::Error>`, which is not FFI-safe
[INFO] [stdout]   --> guard/src/lib.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | ) -> crate::rules::Result<String> {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
[INFO] [stdout]    = note: enum has no representation hint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:950:9
[INFO] [stdout]     |
[INFO] [stdout] 950 | /         extract_variables(&rules.assignments,
[INFO] [stdout] 951 | |                           &mut literals,
[INFO] [stdout] 952 | |                           &mut pending);
[INFO] [stdout]     | |_______________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 950 |         let _ = extract_variables(&rules.assignments,
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1046:9
[INFO] [stdout]      |
[INFO] [stdout] 1046 | /         extract_variables(&block_type.assignments,
[INFO] [stdout] 1047 | |                           &mut literals,
[INFO] [stdout] 1048 | |                           &mut pending);
[INFO] [stdout]      | |_______________________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1046 |         let _ = extract_variables(&block_type.assignments,
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/rules/parser.rs:32:33
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span {
[INFO] [stdout]    |                                 ^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span<'_> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:645:27
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                           ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |        |       |     |
[INFO] [stdout]     |                           |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                           |        |       the same lifetime is hidden here
[INFO] [stdout]     |                           |        the same lifetime is hidden here
[INFO] [stdout]     |                           the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                               ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:659:26
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                          ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                          |        |       |     |
[INFO] [stdout]     |                          |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                          |        |       the same lifetime is hidden here
[INFO] [stdout]     |                          |        the same lifetime is hidden here
[INFO] [stdout]     |                          the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                              ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:843:40
[INFO] [stdout]     |
[INFO] [stdout] 841 | fn clause_with_map<'loc, A, M, T: 'loc>(input: Span<'loc>,
[INFO] [stdout]     |                                                     ---- the lifetime is named here
[INFO] [stdout] 842 |                          access: A,
[INFO] [stdout] 843 |                          mapper: M) -> IResult<Span<'loc>, T>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^----^^^^^
[INFO] [stdout]     |                                        |            |
[INFO] [stdout]     |                                        |            the same lifetime is named here
[INFO] [stdout]     |                                        the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]     |
[INFO] [stdout] 843 |                          mapper: M) -> IResult<'loc, Span<'loc>, T>
[INFO] [stdout]     |                                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1040:87
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                              ----                                     ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                              |                                        |            |
[INFO] [stdout]      |                                              |                                        |            the same lifetime is named here
[INFO] [stdout]      |                                              the lifetime is named here               the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<'loc, Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                                                                               +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1075:86
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                ----                                  ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                |                                     |            |
[INFO] [stdout]      |                                                |                                     |            the same lifetime is named here
[INFO] [stdout]      |                                                the lifetime is named here            the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<'loc, Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                                                              +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser_tests.rs:827:27
[INFO] [stdout]     |
[INFO] [stdout] 827 | fn to_query_part(vec: Vec<&str>) -> Vec<QueryPart> {
[INFO] [stdout]     |                           ^^^^          ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 827 | fn to_query_part(vec: Vec<&str>) -> Vec<QueryPart<'_>> {
[INFO] [stdout]     |                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/values.rs:155:17
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 let _ = write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/commands/files.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |                                         ^^^^^^^^^^                   ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<'_, T, C>
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate.rs:135:17
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 reader.read_to_string(&mut context);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let _ = reader.read_to_string(&mut context);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 145 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 | /         match &self.hierarchy_type {
[INFO] [stdout] 97 | |             StructureType::JSON => writeln!(writer, "{}", serde_json::to_string(&value)?),
[INFO] [stdout] 98 | |             StructureType::YAML => writeln!(writer, "{}", serde_yaml::to_string(&value)?),
[INFO] [stdout] 99 | |         };
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _ = match &self.hierarchy_type {
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let _ = writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |             writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let _ = writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let _ = writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 125 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |             write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 202 |             let _ = write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |             writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |             let _ = writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |         writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let _ = writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |         writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let _ = writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let _ = writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let _ = writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `query:` in this pattern is redundant
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender.rs:42:59
[INFO] [stdout]    |
[INFO] [stdout] 42 | ...                   let AccessQuery { query: query, match_all: all } =
[INFO] [stdout]    |                                         ^^^^^^^^^^^^ help: use shorthand field pattern: `query`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let _ = writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let _ = writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clause`
[INFO] [stdout]     --> guard/src/rules/parser_tests.rs:4121:17
[INFO] [stdout]      |
[INFO] [stdout] 4121 |     let (_span, clause) = rule_block_clause(from_str2(when_inside_when))?;
[INFO] [stdout]      |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_clause`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:86:41
[INFO] [stdout]    |
[INFO] [stdout] 86 |               skipped: HashSet<String>, longest_rule_len: usize) -> crate::rules::Result<()>
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `longest_rule_len`
[INFO] [stdout]    --> guard/src/commands/validate/common.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     longest_rule_len: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variable`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:42:36
[INFO] [stdout]    |
[INFO] [stdout] 42 |         fn resolve_variable(&self, variable: &str) -> Result<Vec<&PathAwareValue>> {
[INFO] [stdout]    |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_name`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:46:31
[INFO] [stdout]    |
[INFO] [stdout] 46 |         fn rule_status(&self, rule_name: &str) -> Result<Status> {
[INFO] [stdout]    |                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eval_type`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:34
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...   fn end_evaluation(&self, eval_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathA...
[INFO] [stdout]    |                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:61
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...al_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Sta...
[INFO] [stdout]    |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:89
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOp...
[INFO] [stdout]    |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_from`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:119
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOperator, bool)>) {
[INFO] [stdout]    |                                  ^^ help: if this is intentional, prefix it with an underscore: `_to`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:50:147
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOperator, bool)>) {
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eval_type`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:57:36
[INFO] [stdout]    |
[INFO] [stdout] 57 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stdout]    |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender_tests.rs:57:63
[INFO] [stdout]    |
[INFO] [stdout] 57 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stdout]    |                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:936:5
[INFO] [stdout]     |
[INFO] [stdout] 935 | pub(crate) struct RootScope<'s, 'loc> {
[INFO] [stdout]     |                   --------- field in this struct
[INFO] [stdout] 936 |     rules: &'s RulesFile<'loc>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RootScope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_type` is never read
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1034:5
[INFO] [stdout]      |
[INFO] [stdout] 1033 | pub(crate) struct BlockScope<'s, T> {
[INFO] [stdout]      |                   ---------- field in this struct
[INFO] [stdout] 1034 |     block_type: &'s Block<'s, T>,
[INFO] [stdout]      |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `comparison` is never used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1151:19
[INFO] [stdout]      |
[INFO] [stdout] 1129 | impl<'s> AutoReport<'s> {
[INFO] [stdout]      | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1151 |     pub(super) fn comparison(&mut self, status: Status, from: Option<PathAwareValue>, to: Option<PathAwareValue>, cmp: (CmpOperato...
[INFO] [stdout]      |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VariableResolver` is never constructed
[INFO] [stdout]    --> guard/src/rules/evaluate_tests.rs:884:8
[INFO] [stdout]     |
[INFO] [stdout] 884 | struct VariableResolver<'a, 'b>(&'a dyn EvaluationContext, HashMap<String, Vec<&'b PathAwareValue>>);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhenGuardBlockClause` is never constructed
[INFO] [stdout]    --> guard/src/rules/exprs.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub(crate) struct WhenGuardBlockClause<'loc> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `context`, `span`, and `kind` are never used
[INFO] [stdout]   --> guard/src/rules/parser.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl<'a> ParserError<'a> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 46 |     pub(crate) fn context(&self) -> &str {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub(crate) fn span(&self) -> &Span<'a> {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub(crate) fn kind(&self) -> nom::error::ErrorKind {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConjunctionsWrapper` is never constructed
[INFO] [stdout]     --> guard/src/rules/parser.rs:1532:19
[INFO] [stdout]      |
[INFO] [stdout] 1532 | pub(crate) struct ConjunctionsWrapper<'a>(pub(crate) Conjunctions<GuardClause<'a>>);
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_binary` is never used
[INFO] [stdout]   --> guard/src/rules/values.rs:42:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl CmpOperator {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub(crate) fn is_binary(&self) -> bool { !self.is_unary() }
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `drop_last` and `extend_with_value` are never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl Path {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub(crate) fn drop_last(&mut self) -> &mut Self {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub(crate) fn extend_with_value(&self, part: &Value) -> Result<Path, Error> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_scalar` is never used
[INFO] [stdout]    --> guard/src/rules/path_value.rs:675:19
[INFO] [stdout]     |
[INFO] [stdout] 634 | impl PathAwareValue {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 675 |     pub(crate) fn is_scalar(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SAMPLE_MULTIPLE` is never used
[INFO] [stdout]   --> guard/src/rules/path_value_tests.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const SAMPLE_MULTIPLE : &str = r#"{
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RULES` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) const RULES: (&str, &str) = ("rules", "r");
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA` is never used
[INFO] [stdout]   --> guard/src/commands/mod.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) const DATA: (&str, &str) = ("data", "d");
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn validate_and_return_json(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data_file_name` is never read
[INFO] [stdout]    --> guard/src/commands/validate.rs:274:5
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub(crate) struct ConsoleReporter<'r> {
[INFO] [stdout]     |                   --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 274 |     data_file_name: &'r str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConsoleReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_result_json` is never used
[INFO] [stdout]    --> guard/src/commands/validate.rs:375:12
[INFO] [stdout]     |
[INFO] [stdout] 362 | impl<'r, 'loc> ConsoleReporter<'r> {
[INFO] [stdout]     | ---------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub fn get_result_json(self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_format_type` is never read
[INFO] [stdout]   --> guard/src/commands/validate/generic_summary.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub(crate) struct GenericSummary<'a> {
[INFO] [stdout]    |                   -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     output_format_type: OutputFormatType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GenericSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_format_type` is never read
[INFO] [stdout]   --> guard/src/commands/validate/cfn_reporter.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) struct CfnReporter<'a> {
[INFO] [stdout]    |                   ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     output_format_type: OutputFormatType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CfnReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_and_return_json` is never used
[INFO] [stdout]   --> guard/src/commands/helper.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn validate_and_return_json(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DummyEval` is never constructed
[INFO] [stdout]  --> guard/src/commands/common_test_helpers.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(super) struct DummyEval{}
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/evaluate.rs:950:9
[INFO] [stdout]     |
[INFO] [stdout] 950 | /         extract_variables(&rules.assignments,
[INFO] [stdout] 951 | |                           &mut literals,
[INFO] [stdout] 952 | |                           &mut pending);
[INFO] [stdout]     | |_______________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 950 |         let _ = extract_variables(&rules.assignments,
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]     --> guard/src/rules/evaluate.rs:1046:9
[INFO] [stdout]      |
[INFO] [stdout] 1046 | /         extract_variables(&block_type.assignments,
[INFO] [stdout] 1047 | |                           &mut literals,
[INFO] [stdout] 1048 | |                           &mut pending);
[INFO] [stdout]      | |_______________________________________^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1046 |         let _ = extract_variables(&block_type.assignments,
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/rules/parser.rs:32:33
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span {
[INFO] [stdout]    |                                 ^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn from_str2(in_str: &str) -> Span<'_> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:645:27
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                           ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                           |        |       |     |
[INFO] [stdout]     |                           |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                           |        |       the same lifetime is hidden here
[INFO] [stdout]     |                           |        the same lifetime is hidden here
[INFO] [stdout]     |                           the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn extract_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                               ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:659:26
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span) -> IResult<Span, &str> {
[INFO] [stdout]     |                          ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                          |        |       |     |
[INFO] [stdout]     |                          |        |       |     the same lifetime is elided here
[INFO] [stdout]     |                          |        |       the same lifetime is hidden here
[INFO] [stdout]     |                          |        the same lifetime is hidden here
[INFO] [stdout]     |                          the lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 659 | fn custom_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stdout]     |                              ++++             +++     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser.rs:843:40
[INFO] [stdout]     |
[INFO] [stdout] 841 | fn clause_with_map<'loc, A, M, T: 'loc>(input: Span<'loc>,
[INFO] [stdout]     |                                                     ---- the lifetime is named here
[INFO] [stdout] 842 |                          access: A,
[INFO] [stdout] 843 |                          mapper: M) -> IResult<Span<'loc>, T>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^----^^^^^
[INFO] [stdout]     |                                        |            |
[INFO] [stdout]     |                                        |            the same lifetime is named here
[INFO] [stdout]     |                                        the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]     |
[INFO] [stdout] 843 |                          mapper: M) -> IResult<'loc, Span<'loc>, T>
[INFO] [stdout]     |                                                +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1040:87
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                              ----                                     ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                              |                                        |            |
[INFO] [stdout]      |                                              |                                        |            the same lifetime is named here
[INFO] [stdout]      |                                              the lifetime is named here               the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<'loc, Span<'loc>, Conjunctions<E>>
[INFO] [stdout]      |                                                                                               +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]     --> guard/src/rules/parser.rs:1075:86
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                ----                                  ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                                                |                                     |            |
[INFO] [stdout]      |                                                |                                     |            the same lifetime is named here
[INFO] [stdout]      |                                                the lifetime is named here            the same lifetime is hidden here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'loc`
[INFO] [stdout]      |
[INFO] [stdout] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<'loc, Span<'loc>, Disjunctions<E>>
[INFO] [stdout]      |                                                                                              +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> guard/src/rules/parser_tests.rs:827:27
[INFO] [stdout]     |
[INFO] [stdout] 827 | fn to_query_part(vec: Vec<&str>) -> Vec<QueryPart> {
[INFO] [stdout]     |                           ^^^^          ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 827 | fn to_query_part(vec: Vec<&str>) -> Vec<QueryPart<'_>> {
[INFO] [stdout]     |                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/rules/values.rs:155:17
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |                 let _ = write!(f, "{},{}", range.lower, range.upper);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> guard/src/commands/files.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stdout]    |                                         ^^^^^^^^^^                   ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                         |
[INFO] [stdout]    |                                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<'_, T, C>
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate.rs:135:17
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 reader.read_to_string(&mut context);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let _ = reader.read_to_string(&mut context);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/generic_summary.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 145 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/common.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 | /         match &self.hierarchy_type {
[INFO] [stdout] 97 | |             StructureType::JSON => writeln!(writer, "{}", serde_json::to_string(&value)?),
[INFO] [stdout] 98 | |             StructureType::YAML => writeln!(writer, "{}", serde_yaml::to_string(&value)?),
[INFO] [stdout] 99 | |         };
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _ = match &self.hierarchy_type {
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let _ = writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |             writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let _ = writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/validate/summary_table.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let _ = writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/validate/cfn_reporter.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |             writeln!(writer, "--");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 125 |             let _ = writeln!(writer, "--");
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/rulegen.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |             write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 202 |             let _ = write!(writer,"{}", generated_rules);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |             writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 92 |             let _ = writeln!(&mut migrated, "{}", assignment);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> guard/src/commands/migrate.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |         writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |         writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let _ = writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |         writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let _ = writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let _ = writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/commands/migrate.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let _ = writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `query:` in this pattern is redundant
[INFO] [stdout]   --> guard/src/commands/aws_meta_appender.rs:42:59
[INFO] [stdout]    |
[INFO] [stdout] 42 | ...                   let AccessQuery { query: query, match_all: all } =
[INFO] [stdout]    |                                         ^^^^^^^^^^^^ help: use shorthand field pattern: `query`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let _ = writeln!(f, "when {} {{", self.when_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> guard/src/migrate/parser.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let _ = writeln!(f, "            {}", self.check_condition);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 15.73s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "13935b183793ca05137cab5e8a4ebcd81697de76109430e355c70fea39f63968", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "13935b183793ca05137cab5e8a4ebcd81697de76109430e355c70fea39f63968", kill_on_drop: false }`
[INFO] [stdout] 13935b183793ca05137cab5e8a4ebcd81697de76109430e355c70fea39f63968
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 183c2dc49c47b596dabbe1906310cb53773a81c717bc831d4f88da77f0c58fca
[INFO] running `Command { std: "docker" "start" "-a" "183c2dc49c47b596dabbe1906310cb53773a81c717bc831d4f88da77f0c58fca", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `WhenConditions`
[INFO] [stderr]  --> guard/src/rules/evaluate.rs:9:114
[INFO] [stderr]   |
[INFO] [stderr] 9 | use crate::rules::exprs::{GuardClause, GuardNamedRuleClause, QueryPart, RuleClause, TypeBlock, BlockGuardClause, WhenConditions, When...
[INFO] [stderr]   |                                                                                                                  ^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused label
[INFO] [stderr]    --> guard/src/rules/evaluate.rs:684:12
[INFO] [stderr]     |
[INFO] [stderr] 684 |         Ok('outer: loop {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fmt::Write`
[INFO] [stderr]  --> guard/src/rules/path_value.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::fmt::Write;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ALPHABETICAL` and `LAST_MODIFIED`
[INFO] [stderr]   --> guard/src/commands/validate.rs:10:23
[INFO] [stderr]    |
[INFO] [stderr] 10 | use crate::commands::{ALPHABETICAL, LAST_MODIFIED};
[INFO] [stderr]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `regular_ordering`
[INFO] [stderr]   --> guard/src/commands/validate.rs:12:83
[INFO] [stderr]    |
[INFO] [stderr] 12 | use crate::commands::files::{alpabetical, get_files, iterate_over, last_modified, regular_ordering};
[INFO] [stderr]    |                                                                                   ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `colored::*`
[INFO] [stderr]  --> guard/src/commands/validate/generic_summary.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use colored::*;
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde::Serialize`
[INFO] [stderr]  --> guard/src/commands/validate/generic_summary.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use serde::Serialize;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `itertools::Itertools`
[INFO] [stderr]   --> guard/src/commands/validate/generic_summary.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 14 | use itertools::Itertools;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `path_value`
[INFO] [stderr]  --> guard/src/commands/validate/common.rs:5:36
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::rules::{EvaluationType, path_value, Status};
[INFO] [stderr]   |                                    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::rules::path_value::Path`
[INFO] [stderr]  --> guard/src/commands/validate/common.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::rules::path_value::Path;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `colored::*`
[INFO] [stderr]  --> guard/src/commands/validate/cfn_reporter.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use colored::*;
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stderr]  --> guard/src/commands/validate/cfn_reporter.rs:8:13
[INFO] [stderr]   |
[INFO] [stderr] 8 | use serde::{Deserialize, Serialize};
[INFO] [stderr]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ErrorKind` and `Error`
[INFO] [stderr]   --> guard/src/commands/validate/cfn_reporter.rs:13:28
[INFO] [stderr]    |
[INFO] [stderr] 13 | use crate::rules::errors::{Error, ErrorKind};
[INFO] [stderr]    |                            ^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cell::Ref`
[INFO] [stderr]  --> guard/src/commands/tracker.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::cell::Ref;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `QueryPart`
[INFO] [stderr]  --> guard/src/commands/aws_meta_appender.rs:3:27
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::rules::exprs::{QueryPart, AccessQuery};
[INFO] [stderr]   |                           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> guard/src/migrate/parser.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> guard/src/commands/validate.rs:45:28
[INFO] [stderr]    |
[INFO] [stderr] 45 |               writer: &mut Write,
[INFO] [stderr]    |                            ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 45 |               writer: &mut dyn Write,
[INFO] [stderr]    |                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `colored::Colorize`
[INFO] [stderr]  --> guard/src/rules/evaluate.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use colored::Colorize;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BitFlag`
[INFO] [stderr]   --> guard/src/commands/validate.rs:21:18
[INFO] [stderr]    |
[INFO] [stderr] 21 | use enumflags2::{BitFlag, BitFlags};
[INFO] [stderr]    |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `longest_rule_len`
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:86:41
[INFO] [stderr]    |
[INFO] [stderr] 86 |               skipped: HashSet<String>, longest_rule_len: usize) -> crate::rules::Result<()>
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `longest_rule_len`
[INFO] [stderr]    --> guard/src/commands/validate/common.rs:222:5
[INFO] [stderr]     |
[INFO] [stderr] 222 |     longest_rule_len: usize,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stderr] 
[INFO] [stderr] warning: field `rules` is never read
[INFO] [stderr]    --> guard/src/rules/evaluate.rs:936:5
[INFO] [stderr]     |
[INFO] [stderr] 935 | pub(crate) struct RootScope<'s, 'loc> {
[INFO] [stderr]     |                   --------- field in this struct
[INFO] [stderr] 936 |     rules: &'s RulesFile<'loc>,
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `RootScope` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `block_type` is never read
[INFO] [stderr]     --> guard/src/rules/evaluate.rs:1034:5
[INFO] [stderr]      |
[INFO] [stderr] 1033 | pub(crate) struct BlockScope<'s, T> {
[INFO] [stderr]      |                   ---------- field in this struct
[INFO] [stderr] 1034 |     block_type: &'s Block<'s, T>,
[INFO] [stderr]      |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `comparison` is never used
[INFO] [stderr]     --> guard/src/rules/evaluate.rs:1151:19
[INFO] [stderr]      |
[INFO] [stderr] 1129 | impl<'s> AutoReport<'s> {
[INFO] [stderr]      | ----------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 1151 |     pub(super) fn comparison(&mut self, status: Status, from: Option<PathAwareValue>, to: Option<PathAwareValue>, cmp: (CmpOperato...
[INFO] [stderr]      |                   ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WhenGuardBlockClause` is never constructed
[INFO] [stderr]    --> guard/src/rules/exprs.rs:171:19
[INFO] [stderr]     |
[INFO] [stderr] 171 | pub(crate) struct WhenGuardBlockClause<'loc> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `context`, `span`, and `kind` are never used
[INFO] [stderr]   --> guard/src/rules/parser.rs:46:19
[INFO] [stderr]    |
[INFO] [stderr] 45 | impl<'a> ParserError<'a> {
[INFO] [stderr]    | ------------------------ methods in this implementation
[INFO] [stderr] 46 |     pub(crate) fn context(&self) -> &str {
[INFO] [stderr]    |                   ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 50 |     pub(crate) fn span(&self) -> &Span<'a> {
[INFO] [stderr]    |                   ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 54 |     pub(crate) fn kind(&self) -> nom::error::ErrorKind {
[INFO] [stderr]    |                   ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `clauses` is never used
[INFO] [stderr]     --> guard/src/rules/parser.rs:1122:4
[INFO] [stderr]      |
[INFO] [stderr] 1122 | fn clauses(input: Span) -> IResult<Span, Conjunctions<GuardClause>> {
[INFO] [stderr]      |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ConjunctionsWrapper` is never constructed
[INFO] [stderr]     --> guard/src/rules/parser.rs:1532:19
[INFO] [stderr]      |
[INFO] [stderr] 1532 | pub(crate) struct ConjunctionsWrapper<'a>(pub(crate) Conjunctions<GuardClause<'a>>);
[INFO] [stderr]      |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_unary` and `is_binary` are never used
[INFO] [stderr]   --> guard/src/rules/values.rs:31:19
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl CmpOperator {
[INFO] [stderr]    | ---------------- methods in this implementation
[INFO] [stderr] 31 |     pub(crate) fn is_unary(&self) -> bool {
[INFO] [stderr]    |                   ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub(crate) fn is_binary(&self) -> bool { !self.is_unary() }
[INFO] [stderr]    |                   ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_linked_hashmap` is never used
[INFO] [stderr]    --> guard/src/rules/values.rs:309:15
[INFO] [stderr]     |
[INFO] [stderr] 309 | pub(super) fn make_linked_hashmap<'a, I>(values: I) -> IndexMap<String, Value>
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `drop_last` and `extend_with_value` are never used
[INFO] [stderr]    --> guard/src/rules/path_value.rs:92:19
[INFO] [stderr]     |
[INFO] [stderr]  75 | impl Path {
[INFO] [stderr]     | --------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  92 |     pub(crate) fn drop_last(&mut self) -> &mut Self {
[INFO] [stderr]     |                   ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     pub(crate) fn extend_with_value(&self, part: &Value) -> Result<Path, Error> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_scalar` is never used
[INFO] [stderr]    --> guard/src/rules/path_value.rs:675:19
[INFO] [stderr]     |
[INFO] [stderr] 634 | impl PathAwareValue {
[INFO] [stderr]     | ------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 675 |     pub(crate) fn is_scalar(&self) -> bool {
[INFO] [stderr]     |                   ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ALPHABETICAL` is never used
[INFO] [stderr]   --> guard/src/commands/mod.rs:16:18
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub(crate) const ALPHABETICAL: (&str, &str) = ("alphabetical", "a");
[INFO] [stderr]    |                  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LAST_MODIFIED` is never used
[INFO] [stderr]   --> guard/src/commands/mod.rs:17:18
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub(crate) const LAST_MODIFIED: (&str, &str) = ("last-modified", "l");
[INFO] [stderr]    |                  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `RULES` is never used
[INFO] [stderr]   --> guard/src/commands/mod.rs:18:18
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub(crate) const RULES: (&str, &str) = ("rules", "r");
[INFO] [stderr]    |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DATA` is never used
[INFO] [stderr]   --> guard/src/commands/mod.rs:19:18
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub(crate) const DATA: (&str, &str) = ("data", "d");
[INFO] [stderr]    |                  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_file_content` is never used
[INFO] [stderr]   --> guard/src/commands/files.rs:10:15
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub(crate) fn read_file_content(file: File) -> Result<String, std::io::Error> {
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_files` is never used
[INFO] [stderr]   --> guard/src/commands/files.rs:17:15
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub(crate) fn get_files<F>(file: &str, sort: F) -> Result<Vec<PathBuf>, Error>
[INFO] [stderr]    |               ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_files_with_filter` is never used
[INFO] [stderr]   --> guard/src/commands/files.rs:37:15
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub(crate) fn get_files_with_filter<S, F>(file: &str, sort: S, filter: F) -> Result<Vec<PathBuf>, Error>
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Iter` is never constructed
[INFO] [stderr]   --> guard/src/commands/files.rs:64:19
[INFO] [stderr]    |
[INFO] [stderr] 64 | pub(crate) struct Iter<'i, T, C>
[INFO] [stderr]    |                   ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `iterate_over` is never used
[INFO] [stderr]   --> guard/src/commands/files.rs:95:15
[INFO] [stderr]    |
[INFO] [stderr] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stderr]    |               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `alpabetical` is never used
[INFO] [stderr]    --> guard/src/commands/files.rs:103:15
[INFO] [stderr]     |
[INFO] [stderr] 103 | pub(crate) fn alpabetical(first : &walkdir::DirEntry, second: &walkdir::DirEntry) -> Ordering {
[INFO] [stderr]     |               ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `last_modified` is never used
[INFO] [stderr]    --> guard/src/commands/files.rs:107:15
[INFO] [stderr]     |
[INFO] [stderr] 107 | pub(crate) fn last_modified(first: &walkdir::DirEntry, second: &walkdir::DirEntry) -> Ordering {
[INFO] [stderr]     |               ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `regular_ordering` is never used
[INFO] [stderr]    --> guard/src/commands/files.rs:120:15
[INFO] [stderr]     |
[INFO] [stderr] 120 | pub(crate) fn regular_ordering(_first: &walkdir::DirEntry, _second: &walkdir::DirEntry) -> Ordering {
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Type` is never used
[INFO] [stderr]   --> guard/src/commands/validate.rs:31:17
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub(crate) enum Type {
[INFO] [stderr]    |                 ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `OutputFormatType` is never used
[INFO] [stderr]   --> guard/src/commands/validate.rs:37:17
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub(crate) enum OutputFormatType {
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `report` is never used
[INFO] [stderr]   --> guard/src/commands/validate.rs:44:8
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub(crate) trait Reporter : Debug {
[INFO] [stderr]    |                  -------- method in this trait
[INFO] [stderr] 44 |     fn report(&self,
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Validate` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate.rs:54:19
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub(crate) struct Validate {}
[INFO] [stderr]    |                   ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/validate.rs:57:19
[INFO] [stderr]    |
[INFO] [stderr] 56 | impl Validate {
[INFO] [stderr]    | ------------- associated function in this implementation
[INFO] [stderr] 57 |     pub(crate) fn new() -> Self {
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `validate_and_return_json` is never used
[INFO] [stderr]    --> guard/src/commands/validate.rs:238:8
[INFO] [stderr]     |
[INFO] [stderr] 238 | pub fn validate_and_return_json(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `reporters`, `rules_file_name`, `data_file_name`, `verbose`, `print_json`, and `show_clause_failures` are never read
[INFO] [stderr]    --> guard/src/commands/validate.rs:272:5
[INFO] [stderr]     |
[INFO] [stderr] 270 | pub(crate) struct ConsoleReporter<'r> {
[INFO] [stderr]     |                   --------------- fields in this struct
[INFO] [stderr] 271 |     root_context: StackTracker<'r>,
[INFO] [stderr] 272 |     reporters: &'r Vec<Box<dyn Reporter + 'r>>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 273 |     rules_file_name: &'r str,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 274 |     data_file_name: &'r str,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr] 275 |     verbose: bool,
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr] 276 |     print_json: bool,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] 277 |     show_clause_failures: bool,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ConsoleReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `indent_spaces` is never used
[INFO] [stderr]    --> guard/src/commands/validate.rs:280:4
[INFO] [stderr]     |
[INFO] [stderr] 280 | fn indent_spaces(indent: usize) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_context` is never used
[INFO] [stderr]    --> guard/src/commands/validate.rs:286:15
[INFO] [stderr]     |
[INFO] [stderr] 286 | pub(super) fn print_context(cxt: &StatusContext, depth: usize) {
[INFO] [stderr]     |               ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_failing_clause` is never used
[INFO] [stderr]    --> guard/src/commands/validate.rs:323:4
[INFO] [stderr]     |
[INFO] [stderr] 323 | fn print_failing_clause(rules_file_name: &str, rule: &StatusContext, longest: usize) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `report` is never used
[INFO] [stderr]    --> guard/src/commands/validate.rs:381:8
[INFO] [stderr]     |
[INFO] [stderr] 362 | impl<'r, 'loc> ConsoleReporter<'r> {
[INFO] [stderr]     | ---------------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 381 |     fn report(self) -> crate::rules::Result<()> {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `INDENT` is never used
[INFO] [stderr]    --> guard/src/commands/validate.rs:434:7
[INFO] [stderr]     |
[INFO] [stderr] 434 | const INDENT: &str = "    ";
[INFO] [stderr]     |       ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_against_data_input` is never used
[INFO] [stderr]    --> guard/src/commands/validate.rs:464:4
[INFO] [stderr]     |
[INFO] [stderr] 464 | fn evaluate_against_data_input<'r>(data_type: Type,
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GenericSummary` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate/generic_summary.rs:17:19
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub(crate) struct GenericSummary<'a> {
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/validate/generic_summary.rs:25:19
[INFO] [stderr]    |
[INFO] [stderr] 24 | impl<'a> GenericSummary<'a> {
[INFO] [stderr]    | --------------------------- associated function in this implementation
[INFO] [stderr] 25 |     pub(crate) fn new<'r>(data_file_name: &'r str,
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SingleLineSummary` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate/generic_summary.rs:97:8
[INFO] [stderr]    |
[INFO] [stderr] 97 | struct SingleLineSummary{}
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `retrieval_error_message` is never used
[INFO] [stderr]   --> guard/src/commands/validate/generic_summary.rs:99:4
[INFO] [stderr]    |
[INFO] [stderr] 99 | fn retrieval_error_message(rules_file: &str, data_file: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `unary_error_message` is never used
[INFO] [stderr]    --> guard/src/commands/validate/generic_summary.rs:109:4
[INFO] [stderr]     |
[INFO] [stderr] 109 | fn unary_error_message(rules_file: &str, data_file: &str, op_msg: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `binary_error_message` is never used
[INFO] [stderr]    --> guard/src/commands/validate/generic_summary.rs:121:4
[INFO] [stderr]     |
[INFO] [stderr] 121 | fn binary_error_message(rules_file: &str, data_file: &str, op_msg: &str, info: &NameInfo<'_>) -> crate::rules::Result<String> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Comparison` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:16:19
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub(super) struct Comparison {
[INFO] [stderr]    |                   ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `NameInfo` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:31:19
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub(super) struct NameInfo<'a> {
[INFO] [stderr]    |                   ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `GenericReporter` is never used
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:40:18
[INFO] [stderr]    |
[INFO] [stderr] 40 | pub(super) trait GenericReporter: Debug {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `StructureType` is never used
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:52:17
[INFO] [stderr]    |
[INFO] [stderr] 52 | pub(super) enum StructureType {
[INFO] [stderr]    |                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StructuredSummary` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:58:19
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub(super) struct StructuredSummary {
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:63:19
[INFO] [stderr]    |
[INFO] [stderr] 62 | impl StructuredSummary {
[INFO] [stderr]    | ---------------------- associated function in this implementation
[INFO] [stderr] 63 |     pub(super) fn new(hierarchy_type: StructureType) -> Self {
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DataOutput` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:71:8
[INFO] [stderr]    |
[INFO] [stderr] 71 | struct DataOutput<'a> {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_name_info` is never used
[INFO] [stderr]    --> guard/src/commands/validate/common.rs:108:15
[INFO] [stderr]     |
[INFO] [stderr] 108 | pub(super) fn extract_name_info<'a>(rule_name: &'a str,
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `colored_string` is never used
[INFO] [stderr]    --> guard/src/commands/validate/common.rs:162:15
[INFO] [stderr]     |
[INFO] [stderr] 162 | pub(super) fn colored_string(status: Option<Status>) -> ColoredString {
[INFO] [stderr]     |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `find_all_failing_clauses` is never used
[INFO] [stderr]    --> guard/src/commands/validate/common.rs:174:15
[INFO] [stderr]     |
[INFO] [stderr] 174 | pub(super) fn find_all_failing_clauses(context: &StatusContext) -> Vec<&StatusContext> {
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_compliant_skipped_info` is never used
[INFO] [stderr]    --> guard/src/commands/validate/common.rs:199:15
[INFO] [stderr]     |
[INFO] [stderr] 199 | pub(super) fn print_compliant_skipped_info(writer: &mut dyn Write,
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_name_info` is never used
[INFO] [stderr]    --> guard/src/commands/validate/common.rs:219:15
[INFO] [stderr]     |
[INFO] [stderr] 219 | pub(super) fn print_name_info<R, U, B>(
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SummaryType` is never used
[INFO] [stderr]   --> guard/src/commands/validate/summary_table.rs:13:17
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub(super) enum SummaryType {
[INFO] [stderr]    |                 ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SummaryTable` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate/summary_table.rs:21:19
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub(super) struct SummaryTable<'r> {
[INFO] [stderr]    |                   ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/validate/summary_table.rs:28:19
[INFO] [stderr]    |
[INFO] [stderr] 27 | impl<'a> SummaryTable<'a> {
[INFO] [stderr]    | ------------------------- associated function in this implementation
[INFO] [stderr] 28 |     pub(crate) fn new<'r>(rules_file_name: &'r str, data_file_name: &'r str, summary_type: BitFlags<SummaryType>) -> SummaryTable<'r> {
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_partition` is never used
[INFO] [stderr]   --> guard/src/commands/validate/summary_table.rs:35:4
[INFO] [stderr]    |
[INFO] [stderr] 35 | fn print_partition(writer: &mut dyn Write,
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CfnReporter` is never constructed
[INFO] [stderr]   --> guard/src/commands/validate/cfn_reporter.rs:23:19
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub(crate) struct CfnReporter<'a> {
[INFO] [stderr]    |                   ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/validate/cfn_reporter.rs:31:19
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl<'a> CfnReporter<'a> {
[INFO] [stderr]    | ------------------------ associated function in this implementation
[INFO] [stderr] 31 |     pub(crate) fn new<'r>(data_file_name: &'r str,
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SingleLineReporter` is never constructed
[INFO] [stderr]    --> guard/src/commands/validate/cfn_reporter.rs:110:8
[INFO] [stderr]     |
[INFO] [stderr] 110 | struct SingleLineReporter {}
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Rulegen` is never constructed
[INFO] [stderr]   --> guard/src/commands/rulegen.rs:14:19
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub(crate) struct Rulegen {}
[INFO] [stderr]    |                   ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/rulegen.rs:17:19
[INFO] [stderr]    |
[INFO] [stderr] 16 | impl Rulegen {
[INFO] [stderr]    | ------------ associated function in this implementation
[INFO] [stderr] 17 |     pub(crate) fn new() -> Self {
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_template_and_call_gen` is never used
[INFO] [stderr]   --> guard/src/commands/rulegen.rs:52:8
[INFO] [stderr]    |
[INFO] [stderr] 52 | pub fn parse_template_and_call_gen(template_contents: &str) -> HashMap<String, HashMap<String, HashSet<String>>>{
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `gen_rules` is never used
[INFO] [stderr]   --> guard/src/commands/rulegen.rs:81:4
[INFO] [stderr]    |
[INFO] [stderr] 81 | fn gen_rules(cfn_resources: HashMap<String, Value>) -> HashMap<String, HashMap<String, HashSet<String>>> {
[INFO] [stderr]    |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_rules` is never used
[INFO] [stderr]    --> guard/src/commands/rulegen.rs:172:4
[INFO] [stderr]     |
[INFO] [stderr] 172 | fn print_rules(rule_map : HashMap<String, HashMap<String, HashSet<String>>>, mut writer : Box<dyn std::io::Write>) {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Test` is never constructed
[INFO] [stderr]   --> guard/src/commands/test.rs:23:19
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub(crate) struct Test {}
[INFO] [stderr]    |                   ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/test.rs:26:19
[INFO] [stderr]    |
[INFO] [stderr] 25 | impl Test {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 26 |     pub(crate) fn new() -> Self {
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TestExpectations` is never constructed
[INFO] [stderr]    --> guard/src/commands/test.rs:107:8
[INFO] [stderr]     |
[INFO] [stderr] 107 | struct TestExpectations {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TestSpec` is never constructed
[INFO] [stderr]    --> guard/src/commands/test.rs:112:8
[INFO] [stderr]     |
[INFO] [stderr] 112 | struct TestSpec {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_with_data` is never used
[INFO] [stderr]    --> guard/src/commands/test.rs:118:4
[INFO] [stderr]     |
[INFO] [stderr] 118 | fn test_with_data(test_data_files: &[PathBuf], rules: &RulesFile<'_>, verbose: bool) -> Result<i32> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_test_case_report` is never used
[INFO] [stderr]    --> guard/src/commands/test.rs:188:16
[INFO] [stderr]     |
[INFO] [stderr] 188 | pub (crate) fn print_test_case_report(by_result: &HashMap<String, indexmap::IndexSet<String>>) {
[INFO] [stderr]     |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ParseTree` is never constructed
[INFO] [stderr]  --> guard/src/commands/parse_tree.rs:7:19
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub(crate) struct ParseTree {}
[INFO] [stderr]   |                   ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/parse_tree.rs:10:19
[INFO] [stderr]    |
[INFO] [stderr]  9 | impl ParseTree {
[INFO] [stderr]    | -------------- associated function in this implementation
[INFO] [stderr] 10 |     pub(crate) fn new() -> Self {
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Migrate` is never constructed
[INFO] [stderr]   --> guard/src/commands/migrate.rs:24:19
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub(crate) struct Migrate {}
[INFO] [stderr]    |                   ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> guard/src/commands/migrate.rs:27:19
[INFO] [stderr]    |
[INFO] [stderr] 26 | impl Migrate {
[INFO] [stderr]    | ------------ associated function in this implementation
[INFO] [stderr] 27 |     pub(crate) fn new() -> Self {
[INFO] [stderr]    |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `migrated_rules_by_type` is never used
[INFO] [stderr]   --> guard/src/commands/migrate.rs:87:15
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub(crate) fn migrated_rules_by_type(rules: &[RuleLineType],
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `aggregate_by_type` is never used
[INFO] [stderr]    --> guard/src/commands/migrate.rs:110:15
[INFO] [stderr]     |
[INFO] [stderr] 110 | pub(crate) fn aggregate_by_type(rules: &Vec<RuleLineType>) -> HashMap<TypeName, indexmap::IndexSet<&Clause>> {
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_resource_types_in_ruleset` is never used
[INFO] [stderr]    --> guard/src/commands/migrate.rs:132:16
[INFO] [stderr]     |
[INFO] [stderr] 132 | pub (crate) fn get_resource_types_in_ruleset(rules: &Vec<RuleLineType>) -> Result<Vec<TypeName>> {
[INFO] [stderr]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `migrate_rules` is never used
[INFO] [stderr]    --> guard/src/commands/migrate.rs:149:16
[INFO] [stderr]     |
[INFO] [stderr] 149 | pub (crate) fn migrate_rules(rules: Vec<RuleLineType>) -> Result<String> {
[INFO] [stderr]     |                ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MetadataAppender` is never constructed
[INFO] [stderr]  --> guard/src/commands/aws_meta_appender.rs:7:19
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub(super) struct MetadataAppender<'d> {
[INFO] [stderr]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DummyEval` is never constructed
[INFO] [stderr]  --> guard/src/commands/common_test_helpers.rs:6:19
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub(super) struct DummyEval{}
[INFO] [stderr]   |                   ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `Command` is never used
[INFO] [stderr]  --> guard/src/command.rs:5:18
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub(crate) trait Command {
[INFO] [stderr]   |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `OldGuardValues` is never used
[INFO] [stderr]   --> guard/src/migrate/parser.rs:21:10
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub enum OldGuardValues {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Assignment` is never constructed
[INFO] [stderr]   --> guard/src/migrate/parser.rs:44:19
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub(crate) struct Assignment {
[INFO] [stderr]    |                   ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `CmpOperator` is never used
[INFO] [stderr]   --> guard/src/migrate/parser.rs:56:17
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub(crate) enum CmpOperator {
[INFO] [stderr]    |                 ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PropertyComparison` is never constructed
[INFO] [stderr]   --> guard/src/migrate/parser.rs:82:19
[INFO] [stderr]    |
[INFO] [stderr] 82 | pub(crate) struct PropertyComparison {
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BaseRule` is never constructed
[INFO] [stderr]    --> guard/src/migrate/parser.rs:109:19
[INFO] [stderr]     |
[INFO] [stderr] 109 | pub(crate) struct BaseRule {
[INFO] [stderr]     |                   ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ConditionalRule` is never constructed
[INFO] [stderr]    --> guard/src/migrate/parser.rs:128:19
[INFO] [stderr]     |
[INFO] [stderr] 128 | pub(crate) struct ConditionalRule {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Rule` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:143:17
[INFO] [stderr]     |
[INFO] [stderr] 143 | pub(crate) enum Rule {
[INFO] [stderr]     |                 ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Clause` is never constructed
[INFO] [stderr]    --> guard/src/migrate/parser.rs:157:19
[INFO] [stderr]     |
[INFO] [stderr] 157 | pub(crate) struct Clause {
[INFO] [stderr]     |                   ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `RuleLineType` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:171:17
[INFO] [stderr]     |
[INFO] [stderr] 171 | pub(crate) enum RuleLineType {
[INFO] [stderr]     |                 ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_variable_dereference` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:195:16
[INFO] [stderr]     |
[INFO] [stderr] 195 | pub (crate) fn parse_variable_dereference(input: Span) -> IResult<Span, String> {
[INFO] [stderr]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_complete_value` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:202:27
[INFO] [stderr]     |
[INFO] [stderr] 202 | pub(in crate::migrate) fn parse_complete_value(input: Span) -> IResult<Span, Span> {
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `comment` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:216:27
[INFO] [stderr]     |
[INFO] [stderr] 216 | pub(in crate::migrate) fn comment(input: Span) ->IResult<Span, String> {
[INFO] [stderr]     |                           ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_old_guard_value` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:222:28
[INFO] [stderr]     |
[INFO] [stderr] 222 | pub (in crate::migrate) fn parse_old_guard_value(input:Span) -> IResult<Span, OldGuardValues> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `assignment` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:240:15
[INFO] [stderr]     |
[INFO] [stderr] 240 | pub(crate) fn assignment(input: Span) -> IResult<Span, Assignment> {
[INFO] [stderr]     |               ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `value_operator` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:267:27
[INFO] [stderr]     |
[INFO] [stderr] 267 | pub(in crate::migrate) fn value_operator(input: Span) -> IResult<Span, CmpOperator> {
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `property_path` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:290:27
[INFO] [stderr]     |
[INFO] [stderr] 290 | pub(in crate::migrate) fn property_path(input: Span) -> IResult<Span, String> {
[INFO] [stderr]     |                           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `property_comparison` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:297:27
[INFO] [stderr]     |
[INFO] [stderr] 297 | pub(in crate::migrate) fn property_comparison(input: Span) -> IResult<Span, PropertyComparison> {
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `base_rule` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:315:27
[INFO] [stderr]     |
[INFO] [stderr] 315 | pub(in crate::migrate) fn base_rule(input: Span) -> IResult<Span, BaseRule> {
[INFO] [stderr]     |                           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `conditional_rule` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:339:27
[INFO] [stderr]     |
[INFO] [stderr] 339 | pub(in crate::migrate) fn conditional_rule(input: Span) -> IResult<Span, ConditionalRule> {
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `custom_message` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:361:27
[INFO] [stderr]     |
[INFO] [stderr] 361 | pub(in crate::migrate) fn custom_message(input: Span) -> IResult<Span, String> {
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rule` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:368:27
[INFO] [stderr]     |
[INFO] [stderr] 368 | pub(in crate::migrate) fn rule(input: Span) -> IResult<Span, Rule> {
[INFO] [stderr]     |                           ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `clause` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:381:27
[INFO] [stderr]     |
[INFO] [stderr] 381 | pub(in crate::migrate) fn clause(input: Span) -> IResult<Span, Clause> {
[INFO] [stderr]     |                           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `empty_line` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:388:27
[INFO] [stderr]     |
[INFO] [stderr] 388 | pub(in crate::migrate) fn empty_line(input: Span) -> IResult<Span, RuleLineType> {
[INFO] [stderr]     |                           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rule_line` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:394:27
[INFO] [stderr]     |
[INFO] [stderr] 394 | pub(in crate::migrate) fn rule_line(input: Span) ->IResult<Span, RuleLineType> {
[INFO] [stderr]     |                           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_rules_file` is never used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:408:15
[INFO] [stderr]     |
[INFO] [stderr] 408 | pub(crate) fn parse_rules_file(input: &String, file_name: &String) -> Result<Vec<RuleLineType>, Error> {
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `extern` fn uses type `str`, which is not FFI-safe
[INFO] [stderr]   --> guard/src/lib.rs:10:11
[INFO] [stderr]    |
[INFO] [stderr] 10 |     data: &str,
[INFO] [stderr]    |           ^^^^ not FFI-safe
[INFO] [stderr]    |
[INFO] [stderr]    = help: consider using `*const u8` and a length instead
[INFO] [stderr]    = note: string slices have no C equivalent
[INFO] [stderr]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `extern` fn uses type `str`, which is not FFI-safe
[INFO] [stderr]   --> guard/src/lib.rs:11:12
[INFO] [stderr]    |
[INFO] [stderr] 11 |     rules: &str,
[INFO] [stderr]    |            ^^^^ not FFI-safe
[INFO] [stderr]    |
[INFO] [stderr]    = help: consider using `*const u8` and a length instead
[INFO] [stderr]    = note: string slices have no C equivalent
[INFO] [stderr] 
[INFO] [stderr] warning: `extern` fn uses type `std::result::Result<std::string::String, errors::Error>`, which is not FFI-safe
[INFO] [stderr]   --> guard/src/lib.rs:12:6
[INFO] [stderr]    |
[INFO] [stderr] 12 | ) -> crate::rules::Result<String> {
[INFO] [stderr]    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stderr]    |
[INFO] [stderr]    = help: consider adding a `#[repr(C)]`, `#[repr(transparent)]`, or integer `#[repr(...)]` attribute to this enum
[INFO] [stderr]    = note: enum has no representation hint
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/rules/evaluate.rs:950:9
[INFO] [stderr]     |
[INFO] [stderr] 950 | /         extract_variables(&rules.assignments,
[INFO] [stderr] 951 | |                           &mut literals,
[INFO] [stderr] 952 | |                           &mut pending);
[INFO] [stderr]     | |_______________________________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 950 |         let _ = extract_variables(&rules.assignments,
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]     --> guard/src/rules/evaluate.rs:1046:9
[INFO] [stderr]      |
[INFO] [stderr] 1046 | /         extract_variables(&block_type.assignments,
[INFO] [stderr] 1047 | |                           &mut literals,
[INFO] [stderr] 1048 | |                           &mut pending);
[INFO] [stderr]      | |_______________________________________^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1046 |         let _ = extract_variables(&block_type.assignments,
[INFO] [stderr]      |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> guard/src/rules/parser.rs:32:33
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub(crate) fn from_str2(in_str: &str) -> Span {
[INFO] [stderr]    |                                 ^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                                 |
[INFO] [stderr]    |                                 the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub(crate) fn from_str2(in_str: &str) -> Span<'_> {
[INFO] [stderr]    |                                              ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> guard/src/rules/parser.rs:645:27
[INFO] [stderr]     |
[INFO] [stderr] 645 | fn extract_message(input: Span) -> IResult<Span, &str> {
[INFO] [stderr]     |                           ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                           |        |       |     |
[INFO] [stderr]     |                           |        |       |     the same lifetime is elided here
[INFO] [stderr]     |                           |        |       the same lifetime is hidden here
[INFO] [stderr]     |                           |        the same lifetime is hidden here
[INFO] [stderr]     |                           the lifetime is hidden here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 645 | fn extract_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stderr]     |                               ++++             +++     ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> guard/src/rules/parser.rs:659:26
[INFO] [stderr]     |
[INFO] [stderr] 659 | fn custom_message(input: Span) -> IResult<Span, &str> {
[INFO] [stderr]     |                          ^^^^     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                          |        |       |     |
[INFO] [stderr]     |                          |        |       |     the same lifetime is elided here
[INFO] [stderr]     |                          |        |       the same lifetime is hidden here
[INFO] [stderr]     |                          |        the same lifetime is hidden here
[INFO] [stderr]     |                          the lifetime is hidden here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 659 | fn custom_message(input: Span<'_>) -> IResult<'_, Span<'_>, &str> {
[INFO] [stderr]     |                              ++++             +++     ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stderr]    --> guard/src/rules/parser.rs:843:40
[INFO] [stderr]     |
[INFO] [stderr] 841 | fn clause_with_map<'loc, A, M, T: 'loc>(input: Span<'loc>,
[INFO] [stderr]     |                                                     ---- the lifetime is named here
[INFO] [stderr] 842 |                          access: A,
[INFO] [stderr] 843 |                          mapper: M) -> IResult<Span<'loc>, T>
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^----^^^^^
[INFO] [stderr]     |                                        |            |
[INFO] [stderr]     |                                        |            the same lifetime is named here
[INFO] [stderr]     |                                        the same lifetime is hidden here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: consistently use `'loc`
[INFO] [stderr]     |
[INFO] [stderr] 843 |                          mapper: M) -> IResult<'loc, Span<'loc>, T>
[INFO] [stderr]     |                                                +++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stderr]     --> guard/src/rules/parser.rs:1040:87
[INFO] [stderr]      |
[INFO] [stderr] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<Span<'loc>, Conjunctions<E>>
[INFO] [stderr]      |                                              ----                                     ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |                                              |                                        |            |
[INFO] [stderr]      |                                              |                                        |            the same lifetime is named here
[INFO] [stderr]      |                                              the lifetime is named here               the same lifetime is hidden here
[INFO] [stderr]      |
[INFO] [stderr]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: consistently use `'loc`
[INFO] [stderr]      |
[INFO] [stderr] 1040 | fn cnf_clauses<'loc, T, E, F, M>(input: Span<'loc>, f: F, _m: M, _non_empty: bool) -> IResult<'loc, Span<'loc>, Conjunctions<E>>
[INFO] [stderr]      |                                                                                               +++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stderr]     --> guard/src/rules/parser.rs:1075:86
[INFO] [stderr]      |
[INFO] [stderr] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<Span<'loc>, Disjunctions<E>>
[INFO] [stderr]      |                                                ----                                  ^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |                                                |                                     |            |
[INFO] [stderr]      |                                                |                                     |            the same lifetime is named here
[INFO] [stderr]      |                                                the lifetime is named here            the same lifetime is hidden here
[INFO] [stderr]      |
[INFO] [stderr]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: consistently use `'loc`
[INFO] [stderr]      |
[INFO] [stderr] 1075 | fn disjunction_clauses<'loc, E, F>(input: Span<'loc>, parser: F, non_empty: bool) -> IResult<'loc, Span<'loc>, Disjunctions<E>>
[INFO] [stderr]      |                                                                                              +++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/rules/values.rs:155:17
[INFO] [stderr]     |
[INFO] [stderr] 155 |                 write!(f, "{},{}", range.lower, range.upper);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 155 |                 let _ = write!(f, "{},{}", range.lower, range.upper);
[INFO] [stderr]     |                 +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> guard/src/commands/files.rs:95:41
[INFO] [stderr]    |
[INFO] [stderr] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<T, C>
[INFO] [stderr]    |                                         ^^^^^^^^^^                   ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                                         |
[INFO] [stderr]    |                                         the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 95 | pub(crate) fn iterate_over<T, C>(files: &[PathBuf], converter: C) -> Iter<'_, T, C>
[INFO] [stderr]    |                                                                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/commands/validate.rs:135:17
[INFO] [stderr]     |
[INFO] [stderr] 135 |                 reader.read_to_string(&mut context);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 135 |                 let _ = reader.read_to_string(&mut context);
[INFO] [stderr]     |                 +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/commands/validate/generic_summary.rs:145:13
[INFO] [stderr]     |
[INFO] [stderr] 145 |             writeln!(writer, "--");
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 145 |             let _ = writeln!(writer, "--");
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:96:9
[INFO] [stderr]    |
[INFO] [stderr] 96 | /         match &self.hierarchy_type {
[INFO] [stderr] 97 | |             StructureType::JSON => writeln!(writer, "{}", serde_json::to_string(&value)?),
[INFO] [stderr] 98 | |             StructureType::YAML => writeln!(writer, "{}", serde_yaml::to_string(&value)?),
[INFO] [stderr] 99 | |         };
[INFO] [stderr]    | |_________^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 96 |         let _ = match &self.hierarchy_type {
[INFO] [stderr]    |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> guard/src/commands/validate/summary_table.rs:70:13
[INFO] [stderr]    |
[INFO] [stderr] 70 |             writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 70 |             let _ = writeln!(writer, "{}", "SKIP rules".bold());
[INFO] [stderr]    |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> guard/src/commands/validate/summary_table.rs:76:13
[INFO] [stderr]    |
[INFO] [stderr] 76 |             writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 76 |             let _ = writeln!(writer, "{}", "PASS rules".bold());
[INFO] [stderr]    |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> guard/src/commands/validate/summary_table.rs:81:13
[INFO] [stderr]    |
[INFO] [stderr] 81 |             writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 81 |             let _ = writeln!(writer, "{}", "FAILED rules".bold());
[INFO] [stderr]    |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/commands/validate/cfn_reporter.rs:125:13
[INFO] [stderr]     |
[INFO] [stderr] 125 |             writeln!(writer, "--");
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 125 |             let _ = writeln!(writer, "--");
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/commands/rulegen.rs:202:13
[INFO] [stderr]     |
[INFO] [stderr] 202 |             write!(writer,"{}", generated_rules);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 202 |             let _ = write!(writer,"{}", generated_rules);
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> guard/src/commands/migrate.rs:92:13
[INFO] [stderr]    |
[INFO] [stderr] 92 |             writeln!(&mut migrated, "{}", assignment);
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 92 |             let _ = writeln!(&mut migrated, "{}", assignment);
[INFO] [stderr]    |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> guard/src/commands/migrate.rs:99:9
[INFO] [stderr]    |
[INFO] [stderr] 99 |         writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 99 |         let _ = writeln!(&mut migrated, "let {} = Resources.*[ Type == \"{}\" ]", each_type, each_type.type_name);
[INFO] [stderr]    |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/commands/migrate.rs:100:9
[INFO] [stderr]     |
[INFO] [stderr] 100 |         writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 100 |         let _ = writeln!(&mut migrated, "rule {name}_checks WHEN %{name} NOT EMPTY {{", name=each_type);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/commands/migrate.rs:101:9
[INFO] [stderr]     |
[INFO] [stderr] 101 |         writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 101 |         let _ = writeln!(&mut migrated, "    %{} {{", each_type);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/commands/migrate.rs:103:13
[INFO] [stderr]     |
[INFO] [stderr] 103 |             writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 103 |             let _ = writeln!(&mut migrated, "        {}", *each_clause);
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/commands/migrate.rs:105:9
[INFO] [stderr]     |
[INFO] [stderr] 105 |         writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 105 |         let _ = writeln!(&mut migrated, "    }}\n}}\n");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: the `query:` in this pattern is redundant
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender.rs:42:59
[INFO] [stderr]    |
[INFO] [stderr] 42 | ...                   let AccessQuery { query: query, match_all: all } =
[INFO] [stderr]    |                                         ^^^^^^^^^^^^ help: use shorthand field pattern: `query`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:135:9
[INFO] [stderr]     |
[INFO] [stderr] 135 |         writeln!(f, "when {} {{", self.when_condition);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 135 |         let _ = writeln!(f, "when {} {{", self.when_condition);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> guard/src/migrate/parser.rs:136:9
[INFO] [stderr]     |
[INFO] [stderr] 136 |         writeln!(f, "            {}", self.check_condition);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 136 |         let _ = writeln!(f, "            {}", self.check_condition);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `cfn-guard` (lib) generated 159 warnings (run `cargo fix --lib -p cfn-guard` to apply 26 suggestions)
[INFO] [stderr] warning: method `is_binary` is never used
[INFO] [stderr]   --> guard/src/rules/values.rs:42:19
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl CmpOperator {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub(crate) fn is_binary(&self) -> bool { !self.is_unary() }
[INFO] [stderr]    |                   ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `data_file_name` is never read
[INFO] [stderr]    --> guard/src/commands/validate.rs:274:5
[INFO] [stderr]     |
[INFO] [stderr] 270 | pub(crate) struct ConsoleReporter<'r> {
[INFO] [stderr]     |                   --------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 274 |     data_file_name: &'r str,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ConsoleReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_result_json` is never used
[INFO] [stderr]    --> guard/src/commands/validate.rs:375:12
[INFO] [stderr]     |
[INFO] [stderr] 362 | impl<'r, 'loc> ConsoleReporter<'r> {
[INFO] [stderr]     | ---------------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 375 |     pub fn get_result_json(self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `output_format_type` is never read
[INFO] [stderr]   --> guard/src/commands/validate/generic_summary.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub(crate) struct GenericSummary<'a> {
[INFO] [stderr]    |                   -------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 20 |     output_format_type: OutputFormatType,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `GenericSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `output_format_type` is never read
[INFO] [stderr]   --> guard/src/commands/validate/cfn_reporter.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub(crate) struct CfnReporter<'a> {
[INFO] [stderr]    |                   ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 26 |     output_format_type: OutputFormatType,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CfnReporter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `validate_and_return_json` is never used
[INFO] [stderr]   --> guard/src/commands/helper.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub fn validate_and_return_json(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `cfn-guard` (bin "cfn-guard") generated 69 warnings (63 duplicates)
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]     --> guard/src/rules/evaluate_tests.rs:2087:23
[INFO] [stderr]      |
[INFO] [stderr] 2087 |     struct Reporter {};
[INFO] [stderr]      |                       ^ help: remove this semicolon
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]     --> guard/src/rules/evaluate_tests.rs:2152:60
[INFO] [stderr]      |
[INFO] [stderr] 2152 |     struct Reporter<'a> { root: &'a dyn EvaluationContext };
[INFO] [stderr]      |                                                            ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> guard/src/rules/values_tests.rs:124:6
[INFO] [stderr]     |
[INFO] [stderr] 124 |     };
[INFO] [stderr]     |      ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> guard/src/rules/values_tests.rs:217:27
[INFO] [stderr]     |
[INFO] [stderr] 217 |     struct DummyResolver{};
[INFO] [stderr]     |                           ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::super::common_test_helpers::DummyEval`
[INFO] [stderr]  --> guard/src/commands/aws_meta_appender_tests.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use super::super::common_test_helpers::DummyEval;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:40:22
[INFO] [stderr]    |
[INFO] [stderr] 40 |     struct Capture {};
[INFO] [stderr]    |                      ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::rules::values::Value::Bool`
[INFO] [stderr]  --> guard/src/migrate/parser_tests.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::rules::values::Value::Bool;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `variable`
[INFO] [stderr]     --> guard/src/rules/evaluate_tests.rs:2089:36
[INFO] [stderr]      |
[INFO] [stderr] 2089 |         fn resolve_variable(&self, variable: &str) -> Result<Vec<&PathAwareValue>> {
[INFO] [stderr]      |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variable`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rule_name`
[INFO] [stderr]     --> guard/src/rules/evaluate_tests.rs:2093:31
[INFO] [stderr]      |
[INFO] [stderr] 2093 |         fn rule_status(&self, rule_name: &str) -> Result<Status> {
[INFO] [stderr]      |                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_name`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]     --> guard/src/rules/evaluate_tests.rs:2097:61
[INFO] [stderr]      |
[INFO] [stderr] 2097 | ...l_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<St...
[INFO] [stderr]      |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `eval_type`
[INFO] [stderr]     --> guard/src/rules/evaluate_tests.rs:2117:36
[INFO] [stderr]      |
[INFO] [stderr] 2117 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stderr]      |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]     --> guard/src/rules/evaluate_tests.rs:2117:63
[INFO] [stderr]      |
[INFO] [stderr] 2117 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stderr]      |                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `clause`
[INFO] [stderr]     --> guard/src/rules/parser_tests.rs:4121:17
[INFO] [stderr]      |
[INFO] [stderr] 4121 |     let (_span, clause) = rule_block_clause(from_str2(when_inside_when))?;
[INFO] [stderr]      |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_clause`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `longest_rule_len`
[INFO] [stderr]   --> guard/src/commands/validate/common.rs:86:41
[INFO] [stderr]    |
[INFO] [stderr] 86 |               skipped: HashSet<String>, longest_rule_len: usize) -> crate::rules::Result<()>
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_longest_rule_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `variable`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:42:36
[INFO] [stderr]    |
[INFO] [stderr] 42 |         fn resolve_variable(&self, variable: &str) -> Result<Vec<&PathAwareValue>> {
[INFO] [stderr]    |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variable`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rule_name`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:46:31
[INFO] [stderr]    |
[INFO] [stderr] 46 |         fn rule_status(&self, rule_name: &str) -> Result<Status> {
[INFO] [stderr]    |                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_name`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `eval_type`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:50:34
[INFO] [stderr]    |
[INFO] [stderr] 50 | ...   fn end_evaluation(&self, eval_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathA...
[INFO] [stderr]    |                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:50:61
[INFO] [stderr]    |
[INFO] [stderr] 50 | ...al_type: EvaluationType, context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Sta...
[INFO] [stderr]    |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `from`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:50:89
[INFO] [stderr]    |
[INFO] [stderr] 50 | ...context: &str, msg: String, from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOp...
[INFO] [stderr]    |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_from`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `to`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:50:119
[INFO] [stderr]    |
[INFO] [stderr] 50 | ...from: Option<PathAwareValue>, to: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOperator, bool)>) {
[INFO] [stderr]    |                                  ^^ help: if this is intentional, prefix it with an underscore: `_to`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `status`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:50:147
[INFO] [stderr]    |
[INFO] [stderr] 50 | ...: Option<PathAwareValue>, status: Option<Status>, _cmp: Option<(CmpOperator, bool)>) {
[INFO] [stderr]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `eval_type`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:57:36
[INFO] [stderr]    |
[INFO] [stderr] 57 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stderr]    |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eval_type`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> guard/src/commands/aws_meta_appender_tests.rs:57:63
[INFO] [stderr]    |
[INFO] [stderr] 57 |         fn start_evaluation(&self, eval_type: EvaluationType, context: &str) {
[INFO] [stderr]    |                                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: struct `VariableResolver` is never constructed
[INFO] [stderr]    --> guard/src/rules/evaluate_tests.rs:884:8
[INFO] [stderr]     |
[INFO] [stderr] 884 | struct VariableResolver<'a, 'b>(&'a dyn EvaluationContext, HashMap<String, Vec<&'b PathAwareValue>>);
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SAMPLE_MULTIPLE` is never used
[INFO] [stderr]   --> guard/src/rules/path_value_tests.rs:20:7
[INFO] [stderr]    |
[INFO] [stderr] 20 | const SAMPLE_MULTIPLE : &str = r#"{
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> guard/src/rules/parser_tests.rs:827:27
[INFO] [stderr]     |
[INFO] [stderr] 827 | fn to_query_part(vec: Vec<&str>) -> Vec<QueryPart> {
[INFO] [stderr]     |                           ^^^^          ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 827 | fn to_query_part(vec: Vec<&str>) -> Vec<QueryPart<'_>> {
[INFO] [stderr]     |                                                  ++++
[INFO] [stderr] 
[INFO] [stderr] warning: `cfn-guard` (bin "cfn-guard" test) generated 90 warnings (64 duplicates) (run `cargo fix --bin "cfn-guard" -p cfn-guard --tests` to apply 19 suggestions)
[INFO] [stderr] warning: `cfn-guard` (lib test) generated 148 warnings (148 duplicates)
[INFO] [stderr] warning: unnecessary parentheses around match arm expression
[INFO] [stderr]   --> guard-lambda/src/main.rs:39:23
[INFO] [stderr]    |
[INFO] [stderr] 39 |             Err(e) => (e.to_string()),
[INFO] [stderr]    |                       ^             ^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 39 -             Err(e) => (e.to_string()),
[INFO] [stderr] 39 +             Err(e) => e.to_string(),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `cfn-guard-lambda` (bin "cfn-guard-lambda" test) generated 1 warning (run `cargo fix --bin "cfn-guard-lambda" -p cfn-guard-lambda --tests` to apply 1 suggestion)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.29s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/cfn_guard-7f07d8b03312cc7a)
[INFO] [stdout] 
[INFO] [stdout] running 120 tests
[INFO] [stdout] test commands::aws_meta_appender::aws_meta_appender_tests::append_cdk_metadata_test ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_get_resource_types_in_ruleset ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_conditional_rules ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_basic_rules_with_custom_messages ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_basic_rules_disjunction ... ok
[INFO] [stdout] test commands::rulegen::rulegen_tests::test_rulegen ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_base_rule ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_clause_with_message ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_comment_parse ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_conditional_rule ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_assignment ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_disjunction_basic_clauses ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_rules_different_types ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_disjunction_conditional_clauses ... ok
[INFO] [stdout] test commands::rulegen::rulegen_tests::test_rulegen_no_properties ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_parse_old_guard_value_optional_message ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_parse_old_guard_values_integer ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_conditional_rules_disjunction ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_prop_comparison ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_prop_comparison_invalid_operator_fail ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_property_path ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_property_path_stops_whitespace ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_value_cmp ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::ecs_iam_role_relationship_assetions ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::block_evaluation ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::block_evaluation_fail ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::rule_clause_tests ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_parse_rules_file ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_parse_rules_file_rule_error ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::double_projection_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::guard_access_clause_test_all_up ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::rule_clause_when_check ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_compare_lists ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::rules_not_in_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::rules_file_tests ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_disjunction_basic_and_conditional ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::guard_access_clause_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_field_type_array_or_single ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_for_not_in ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_guard_10_compatibility_and_diff ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_compare_loop_all ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_in_comparison_operator_for_list_of_lists ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_inner_when_skipped ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_iam_statement_clauses ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_map_keys_function ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_compare_rulegen ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_rule_with_range_test ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_iam_subselections ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_multiple_valued_clause_reporting ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_multiple_valued_clause_reporting_var_access ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::embedded_when_clause_redshift_use_case_test ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_rules_with_some_clauses ... ok
[INFO] [stdout] test rules::parser::parser_tests::is_list_check_parser_bug ... ok
[INFO] [stdout] test rules::parser::parser_tests::it_support_test ... ok
[INFO] [stdout] test rules::parser::parser_tests::parse_list_of_map ... ok
[INFO] [stdout] test rules::parser::parser_tests::block_parse_test ... ok
[INFO] [stdout] test rules::parser::parser_tests::parse_regex_tests ... ok
[INFO] [stdout] test rules::parser::parser_tests::parse_rule_block_with_mixed_assignment ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_support_for_atleast_one_match_clause ... ok
[INFO] [stdout] test rules::parser::parser_tests::select_any_one_from_list_clauses ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_api_gateway ... ok
[INFO] [stdout] test rules::parser::parser_tests::some_clause_parse ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::testing_iam_role_prov_serve ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_compare_loop_atleast_one_eq ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::testing_sg_rules_pro_serve ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_s3_bucket_pro_serv ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_broken_lists ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_block_properties ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_clause_failures ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_access ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_assignments ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_int_parse_pos ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_complex_predicate_clauses ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_dotted_access ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_incorrect_block_in_block_properties ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_int_parse ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_keys_keyword ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_block_in_block_properties ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_clauses ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_map_success ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_lists_success ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_map_key_part ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_map_success_2 ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_other_operations ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_string_from_scalar ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_regex ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_scalar ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_string_rest ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_string ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_range_type_failures ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_value_with_comments ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_predicate_clause_success ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rule_block_clause ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_float ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_try_from_access ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rule_clauses ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rules_file ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_bool ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_range_type_success ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rules_file_default_rules ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_try_from_rule_block ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_var_name_access ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_white_space_with_comments ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rule_block ... ok
[INFO] [stdout] test rules::parser::parser_tests::when_inside_when_parse_test ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_type_block ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_var_name ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::it_support_evaluation_tests ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_type_name ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_value_cmp ... ok
[INFO] [stdout] test rules::values::values_tests::test_convert_from_to_value ... ok
[INFO] [stdout] test rules::values::values_tests::test_convert_into_json ... ok
[INFO] [stdout] test rules::values::values_tests::test_parse_string_with_colon ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::path_value_equivalent ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::map_keys_filter_test ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::some_filter_tests ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::path_value_queries ... ok
[INFO] [stdout] test rules::values::values_tests::test_query_on_value ... ok
[INFO] [stdout] test rules::values::values_tests::test_type_block_with_var_query_evaluation ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_clause_success ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 120 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/cfn_guard-6d10fe512927560d)
[INFO] [stdout] 
[INFO] [stdout] running 120 tests
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_basic_rules_disjunction ... ok
[INFO] [stdout] test commands::aws_meta_appender::aws_meta_appender_tests::append_cdk_metadata_test ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_get_resource_types_in_ruleset ... ok
[INFO] [stdout] test commands::rulegen::rulegen_tests::test_rulegen_no_properties ... ok
[INFO] [stdout] test commands::rulegen::rulegen_tests::test_rulegen ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_conditional_rules ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_conditional_rules_disjunction ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_assignment ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_disjunction_basic_and_conditional ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_basic_rules_with_custom_messages ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_comment_parse ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_conditional_rule ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_clause_with_message ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_disjunction_basic_clauses ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_prop_comparison ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_prop_comparison_invalid_operator_fail ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_parse_rules_file_rule_error ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_disjunction_conditional_clauses ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_property_path_stops_whitespace ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_property_path ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_parse_rules_file ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_value_cmp ... ok
[INFO] [stdout] test commands::migrate::migrate_tests::test_migrate_rules_different_types ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::block_evaluation ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_parse_old_guard_value_optional_message ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_parse_old_guard_values_integer ... ok
[INFO] [stdout] test migrate::parser::parser_tests::test_base_rule ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::block_evaluation_fail ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::ecs_iam_role_relationship_assetions ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::double_projection_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::guard_access_clause_test_all_up ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::rule_clause_when_check ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_compare_lists ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::rules_file_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_compare_rulegen ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::embedded_when_clause_redshift_use_case_test ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::rules_not_in_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::rule_clause_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_compare_loop_atleast_one_eq ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_field_type_array_or_single ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::guard_access_clause_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_guard_10_compatibility_and_diff ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_inner_when_skipped ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_for_not_in ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_iam_subselections ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_map_keys_function ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_multiple_valued_clause_reporting ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_rule_with_range_test ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_multiple_valued_clause_reporting_var_access ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_compare_loop_all ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_in_comparison_operator_for_list_of_lists ... ok
[INFO] [stdout] test rules::parser::parser_tests::block_parse_test ... ok
[INFO] [stdout] test rules::parser::parser_tests::is_list_check_parser_bug ... ok
[INFO] [stdout] test rules::parser::parser_tests::it_support_test ... ok
[INFO] [stdout] test rules::parser::parser_tests::parse_list_of_map ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_api_gateway ... ok
[INFO] [stdout] test rules::parser::parser_tests::parse_regex_tests ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_support_for_atleast_one_match_clause ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_iam_statement_clauses ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::testing_sg_rules_pro_serve ... ok
[INFO] [stdout] test rules::parser::parser_tests::select_any_one_from_list_clauses ... ok
[INFO] [stdout] test rules::parser::parser_tests::parse_rule_block_with_mixed_assignment ... ok
[INFO] [stdout] test rules::parser::parser_tests::some_clause_parse ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_block_in_block_properties ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_access ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_assignments ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_broken_lists ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_clauses ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_rules_with_some_clauses ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_clause_failures ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::testing_iam_role_prov_serve ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_incorrect_block_in_block_properties ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_dotted_access ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_int_parse ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_int_parse_pos ... ok
[INFO] [stdout] test rules::evaluate::evaluate_tests::test_s3_bucket_pro_serv ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_keys_keyword ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_map_success_2 ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_other_operations ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_lists_success ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_regex ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_scalar ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_string ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_complex_predicate_clauses ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_string_from_scalar ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_string_rest ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_map_key_part ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_value_with_comments ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_predicate_clause_success ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_range_type_failures ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_bool ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_range_type_success ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_parse_float ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_block_properties ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rule_block ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rule_clauses ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rule_block_clause ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rules_file ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_try_from_access ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_try_from_rule_block ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_var_name ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_map_success ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_white_space_with_comments ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_type_block ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_type_name ... ok
[INFO] [stdout] test rules::parser::parser_tests::when_inside_when_parse_test ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::path_value_equivalent ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::it_support_evaluation_tests ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_var_name_access ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::map_keys_filter_test ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_rules_file_default_rules ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::path_value_queries ... ok
[INFO] [stdout] test rules::path_value::path_value_tests::some_filter_tests ... ok
[INFO] [stdout] test rules::values::values_tests::test_convert_from_to_value ... ok
[INFO] [stdout] test rules::values::values_tests::test_convert_into_json ... ok
[INFO] [stdout] test rules::values::values_tests::test_parse_string_with_colon ... ok
[INFO] [stdout] test rules::values::values_tests::test_query_on_value ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_value_cmp ... ok
[INFO] [stdout] test rules::values::values_tests::test_type_block_with_var_query_evaluation ... ok
[INFO] [stdout] test rules::parser::parser_tests::test_clause_success ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 120 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/functional.rs (/opt/rustwide/target/debug/deps/functional-7f6ee3edcc670e80)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test tests::test_run_check ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_run_check stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::test_run_check' (259) panicked at guard/tests/functional.rs:128:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: Array([Object({"eval_type": String("Rule"), "context": String("default"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Null, "to": Null, "status": String("FAIL"), "comparator": Null, "children": Array([Object({"eval_type": String("Type"), "context": String("AWS::ApiGateway::Method"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Null, "to": Null, "status": String("FAIL"), "comparator": Null, "children": Array([Object({"eval_type": String("Filter"), "context": String("Path=/Resources/VPC,Type=MapElement"), "msg": String("DEFAULT MESSAGE(PASS)"), "from": Null, "to": Null, "status": String("PASS"), "comparator": Null, "children": Array([Object({"eval_type": String("Conjunction"), "context": String("cfn_guard::rules::exprs::GuardClause"), "msg": String("DEFAULT MESSAGE(PASS)"), "from": Null, "to": Null, "status": String("PASS"), "comparator": Null, "children": Array([Object({"eval_type": String("Clause"), "context": String("Clause(Location[file:, line:1, column:14], Check: Type  EQUALS String(\"AWS::ApiGateway::Method\"))"), "msg": String("DEFAULT MESSAGE(PASS)"), "from": Null, "to": Null, "status": String("PASS"), "comparator": Array([String("Eq"), Bool(false)]), "children": Array([])})])})])}), Object({"eval_type": String("Type"), "context": String("AWS::ApiGateway::Method#0(/Resources/VPC)"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Null, "to": Null, "status": String("FAIL"), "comparator": Null, "children": Array([Object({"eval_type": String("Conjunction"), "context": String("cfn_guard::rules::exprs::GuardClause"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Null, "to": Null, "status": String("FAIL"), "comparator": Null, "children": Array([Object({"eval_type": String("Clause"), "context": String("Clause(Location[file:lambda, line:1, column:27], Check: Properties.AuthorizationType  EQUALS String(\"NONE\"))"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Object({"String": Array([String("/Resources/VPC/Properties/AuthorizationType"), String("10.0.0.0/24")])}), "to": Object({"String": Array([String("lambda/1/27/Clause/"), String("NONE")])}), "status": String("FAIL"), "comparator": Array([String("Eq"), Bool(false)]), "children": Array([])})])})])})])})])})])
[INFO] [stdout]  right: Array([Object({"eval_type": String("Rule"), "context": String("default"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Null, "to": Null, "status": String("FAIL"), "comparator": Null, "children": Array([Object({"eval_type": String("Type"), "context": String("AWS::ApiGateway::Method"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Null, "to": Null, "status": String("FAIL"), "comparator": Null, "children": Array([Object({"eval_type": String("Filter"), "context": String("Path=/Resources/VPC,Type=MapElement"), "msg": String("DEFAULT MESSAGE(PASS)"), "from": Null, "to": Null, "status": String("PASS"), "comparator": Null, "children": Array([Object({"eval_type": String("Clause"), "context": String("Clause(Location[file:, line:1, column:14], Check: Type  EQUALS String(\"AWS::ApiGateway::Method\"))"), "msg": String("DEFAULT MESSAGE(PASS)"), "from": Null, "to": Null, "status": String("PASS"), "comparator": Array([String("Eq"), Bool(false)]), "children": Array([])})])}), Object({"eval_type": String("Type"), "context": String("AWS::ApiGateway::Method#0(/Resources/VPC)"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Null, "to": Null, "status": String("FAIL"), "comparator": Null, "children": Array([Object({"eval_type": String("Clause"), "context": String("Clause(Location[file:lambda, line:1, column:27], Check: Properties.AuthorizationType  EQUALS String(\"NONE\"))"), "msg": String("DEFAULT MESSAGE(FAIL)"), "from": Object({"String": Array([String("/Resources/VPC/Properties/AuthorizationType"), String("10.0.0.0/24")])}), "to": Object({"String": Array([String("lambda/1/27/Clause/"), String("NONE")])}), "status": String("FAIL"), "comparator": Array([String("Eq"), Bool(false)]), "children": Array([])})])})])})])})])
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x625497cbc2e2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x625497cbc2e2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x625497cbc2e2 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x625497cbc2e2 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x625497cd217a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x625497cd217a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x625497cc11c6 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x625497cc11c6 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x625497c9a7af - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x625497c9a7af - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x625497cb45c9 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6254979eeeee - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x6254979eeeee - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x625497cb4782 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x625497cb4782 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x625497c9a868 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x625497c92209 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x625497c9b6bd - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x625497cd28bc - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x625497cd2773 - core[c5ed12ab89cc536a]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x6254979e1f9d - core[c5ed12ab89cc536a]::panicking::assert_failed::<serde_json[46b6c7c4f0422431]::value::Value, serde_json[46b6c7c4f0422431]::value::Value>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x6254979e273e - functional[35359768807c2b14]::tests::test_run_check
[INFO] [stdout]                                at /opt/rustwide/workdir/guard/tests/functional.rs:128:9
[INFO] [stdout]   22:     0x6254979e21e7 - functional[35359768807c2b14]::tests::test_run_check::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/guard/tests/functional.rs:9:24
[INFO] [stdout]   23:     0x6254979e31d6 - <functional[35359768807c2b14]::tests::test_run_check::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x6254979e329b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x6254979e329b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x6254979efafa - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x6254979efafa - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x6254979efafa - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x6254979efafa - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x6254979efafa - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x6254979efafa - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x6254979efafa - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x6254979e9fc4 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x6254979e9fc4 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x6254979f25f2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x6254979f25f2 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x6254979f25f2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x6254979f25f2 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x6254979f25f2 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x6254979f25f2 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x6254979f25f2 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x625497cbbb8f - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x625497cbbb8f - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x791166463aa4 - <unknown>
[INFO] [stdout]   45:     0x7911664f0a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::test_run_check
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p cfn-guard --test functional`
[INFO] running `Command { std: "docker" "inspect" "183c2dc49c47b596dabbe1906310cb53773a81c717bc831d4f88da77f0c58fca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "183c2dc49c47b596dabbe1906310cb53773a81c717bc831d4f88da77f0c58fca", kill_on_drop: false }`
[INFO] [stdout] 183c2dc49c47b596dabbe1906310cb53773a81c717bc831d4f88da77f0c58fca
