[INFO] cloning repository https://github.com/gemini-15/fuzz
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gemini-15/fuzz" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgemini-15%2Ffuzz", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgemini-15%2Ffuzz'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 98752f9c2f60b5f063941e6f85c1130fb94873df
[INFO] checking gemini-15/fuzz against master#8f21a5c92ea55c348c275a1bc4fedbdf181e0d64 for pr-143011
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgemini-15%2Ffuzz" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  95% (505/527)
Updating files:  96% (506/527)
Updating files:  97% (512/527)
Updating files:  98% (517/527)
Updating files:  99% (522/527)
Updating files:  99% (526/527)
Updating files: 100% (527/527)
Updating files: 100% (527/527), done.
[INFO] started tweaking git repo https://github.com/gemini-15/fuzz
[INFO] finished tweaking git repo https://github.com/gemini-15/fuzz
[INFO] tweaked toml for git repo https://github.com/gemini-15/fuzz written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/gemini-15/fuzz on toolchain 8f21a5c92ea55c348c275a1bc4fedbdf181e0d64
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/gemini-15/fuzz 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" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded crc v1.7.0
[INFO] [stderr]   Downloaded kerberos-parser v0.1.4
[INFO] [stderr]   Downloaded ntp-parser v0.2.1
[INFO] [stderr]   Downloaded der-parser v0.5.5
[INFO] [stderr]   Downloaded ipsec-parser v0.3.0
[INFO] [stderr]   Downloaded rusticata-macros v0.4.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c88fc0a6af7ec349e0058bee09b2ada3a8d7e6a67a325548b28f09cd6900d886
[INFO] running `Command { std: "docker" "start" "-a" "c88fc0a6af7ec349e0058bee09b2ada3a8d7e6a67a325548b28f09cd6900d886", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c88fc0a6af7ec349e0058bee09b2ada3a8d7e6a67a325548b28f09cd6900d886", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c88fc0a6af7ec349e0058bee09b2ada3a8d7e6a67a325548b28f09cd6900d886", kill_on_drop: false }`
[INFO] [stdout] c88fc0a6af7ec349e0058bee09b2ada3a8d7e6a67a325548b28f09cd6900d886
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 84eb6f5a367be2dd827bb16fb1cdc56b28b0e2cfffbfe985dd42ef72508fff49
[INFO] running `Command { std: "docker" "start" "-a" "84eb6f5a367be2dd827bb16fb1cdc56b28b0e2cfffbfe985dd42ef72508fff49", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling libc v0.2.74
[INFO] [stderr]    Compiling build_const v0.2.1
[INFO] [stderr]    Compiling crc v1.7.0
[INFO] [stderr]     Checking memchr v1.0.2
[INFO] [stderr]     Checking nom v3.2.1
[INFO] [stderr]     Checking rusticata-macros v0.4.1
[INFO] [stderr]     Checking ntp-parser v0.2.1
[INFO] [stderr]     Checking der-parser v0.5.5
[INFO] [stderr]     Checking ipsec-parser v0.3.0
[INFO] [stderr]     Checking kerberos-parser v0.1.4
[INFO] [stderr]     Checking suricata v4.1.7-fmtp (/opt/rustwide/workdir)
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/core.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/core.rs:188:1
[INFO] [stdout]     |
[INFO] [stdout] 188 |   /// Extern functions operating on Flow.
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 189 | / extern {
[INFO] [stdout] 190 | |     pub fn FlowGetLastTimeAsParts(flow: &Flow, secs: *mut u64, usecs: *mut u64);
[INFO] [stdout] 191 | | }
[INFO] [stdout]     | |_- rustdoc does not generate documentation for extern blocks
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/core.rs:189:1
[INFO] [stdout]     |
[INFO] [stdout] 189 | extern {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/conf.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/json.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 |   /// Expose the jansson functions we need.
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 28 | / extern {
[INFO] [stdout] 29 | |     fn json_object() -> *mut JsonT;
[INFO] [stdout] 30 | |     fn json_object_set_new(js: *mut JsonT, key: *const c_char,
[INFO] [stdout] 31 | |                            val: *mut JsonT) -> u32;
[INFO] [stdout] ...  |
[INFO] [stdout] 39 | |     fn SCJsonBool(val: bool) -> *mut JsonT;
[INFO] [stdout] 40 | | }
[INFO] [stdout]    | |_- rustdoc does not generate documentation for extern blocks
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/json.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/parser.rs:163:1
[INFO] [stdout]     |
[INFO] [stdout] 163 | extern {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/parser.rs:169:1
[INFO] [stdout]     |
[INFO] [stdout] 169 | extern {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/parser.rs:180:1
[INFO] [stdout]     |
[INFO] [stdout] 180 | extern {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/smb.rs:707:9
[INFO] [stdout]     |
[INFO] [stdout] 707 |         (self.rec_type == hdr.rec_type && self.ssn_id == hdr.ssn_id &&
[INFO] [stdout]     |         ^
[INFO] [stdout] 708 |          self.msg_id == hdr.msg_id)
[INFO] [stdout]     |                                   ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 707 ~         self.rec_type == hdr.rec_type && self.ssn_id == hdr.ssn_id &&
[INFO] [stdout] 708 ~          self.msg_id == hdr.msg_id
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/detect.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             (them < us)
[INFO] [stdout]     |             ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 156 -             (them < us)
[INFO] [stdout] 156 +             them < us
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/detect.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 159 |             (them > us)
[INFO] [stdout]     |             ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 159 -             (them > us)
[INFO] [stdout] 159 +             them > us
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/detect.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |             (them == us)
[INFO] [stdout]     |             ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 162 -             (them == us)
[INFO] [stdout] 162 +             them == us
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/detect.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |             (them != us)
[INFO] [stdout]     |             ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 165 -             (them != us)
[INFO] [stdout] 165 +             them != us
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/core.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/core.rs:188:1
[INFO] [stdout]     |
[INFO] [stdout] 188 |   /// Extern functions operating on Flow.
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 189 | / extern {
[INFO] [stdout] 190 | |     pub fn FlowGetLastTimeAsParts(flow: &Flow, secs: *mut u64, usecs: *mut u64);
[INFO] [stdout] 191 | | }
[INFO] [stdout]     | |_- rustdoc does not generate documentation for extern blocks
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/core.rs:189:1
[INFO] [stdout]     |
[INFO] [stdout] 189 | extern {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/conf.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/json.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 |   /// Expose the jansson functions we need.
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 28 | / extern {
[INFO] [stdout] 29 | |     fn json_object() -> *mut JsonT;
[INFO] [stdout] 30 | |     fn json_object_set_new(js: *mut JsonT, key: *const c_char,
[INFO] [stdout] 31 | |                            val: *mut JsonT) -> u32;
[INFO] [stdout] ...  |
[INFO] [stdout] 39 | |     fn SCJsonBool(val: bool) -> *mut JsonT;
[INFO] [stdout] 40 | | }
[INFO] [stdout]    | |_- rustdoc does not generate documentation for extern blocks
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/json.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | extern {
[INFO] [stdout]    | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/parser.rs:163:1
[INFO] [stdout]     |
[INFO] [stdout] 163 | extern {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/parser.rs:169:1
[INFO] [stdout]     |
[INFO] [stdout] 169 | extern {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/parser.rs:180:1
[INFO] [stdout]     |
[INFO] [stdout] 180 | extern {
[INFO] [stdout]     | ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/smb.rs:707:9
[INFO] [stdout]     |
[INFO] [stdout] 707 |         (self.rec_type == hdr.rec_type && self.ssn_id == hdr.ssn_id &&
[INFO] [stdout]     |         ^
[INFO] [stdout] 708 |          self.msg_id == hdr.msg_id)
[INFO] [stdout]     |                                   ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 707 ~         self.rec_type == hdr.rec_type && self.ssn_id == hdr.ssn_id &&
[INFO] [stdout] 708 ~          self.msg_id == hdr.msg_id
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/detect.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             (them < us)
[INFO] [stdout]     |             ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 156 -             (them < us)
[INFO] [stdout] 156 +             them < us
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/detect.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 159 |             (them > us)
[INFO] [stdout]     |             ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 159 -             (them > us)
[INFO] [stdout] 159 +             them > us
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/detect.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |             (them == us)
[INFO] [stdout]     |             ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 162 -             (them == us)
[INFO] [stdout] 162 +             them == us
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/smb/detect.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |             (them != us)
[INFO] [stdout]     |             ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 165 -             (them != us)
[INFO] [stdout] 165 +             them != us
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `file_size` is never read
[INFO] [stdout]   --> src/filetracker.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct FileTransferTracker {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 55 |     file_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileTransferTracker` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]   --> src/log.rs:51:19
[INFO] [stdout]    |
[INFO] [stdout] 51 |     for os_str in path.file_name() {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]    |
[INFO] [stdout] 51 -     for os_str in path.file_name() {
[INFO] [stdout] 51 +     while let Some(os_str) = path.file_name() {
[INFO] [stdout]    |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]    |
[INFO] [stdout] 51 -     for os_str in path.file_name() {
[INFO] [stdout] 51 +     if let Some(os_str) = path.file_name() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]   --> src/log.rs:52:25
[INFO] [stdout]    |
[INFO] [stdout] 52 |         for basename in os_str.to_str() {
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]    |
[INFO] [stdout] 52 -         for basename in os_str.to_str() {
[INFO] [stdout] 52 +         while let Some(basename) = os_str.to_str() {
[INFO] [stdout]    |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]    |
[INFO] [stdout] 52 -         for basename in os_str.to_str() {
[INFO] [stdout] 52 +         if let Some(basename) = os_str.to_str() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/kerberos.rs:35:37
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn parse_kerberos5_request_do(blob: &[u8]) -> IResult<&[u8], ApReq>
[INFO] [stdout]    |                                     ^^^^^             -----  ----- the lifetimes get resolved as `'_`
[INFO] [stdout]    |                                     |                 |
[INFO] [stdout]    |                                     |                 the lifetimes get resolved as `'_`
[INFO] [stdout]    |                                     this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn parse_kerberos5_request_do(blob: &[u8]) -> IResult<&[u8], ApReq<'_>>
[INFO] [stdout]    |                                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/dns/parser.rs:220:39
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn dns_parse_response<'a>(slice: &'a [u8])
[INFO] [stdout]     |                                       ^^ this lifetime flows to the output
[INFO] [stdout] 221 |                               -> nom::IResult<&[u8], DNSResponse> {
[INFO] [stdout]     |                                               ----- the lifetime gets resolved as `'a`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 221 |                               -> nom::IResult<&'a [u8], DNSResponse> {
[INFO] [stdout]     |                                                ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/dns/parser.rs:300:38
[INFO] [stdout]     |
[INFO] [stdout] 300 | pub fn dns_parse_request<'a>(input: &'a [u8]) -> nom::IResult<&[u8], DNSRequest> {
[INFO] [stdout]     |                                      ^^                       ----- the lifetime gets resolved as `'a`
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 300 | pub fn dns_parse_request<'a>(input: &'a [u8]) -> nom::IResult<&'a [u8], DNSRequest> {
[INFO] [stdout]     |                                                                ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:440:26
[INFO] [stdout]     |
[INFO] [stdout] 440 |             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 440 -             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout] 440 +             while let Some(sshfp) = dns_log_sshfp(&answer) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 440 -             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout] 440 +             if let Some(sshfp) = dns_log_sshfp(&answer) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:498:34
[INFO] [stdout]     |
[INFO] [stdout] 498 |                         for a in &answer_types.get(&type_string) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 498 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 498 +                         while let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 498 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 498 +                         if let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:511:34
[INFO] [stdout]     |
[INFO] [stdout] 511 |                         for a in &answer_types.get(&type_string) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 511 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 511 +                         while let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 511 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 511 +                         if let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:521:34
[INFO] [stdout]     |
[INFO] [stdout] 521 |                         for a in &answer_types.get(&type_string) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 521 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 521 +                         while let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 521 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 521 +                         if let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:522:42
[INFO] [stdout]     |
[INFO] [stdout] 522 | ...                   for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 522 -                             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout] 522 +                             while let Some(sshfp) = dns_log_sshfp(&answer) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 522 -                             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout] 522 +                             if let Some(sshfp) = dns_log_sshfp(&answer) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:685:21
[INFO] [stdout]     |
[INFO] [stdout] 685 |     for response in &tx.response {
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 685 -     for response in &tx.response {
[INFO] [stdout] 685 +     while let Some(response) = &tx.response {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 685 -     for response in &tx.response {
[INFO] [stdout] 685 +     if let Some(response) = &tx.response {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/smb/smb1_records.rs:285:47
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub fn parse_smb_trans_request_record_data(i: &[u8],
[INFO] [stdout]     |                                               ^^^^^ this lifetime flows to the output
[INFO] [stdout] 286 |         pad1: usize, param_cnt: u16, pad2: usize, data_len: u16)
[INFO] [stdout] 287 |     -> IResult<&[u8], SmbRecordTransRequestData>
[INFO] [stdout]     |                -----  ------------------------- the lifetimes get resolved as `'_`
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetimes get resolved as `'_`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 287 |     -> IResult<&[u8], SmbRecordTransRequestData<'_>>
[INFO] [stdout]     |                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/smb/dcerpc_records.rs:27:39
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn parse_dcerpc_response_record(i:&[u8], frag_len: u16 )
[INFO] [stdout]    |                                       ^^^^^ this lifetime flows to the output
[INFO] [stdout] 28 |     -> IResult<&[u8], DceRpcResponseRecord>
[INFO] [stdout]    |                -----  -------------------- the lifetimes get resolved as `'_`
[INFO] [stdout]    |                |
[INFO] [stdout]    |                the lifetimes get resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 28 |     -> IResult<&[u8], DceRpcResponseRecord<'_>>
[INFO] [stdout]    |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/smb/dcerpc_records.rs:50:38
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn parse_dcerpc_request_record(i:&[u8], frag_len: u16, little: bool)
[INFO] [stdout]    |                                      ^^^^^ this lifetime flows to the output
[INFO] [stdout] 51 |     -> IResult<&[u8], DceRpcRequestRecord>
[INFO] [stdout]    |                -----  ------------------- the lifetimes get resolved as `'_`
[INFO] [stdout]    |                |
[INFO] [stdout]    |                the lifetimes get resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 51 |     -> IResult<&[u8], DceRpcRequestRecord<'_>>
[INFO] [stdout]    |                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `file_size` is never read
[INFO] [stdout]   --> src/filetracker.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct FileTransferTracker {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 55 |     file_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileTransferTracker` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]   --> src/log.rs:51:19
[INFO] [stdout]    |
[INFO] [stdout] 51 |     for os_str in path.file_name() {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]    |
[INFO] [stdout] 51 -     for os_str in path.file_name() {
[INFO] [stdout] 51 +     while let Some(os_str) = path.file_name() {
[INFO] [stdout]    |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]    |
[INFO] [stdout] 51 -     for os_str in path.file_name() {
[INFO] [stdout] 51 +     if let Some(os_str) = path.file_name() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]   --> src/log.rs:52:25
[INFO] [stdout]    |
[INFO] [stdout] 52 |         for basename in os_str.to_str() {
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]    |
[INFO] [stdout] 52 -         for basename in os_str.to_str() {
[INFO] [stdout] 52 +         while let Some(basename) = os_str.to_str() {
[INFO] [stdout]    |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]    |
[INFO] [stdout] 52 -         for basename in os_str.to_str() {
[INFO] [stdout] 52 +         if let Some(basename) = os_str.to_str() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/kerberos.rs:35:37
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn parse_kerberos5_request_do(blob: &[u8]) -> IResult<&[u8], ApReq>
[INFO] [stdout]    |                                     ^^^^^             -----  ----- the lifetimes get resolved as `'_`
[INFO] [stdout]    |                                     |                 |
[INFO] [stdout]    |                                     |                 the lifetimes get resolved as `'_`
[INFO] [stdout]    |                                     this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn parse_kerberos5_request_do(blob: &[u8]) -> IResult<&[u8], ApReq<'_>>
[INFO] [stdout]    |                                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/dns/parser.rs:220:39
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn dns_parse_response<'a>(slice: &'a [u8])
[INFO] [stdout]     |                                       ^^ this lifetime flows to the output
[INFO] [stdout] 221 |                               -> nom::IResult<&[u8], DNSResponse> {
[INFO] [stdout]     |                                               ----- the lifetime gets resolved as `'a`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 221 |                               -> nom::IResult<&'a [u8], DNSResponse> {
[INFO] [stdout]     |                                                ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/dns/parser.rs:300:38
[INFO] [stdout]     |
[INFO] [stdout] 300 | pub fn dns_parse_request<'a>(input: &'a [u8]) -> nom::IResult<&[u8], DNSRequest> {
[INFO] [stdout]     |                                      ^^                       ----- the lifetime gets resolved as `'a`
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 300 | pub fn dns_parse_request<'a>(input: &'a [u8]) -> nom::IResult<&'a [u8], DNSRequest> {
[INFO] [stdout]     |                                                                ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:440:26
[INFO] [stdout]     |
[INFO] [stdout] 440 |             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 440 -             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout] 440 +             while let Some(sshfp) = dns_log_sshfp(&answer) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 440 -             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout] 440 +             if let Some(sshfp) = dns_log_sshfp(&answer) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:498:34
[INFO] [stdout]     |
[INFO] [stdout] 498 |                         for a in &answer_types.get(&type_string) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 498 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 498 +                         while let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 498 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 498 +                         if let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:511:34
[INFO] [stdout]     |
[INFO] [stdout] 511 |                         for a in &answer_types.get(&type_string) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 511 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 511 +                         while let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 511 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 511 +                         if let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:521:34
[INFO] [stdout]     |
[INFO] [stdout] 521 |                         for a in &answer_types.get(&type_string) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 521 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 521 +                         while let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 521 -                         for a in &answer_types.get(&type_string) {
[INFO] [stdout] 521 +                         if let Some(a) = &answer_types.get(&type_string) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:522:42
[INFO] [stdout]     |
[INFO] [stdout] 522 | ...                   for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 522 -                             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout] 522 +                             while let Some(sshfp) = dns_log_sshfp(&answer) {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 522 -                             for sshfp in dns_log_sshfp(&answer) {
[INFO] [stdout] 522 +                             if let Some(sshfp) = dns_log_sshfp(&answer) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/dns/log.rs:685:21
[INFO] [stdout]     |
[INFO] [stdout] 685 |     for response in &tx.response {
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 685 -     for response in &tx.response {
[INFO] [stdout] 685 +     while let Some(response) = &tx.response {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 685 -     for response in &tx.response {
[INFO] [stdout] 685 +     if let Some(response) = &tx.response {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/smb/smb1_records.rs:285:47
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub fn parse_smb_trans_request_record_data(i: &[u8],
[INFO] [stdout]     |                                               ^^^^^ this lifetime flows to the output
[INFO] [stdout] 286 |         pad1: usize, param_cnt: u16, pad2: usize, data_len: u16)
[INFO] [stdout] 287 |     -> IResult<&[u8], SmbRecordTransRequestData>
[INFO] [stdout]     |                -----  ------------------------- the lifetimes get resolved as `'_`
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetimes get resolved as `'_`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 287 |     -> IResult<&[u8], SmbRecordTransRequestData<'_>>
[INFO] [stdout]     |                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/smb/dcerpc_records.rs:27:39
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn parse_dcerpc_response_record(i:&[u8], frag_len: u16 )
[INFO] [stdout]    |                                       ^^^^^ this lifetime flows to the output
[INFO] [stdout] 28 |     -> IResult<&[u8], DceRpcResponseRecord>
[INFO] [stdout]    |                -----  -------------------- the lifetimes get resolved as `'_`
[INFO] [stdout]    |                |
[INFO] [stdout]    |                the lifetimes get resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 28 |     -> IResult<&[u8], DceRpcResponseRecord<'_>>
[INFO] [stdout]    |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/smb/dcerpc_records.rs:50:38
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn parse_dcerpc_request_record(i:&[u8], frag_len: u16, little: bool)
[INFO] [stdout]    |                                      ^^^^^ this lifetime flows to the output
[INFO] [stdout] 51 |     -> IResult<&[u8], DceRpcRequestRecord>
[INFO] [stdout]    |                -----  ------------------- the lifetimes get resolved as `'_`
[INFO] [stdout]    |                |
[INFO] [stdout]    |                the lifetimes get resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 51 |     -> IResult<&[u8], DceRpcRequestRecord<'_>>
[INFO] [stdout]    |                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.80s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v3.2.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "84eb6f5a367be2dd827bb16fb1cdc56b28b0e2cfffbfe985dd42ef72508fff49", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "84eb6f5a367be2dd827bb16fb1cdc56b28b0e2cfffbfe985dd42ef72508fff49", kill_on_drop: false }`
[INFO] [stdout] 84eb6f5a367be2dd827bb16fb1cdc56b28b0e2cfffbfe985dd42ef72508fff49
