[INFO] cloning repository https://github.com/liuxiaobleach/pico-c2pa [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/liuxiaobleach/pico-c2pa" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fliuxiaobleach%2Fpico-c2pa", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fliuxiaobleach%2Fpico-c2pa'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 11b63a1927531bb05dbd4c82a7c7fb4b058e4971 [INFO] linting liuxiaobleach/pico-c2pa against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fliuxiaobleach%2Fpico-c2pa" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-5-tc1/source/rust-toolchain [INFO] started tweaking git repo https://github.com/liuxiaobleach/pico-c2pa [INFO] finished tweaking git repo https://github.com/liuxiaobleach/pico-c2pa [INFO] tweaked toml for git repo https://github.com/liuxiaobleach/pico-c2pa written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/liuxiaobleach/pico-c2pa on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/liuxiaobleach/pico-c2pa 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: patch for the non root package will be ignored, specify patch at the workspace root: [INFO] [stderr] package: /workspace/builds/worker-5-tc1/source/verifier/Cargo.toml [INFO] [stderr] workspace: /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] [stderr] warning: /workspace/builds/worker-5-tc1/source/prover-c2pa/Cargo.toml: file `/workspace/builds/worker-5-tc1/source/prover-c2pa/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `lib` target `prover_c2pa` [INFO] [stderr] * `bin` target `prover-c2pa` [INFO] [stderr] Updating git repository `https://github.com/brevis-network/pico` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Updating git repository `https://github.com/brevis-network/Plonky3.git` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sha2-asm v0.6.4 [INFO] [stderr] Downloaded addchain v0.2.0 [INFO] [stderr] Downloaded memuse v0.2.2 [INFO] [stderr] Downloaded ff_derive v0.13.1 [INFO] [stderr] Downloaded pasta_curves v0.5.1 [INFO] [stderr] Downloaded static-iref v3.0.0 [INFO] [stderr] Downloaded cpu-time v1.0.0 [INFO] [stderr] Downloaded hex-literal v1.1.0 [INFO] [stderr] Downloaded btree-range-map v0.7.2 [INFO] [stderr] Downloaded async-generic v1.1.2 [INFO] [stderr] Downloaded transpose v0.2.3 [INFO] [stderr] Downloaded non-empty-string v0.2.6 [INFO] [stderr] Downloaded pairing v0.23.0 [INFO] [stderr] Downloaded extfmt v0.2.0 [INFO] [stderr] Downloaded riff v2.0.0 [INFO] [stderr] Downloaded atree v0.5.2 [INFO] [stderr] Downloaded byteordered v0.6.0 [INFO] [stderr] Downloaded pix v0.13.4 [INFO] [stderr] Downloaded bcder v0.7.6 [INFO] [stderr] Downloaded coset v0.4.1 [INFO] [stderr] Downloaded snafu v0.8.9 [INFO] [stderr] Downloaded x509-parser v0.18.1 [INFO] [stderr] Downloaded p521 v0.13.3 [INFO] [stderr] Downloaded zkhash v0.2.0 [INFO] [stderr] Downloaded halo2_proofs v0.1.0 [INFO] [stderr] Downloaded p384 v0.13.1 [INFO] [stderr] Downloaded snowbridge-amcl v1.0.2 [INFO] [stderr] Downloaded ureq v3.2.0 [INFO] [stderr] Downloaded quick-xml v0.39.2 [INFO] [stderr] Downloaded rasn v0.28.8 [INFO] [stderr] Downloaded dashu-int v0.4.1 [INFO] [stderr] Downloaded halo2curves v0.7.0 [INFO] [stderr] Downloaded typed-path v0.12.3 [INFO] [stderr] Downloaded zip v8.1.0 [INFO] [stderr] Downloaded dashu-float v0.4.3 [INFO] [stderr] Downloaded elf v0.7.4 [INFO] [stderr] Downloaded id3 v1.16.4 [INFO] [stderr] Downloaded xml-no-std v0.8.26 [INFO] [stderr] Downloaded toml v0.9.12+spec-1.1.0 [INFO] [stderr] Downloaded mp4 v0.14.0 [INFO] [stderr] Downloaded nonempty-collections v1.3.0 [INFO] [stderr] Downloaded parsenic v0.2.1 [INFO] [stderr] Downloaded ureq-proto v0.5.3 [INFO] [stderr] Downloaded num-order v1.2.0 [INFO] [stderr] Downloaded dashu-ratio v0.4.1 [INFO] [stderr] Downloaded bls12_381 v0.7.1 [INFO] [stderr] Downloaded scale-info v2.11.6 [INFO] [stderr] Downloaded pasta_curves v0.4.1 [INFO] [stderr] Downloaded snafu-derive v0.8.9 [INFO] [stderr] Downloaded abnf v0.13.0 [INFO] [stderr] Downloaded static-regular-grammar v2.0.2 [INFO] [stderr] Downloaded wstd v0.5.6 [INFO] [stderr] Downloaded hybrid-array v0.2.3 [INFO] [stderr] Downloaded delegate v0.8.0 [INFO] [stderr] Downloaded png_pong v0.9.3 [INFO] [stderr] Downloaded rasn-cms v0.28.8 [INFO] [stderr] Downloaded system-configuration v0.7.0 [INFO] [stderr] Downloaded btree-slab v0.6.1 [INFO] [stderr] Downloaded range-set v0.1.0 [INFO] [stderr] Downloaded rasn-pkix v0.28.8 [INFO] [stderr] Downloaded num-modular v0.6.1 [INFO] [stderr] Downloaded halo2derive v0.1.0 [INFO] [stderr] Downloaded rrs-succinct v0.1.0 [INFO] [stderr] Downloaded serde_arrays v0.1.0 [INFO] [stderr] Downloaded unroll v0.1.5 [INFO] [stderr] Downloaded rayon-scan v0.1.1 [INFO] [stderr] Downloaded tracing-forest v0.1.6 [INFO] [stderr] Downloaded img-parts v0.4.0 [INFO] [stderr] Downloaded jfifdump v0.6.0 [INFO] [stderr] Downloaded rasn-ocsp v0.28.8 [INFO] [stderr] Downloaded rasn-derive-impl v0.28.8 [INFO] [stderr] Downloaded rasn-derive v0.28.8 [INFO] [stderr] Downloaded pct-str v2.0.0 [INFO] [stderr] Downloaded iref-core v3.2.2 [INFO] [stderr] Downloaded iref v3.2.2 [INFO] [stderr] Downloaded dashu v0.4.2 [INFO] [stderr] Downloaded scale-info-derive v2.11.6 [INFO] [stderr] Downloaded halo2 v0.1.0-beta.2 [INFO] [stderr] Downloaded pairing v0.22.0 [INFO] [stderr] Downloaded num-bigint v0.3.3 [INFO] [stderr] Downloaded traitful v0.3.0 [INFO] [stderr] Downloaded bitvec-nom2 v0.2.1 [INFO] [stderr] Downloaded utf8-decode v1.0.1 [INFO] [stderr] Downloaded abnf-core v0.5.0 [INFO] [stderr] Downloaded cc-traits v2.0.0 [INFO] [stderr] Downloaded range-traits v0.3.2 [INFO] [stderr] Downloaded wstd-macro v0.5.6 [INFO] [stderr] Downloaded core_affinity v0.8.3 [INFO] [stderr] Downloaded crossbeam v0.8.4 [INFO] [stderr] Downloaded nums v0.1.0 [INFO] [stderr] Downloaded dashu-base v0.4.1 [INFO] [stderr] Downloaded dashu-macros v0.4.1 [INFO] [stderr] Downloaded gcd v2.3.0 [INFO] [stderr] Downloaded strength_reduce v0.2.4 [INFO] [stderr] Downloaded jubjub v0.9.0 [INFO] [stderr] Downloaded blake2b_simd v1.0.3 [INFO] [stderr] Downloaded c2pa v0.76.0 [INFO] [stderr] Downloaded openssl-src v300.5.5+3.5.5 [INFO] [stderr] Downloaded c2pa_cbor v0.77.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5b5b82c0cd8398b7e34715d3586a6585b82bc3fd3e785bdc766e217e844e6517 [INFO] running `Command { std: "docker" "start" "-a" "5b5b82c0cd8398b7e34715d3586a6585b82bc3fd3e785bdc766e217e844e6517", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5b5b82c0cd8398b7e34715d3586a6585b82bc3fd3e785bdc766e217e844e6517", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5b5b82c0cd8398b7e34715d3586a6585b82bc3fd3e785bdc766e217e844e6517", kill_on_drop: false }` [INFO] [stdout] 5b5b82c0cd8398b7e34715d3586a6585b82bc3fd3e785bdc766e217e844e6517 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2239652f9ebae7990590bf9e462ab370e78d93986cdc5160486a2281c80f7c2c [INFO] running `Command { std: "docker" "start" "-a" "2239652f9ebae7990590bf9e462ab370e78d93986cdc5160486a2281c80f7c2c", kill_on_drop: false }` [INFO] [stderr] warning: patch for the non root package will be ignored, specify patch at the workspace root: [INFO] [stderr] package: /opt/rustwide/workdir/verifier/Cargo.toml [INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml [INFO] [stderr] warning: /opt/rustwide/workdir/prover-c2pa/Cargo.toml: file `/opt/rustwide/workdir/prover-c2pa/src/main.rs` found to be present in multiple build targets: [INFO] [stderr] * `lib` target `prover_c2pa` [INFO] [stderr] * `bin` target `prover-c2pa` [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling zerocopy v0.8.26 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking memchr v2.8.0 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Compiling radium v0.7.0 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Checking tap v1.0.1 [INFO] [stderr] Checking funty v2.0.0 [INFO] [stderr] Checking const-oid v0.9.6 [INFO] [stderr] Checking bytes v1.11.1 [INFO] [stderr] Compiling cc v1.2.29 [INFO] [stderr] Checking p3-maybe-rayon v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking hashbrown v0.16.1 [INFO] [stderr] Checking stable_deref_trait v1.2.1 [INFO] [stderr] Checking strength_reduce v0.2.4 [INFO] [stderr] Checking wyz v0.5.1 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Checking base64ct v1.8.0 [INFO] [stderr] Checking futures-core v0.3.32 [INFO] [stderr] Checking simd-adler32 v0.3.8 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Checking transpose v0.2.3 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Compiling num-bigint v0.3.3 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Checking pem-rfc7468 v0.7.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking bitvec v1.0.1 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Checking slab v0.4.12 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Compiling semver v1.0.26 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking futures-task v0.3.32 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking futures-util v0.3.32 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking anyhow v1.0.98 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking socket2 v0.6.2 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Checking bitflags v2.11.0 [INFO] [stderr] Compiling cc-traits v2.0.0 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling ciborium-io v0.2.2 [INFO] [stderr] Checking writeable v0.6.2 [INFO] [stderr] Checking futures-sink v0.3.32 [INFO] [stderr] Checking litemap v0.8.1 [INFO] [stderr] Checking anstyle-query v1.1.3 [INFO] [stderr] Checking anstream v0.6.19 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling curve25519-dalek v4.2.0 [INFO] [stderr] Compiling addchain v0.2.0 [INFO] [stderr] Checking ff v0.12.1 [INFO] [stderr] Compiling btree-slab v0.6.1 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling range-traits v0.3.2 [INFO] [stderr] Checking memuse v0.2.2 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Checking group v0.12.1 [INFO] [stderr] Checking blake2b_simd v1.0.3 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling num-conv v0.1.0 [INFO] [stderr] Checking powerfmt v0.2.0 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Checking gcd v2.3.0 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Compiling time-core v0.1.4 [INFO] [stderr] Compiling hex_fmt v0.3.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.21.3 [INFO] [stderr] Checking bytemuck v1.23.1 [INFO] [stderr] Compiling time-macros v0.2.22 [INFO] [stderr] Checking deranged v0.4.0 [INFO] [stderr] Compiling openssl-src v300.5.5+3.5.5 [INFO] [stderr] Checking sync_wrapper v1.0.2 [INFO] [stderr] Checking futures-channel v0.3.32 [INFO] [stderr] Checking as-slice v0.2.1 [INFO] [stderr] Compiling uuid v1.21.0 [INFO] [stderr] Compiling av-scenechange v0.14.1 [INFO] [stderr] Compiling built v0.8.0 [INFO] [stderr] Checking base16ct v0.2.0 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Checking clap_builder v4.5.41 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking aligned v0.4.3 [INFO] [stderr] Checking env_filter v0.1.3 [INFO] [stderr] Checking flate2 v1.1.9 [INFO] [stderr] Checking bitvec-nom2 v0.2.1 [INFO] [stderr] Checking time v0.3.41 [INFO] [stderr] Checking rusticata-macros v4.1.0 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking core2 v0.4.0 [INFO] [stderr] Checking nom v8.0.0 [INFO] [stderr] Compiling rav1e v0.8.1 [INFO] [stderr] Checking xml-no-std v0.8.26 [INFO] [stderr] Compiling static_assertions v1.1.0 [INFO] [stderr] Compiling utf8-decode v1.0.1 [INFO] [stderr] Checking quick-error v2.0.1 [INFO] [stderr] Checking y4m v0.8.0 [INFO] [stderr] Compiling dashu-base v0.4.1 [INFO] [stderr] Checking num-modular v0.6.1 [INFO] [stderr] Compiling unicode-xid v0.2.6 [INFO] [stderr] Compiling rasn-derive-impl v0.28.8 [INFO] [stderr] Checking jiff v0.2.15 [INFO] [stderr] Compiling pastey v0.1.1 [INFO] [stderr] Compiling winnow v0.5.40 [INFO] [stderr] Compiling zerocopy-derive v0.8.26 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zeroize_derive v1.4.2 [INFO] [stderr] Compiling tracing-attributes v0.1.30 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Checking der v0.7.10 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Compiling ff_derive v0.13.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking spki v0.7.3 [INFO] [stderr] Compiling equator-macro v0.4.2 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Compiling darling_macro v0.21.3 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking rustls-pki-types v1.14.0 [INFO] [stderr] Checking pkcs8 v0.10.2 [INFO] [stderr] Checking signature v2.2.0 [INFO] [stderr] Compiling abnf-core v0.5.0 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling darling v0.21.3 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Compiling serde_with_macros v3.17.0 [INFO] [stderr] Compiling abnf v0.13.0 [INFO] [stderr] Compiling snafu-derive v0.8.9 [INFO] [stderr] Checking sec1 v0.7.3 [INFO] [stderr] Compiling rasn-derive v0.28.8 [INFO] [stderr] Checking rustls-webpki v0.103.9 [INFO] [stderr] Checking crypto-bigint v0.5.5 [INFO] [stderr] Checking ff v0.13.1 [INFO] [stderr] Compiling clap_derive v4.5.41 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking equator v0.4.2 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking group v0.13.0 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking aligned-vec v0.6.4 [INFO] [stderr] Compiling asn1-rs-impl v0.2.0 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking v_frame v0.3.9 [INFO] [stderr] Compiling arg_enum_proc_macro v0.3.4 [INFO] [stderr] Checking serde_with v3.17.0 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Compiling profiling-procmacros v1.0.17 [INFO] [stderr] Compiling asn1-rs-derive v0.6.0 [INFO] [stderr] Checking env_logger v0.11.8 [INFO] [stderr] Checking webpki-roots v1.0.6 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking profiling v1.0.17 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Compiling pct-str v2.0.0 [INFO] [stderr] Compiling toml_edit v0.19.15 [INFO] [stderr] Compiling proc-macro-crate v3.3.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling dashu-int v0.4.1 [INFO] [stderr] Compiling fax_derive v0.2.0 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking snafu v0.8.9 [INFO] [stderr] Checking elliptic-curve v0.13.8 [INFO] [stderr] Compiling ciborium-ll v0.2.2 [INFO] [stderr] Checking asn1-rs v0.7.1 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Checking clap v4.5.41 [INFO] [stderr] Checking num-order v1.2.0 [INFO] [stderr] Checking p3-util v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking hex v0.4.3 [INFO] [stderr] Checking chrono v0.4.44 [INFO] [stderr] Compiling btree-range-map v0.7.2 [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Compiling const_format_proc_macros v0.2.34 [INFO] [stderr] Checking bitstream-io v4.9.0 [INFO] [stderr] Compiling parity-scale-codec v3.7.5 [INFO] [stderr] Checking maybe-rayon v0.1.1 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Checking h2 v0.4.13 [INFO] [stderr] Checking new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling noop_proc_macro v0.3.0 [INFO] [stderr] Checking weezl v0.1.12 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking toml_write v0.1.2 [INFO] [stderr] Compiling oid-registry v0.8.1 [INFO] [stderr] Compiling pix v0.13.4 [INFO] [stderr] Checking zune-core v0.4.12 [INFO] [stderr] Compiling static-regular-grammar v2.0.2 [INFO] [stderr] Checking imgref v1.12.0 [INFO] [stderr] Compiling proc-macro-crate v1.3.1 [INFO] [stderr] Checking const_format v0.2.34 [INFO] [stderr] Checking zune-jpeg v0.4.21 [INFO] [stderr] Checking loop9 v0.1.5 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking nums v0.1.0 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking p3-field v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking rasn v0.28.8 [INFO] [stderr] Compiling parity-scale-codec-derive v3.7.5 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking tokio-rustls v0.26.4 [INFO] [stderr] Checking ark-std v0.4.0 [INFO] [stderr] Checking pasta_curves v0.5.1 [INFO] [stderr] Checking pasta_curves v0.4.1 [INFO] [stderr] Checking fax v0.2.6 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking rfc6979 v0.4.0 [INFO] [stderr] Checking p3-matrix v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-symmetric v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking av1-grain v0.2.5 [INFO] [stderr] Checking blake2 v0.10.6 [INFO] [stderr] Checking p3-challenger v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-dft v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Compiling derive_more-impl v1.0.0 [INFO] [stderr] Compiling traitful v0.3.0 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking p3-mds v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-commit v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Compiling impl-trait-for-tuples v0.2.3 [INFO] [stderr] Checking p3-poseidon2 v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking pairing v0.22.0 [INFO] [stderr] Compiling blake3 v1.8.2 [INFO] [stderr] Checking fdeflate v0.3.7 [INFO] [stderr] Checking zune-inflate v0.2.54 [INFO] [stderr] Checking avif-serialize v0.8.8 [INFO] [stderr] Checking byte-slice-cast v1.2.3 [INFO] [stderr] Checking iri-string v0.7.10 [INFO] [stderr] Checking bit_field v0.10.3 [INFO] [stderr] Checking rgb v0.8.53 [INFO] [stderr] Checking color_quant v1.1.0 [INFO] [stderr] Checking lebe v0.5.3 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling object v0.36.7 [INFO] [stderr] Checking zune-core v0.5.1 [INFO] [stderr] Checking byteorder-lite v0.1.0 [INFO] [stderr] Checking pxfm v0.1.28 [INFO] [stderr] Checking linux-raw-sys v0.12.1 [INFO] [stderr] Compiling halo2curves v0.7.0 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Checking zune-jpeg v0.5.12 [INFO] [stderr] Checking exr v1.74.0 [INFO] [stderr] Checking gif v0.14.1 [INFO] [stderr] Checking image-webp v0.2.4 [INFO] [stderr] Checking png v0.18.1 [INFO] [stderr] Checking dashu-float v0.4.3 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking derive_more v1.0.0 [INFO] [stderr] Checking p3-monty-31 v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking bls12_381 v0.7.1 [INFO] [stderr] Checking halo2_proofs v0.1.0 [INFO] [stderr] Checking parsenic v0.2.1 [INFO] [stderr] Compiling num_enum_derive v0.5.11 [INFO] [stderr] Checking p3-interpolation v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-air v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking tiff v0.10.3 [INFO] [stderr] Checking ecdsa v0.16.9 [INFO] [stderr] Checking rand_core v0.9.5 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking ark-serialize v0.4.2 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Compiling dashu-ratio v0.4.1 [INFO] [stderr] Checking der-parser v10.0.0 [INFO] [stderr] Checking rasn-pkix v0.28.8 [INFO] [stderr] Compiling scale-info-derive v2.11.6 [INFO] [stderr] Checking serde_arrays v0.1.0 [INFO] [stderr] Checking pairing v0.23.0 [INFO] [stderr] Compiling iref-core v3.2.2 [INFO] [stderr] Checking moxcms v0.7.11 [INFO] [stderr] Checking ed25519 v2.2.3 [INFO] [stderr] Compiling unroll v0.1.5 [INFO] [stderr] Compiling halo2derive v0.1.0 [INFO] [stderr] Compiling ark-ff-asm v0.4.2 [INFO] [stderr] Compiling delegate v0.8.0 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Compiling ark-ff-macros v0.4.2 [INFO] [stderr] Checking toml_parser v1.0.9+spec-1.1.0 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Checking qoi v0.4.1 [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking serde_bytes v0.11.19 [INFO] [stderr] Checking toml_datetime v0.7.5+spec-1.1.0 [INFO] [stderr] Checking serde_spanned v1.0.4 [INFO] [stderr] Checking ureq-proto v0.5.3 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Checking gimli v0.31.1 [INFO] [stderr] Checking toml_writer v1.0.6+spec-1.1.0 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Checking typed-path v0.12.3 [INFO] [stderr] Checking data-encoding v2.10.0 [INFO] [stderr] Compiling eyre v0.6.12 [INFO] [stderr] Checking utf-8 v0.7.6 [INFO] [stderr] Checking tempfile v3.26.0 [INFO] [stderr] Checking ureq v3.2.0 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking x509-parser v0.18.1 [INFO] [stderr] Checking iref v3.2.2 [INFO] [stderr] Checking hyper-util v0.1.20 [INFO] [stderr] Checking halo2 v0.1.0-beta.2 [INFO] [stderr] Checking config v0.14.1 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking toml v0.9.12+spec-1.1.0 [INFO] [stderr] Checking zip v8.1.0 [INFO] [stderr] Checking sha3 v0.10.8 [INFO] [stderr] Checking ravif v0.12.0 [INFO] [stderr] Checking non-empty-string v0.2.6 [INFO] [stderr] Checking rasn-ocsp v0.28.8 [INFO] [stderr] Checking ark-ff v0.4.2 [INFO] [stderr] Checking rasn-cms v0.28.8 [INFO] [stderr] Checking c2pa_cbor v0.77.2 [INFO] [stderr] Compiling static-iref v3.0.0 [INFO] [stderr] Checking scale-info v2.11.6 [INFO] [stderr] Compiling dashu-macros v0.4.1 [INFO] [stderr] Checking coset v0.4.1 [INFO] [stderr] Checking png_pong v0.9.3 [INFO] [stderr] Checking ed25519-dalek v2.2.0 [INFO] [stderr] Checking num_enum v0.5.11 [INFO] [stderr] Checking jubjub v0.9.0 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking p3-fri v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking addr2line v0.24.2 [INFO] [stderr] Checking mp4 v0.14.0 [INFO] [stderr] Checking primeorder v0.13.6 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking nonempty-collections v1.3.0 [INFO] [stderr] Checking serde-transcode v1.1.1 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling async-generic v1.1.2 [INFO] [stderr] Compiling derive_more-impl v2.0.1 [INFO] [stderr] Checking id3 v1.16.4 [INFO] [stderr] Checking pem v3.0.6 [INFO] [stderr] Checking img-parts v0.4.0 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking bcder v0.7.6 [INFO] [stderr] Checking const-hex v1.18.0 [INFO] [stderr] Checking csv-core v0.1.12 [INFO] [stderr] Checking quick-xml v0.39.2 [INFO] [stderr] Checking byteordered v0.6.0 [INFO] [stderr] Checking hyper-rustls v0.27.7 [INFO] [stderr] Checking range-set v0.1.0 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking reqwest v0.12.28 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking jfifdump v0.6.0 [INFO] [stderr] Checking rustc-demangle v0.1.25 [INFO] [stderr] Checking ansi_term v0.12.1 [INFO] [stderr] Checking indenter v0.3.3 [INFO] [stderr] Checking downcast-rs v1.2.1 [INFO] [stderr] Checking atree v0.5.2 [INFO] [stderr] Checking extfmt v0.2.0 [INFO] [stderr] Checking riff v2.0.0 [INFO] [stderr] Checking image v0.25.9 [INFO] [stderr] Checking web-time v1.1.0 [INFO] [stderr] Checking hex-literal v1.1.0 [INFO] [stderr] Checking num v0.4.3 [INFO] [stderr] Checking tracing-forest v0.1.6 [INFO] [stderr] Checking rrs-succinct v0.1.0 [INFO] [stderr] Checking derive_more v2.0.1 [INFO] [stderr] Checking csv v1.3.1 [INFO] [stderr] Checking core_affinity v0.8.3 [INFO] [stderr] Checking p3-circle v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking crossbeam v0.8.4 [INFO] [stderr] Checking dashu v0.4.2 [INFO] [stderr] Checking p256 v0.13.2 [INFO] [stderr] Checking p3-blake3 v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-keccak v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking snowbridge-amcl v1.0.2 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Checking k256 v0.13.4 [INFO] [stderr] Checking p3-keccak-air v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-uni-stark v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-baby-bear v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-koala-bear v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-mersenne-31 v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-goldilocks v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking p3-merkle-tree v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking vec_map v0.8.2 [INFO] [stderr] Compiling pico-derive v1.2.2 (https://github.com/brevis-network/pico?tag=v1.3.0#f8617c9c) [INFO] [stderr] Checking cpu-time v1.0.0 [INFO] [stderr] Checking sysinfo v0.30.13 [INFO] [stderr] Checking hybrid-array v0.2.3 [INFO] [stderr] Checking rayon-scan v0.1.1 [INFO] [stderr] Checking elf v0.7.4 [INFO] [stderr] Checking pico-patch-libs v1.2.2 (https://github.com/brevis-network/pico?tag=v1.3.0#f8617c9c) [INFO] [stderr] Compiling multer v3.1.0 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Checking serde_path_to_error v0.1.20 [INFO] [stderr] Checking matchit v0.7.3 [INFO] [stderr] Checking tower-http v0.5.2 [INFO] [stderr] Checking tower v0.4.13 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Checking p3-bn254-fr v0.1.0 (https://github.com/brevis-network/Plonky3.git?rev=f5056c9#f5056c94) [INFO] [stderr] Checking backtrace v0.3.75 [INFO] [stderr] Checking axum v0.7.9 [INFO] [stderr] Checking zkhash v0.2.0 [INFO] [stderr] Checking pico-vm v1.2.2 (https://github.com/brevis-network/pico?tag=v1.3.0#f8617c9c) [INFO] [stderr] Checking pico-sdk v1.2.2 (https://github.com/brevis-network/pico?tag=v1.3.0#f8617c9c) [INFO] [stderr] Checking app-c2pa v0.1.0 (/opt/rustwide/workdir/app-c2pa) [INFO] [stdout] warning: function `action_to_bytes` is never used [INFO] [stdout] --> app-c2pa/src/main.rs:97:4 [INFO] [stdout] | [INFO] [stdout] 97 | fn action_to_bytes(action: &str) -> [u8; 32] { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `action_to_bytes` is never used [INFO] [stdout] --> app-c2pa/src/main.rs:97:4 [INFO] [stdout] | [INFO] [stdout] 97 | fn action_to_bytes(action: &str) -> [u8; 32] { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `data_hash` [INFO] [stdout] --> app-c2pa/src/main.rs:79:14 [INFO] [stdout] | [INFO] [stdout] 79 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 79 - for i in 0..8 { [INFO] [stdout] 79 + for (i, ) in data_hash.iter().enumerate().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `hash` [INFO] [stdout] --> app-c2pa/src/main.rs:130:14 [INFO] [stdout] | [INFO] [stdout] 130 | for i in 0..32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 130 - for i in 0..32 { [INFO] [stdout] 130 + for (i, ) in hash.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `data_hash` [INFO] [stdout] --> app-c2pa/src/main.rs:79:14 [INFO] [stdout] | [INFO] [stdout] 79 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 79 - for i in 0..8 { [INFO] [stdout] 79 + for (i, ) in data_hash.iter().enumerate().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `hash` [INFO] [stdout] --> app-c2pa/src/main.rs:130:14 [INFO] [stdout] | [INFO] [stdout] 130 | for i in 0..32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 130 - for i in 0..32 { [INFO] [stdout] 130 + for (i, ) in hash.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking c2pa v0.76.0 [INFO] [stderr] Checking prover-c2pa v0.1.0 (/opt/rustwide/workdir/prover-c2pa) [INFO] [stderr] Checking verifier v0.1.0 (/opt/rustwide/workdir/verifier) [INFO] [stderr] Checking cropper v0.1.0 (/opt/rustwide/workdir/cropper) [INFO] [stdout] warning: unused imports: `Read`, `Seek`, and `Write` [INFO] [stdout] --> cropper/src/main.rs:11:23 [INFO] [stdout] | [INFO] [stdout] 11 | use std::io::{Cursor, Read, Seek, Write}; [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 imports: `Read`, `Seek`, and `Write` [INFO] [stdout] --> cropper/src/main.rs:11:23 [INFO] [stdout] | [INFO] [stdout] 11 | use std::io::{Cursor, Read, Seek, Write}; [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> cropper/src/main.rs:213:18 [INFO] [stdout] | [INFO] [stdout] 213 | .map_err(|e| c2pa::Error::JsonError(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `c2pa::Error::JsonError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> cropper/src/main.rs:213:18 [INFO] [stdout] | [INFO] [stdout] 213 | .map_err(|e| c2pa::Error::JsonError(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `c2pa::Error::JsonError` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `alg` [INFO] [stdout] --> prover-c2pa/src/main.rs:338:45 [INFO] [stdout] | [INFO] [stdout] 338 | ... if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_alg` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Args` is more private than the item `verify_from_base64` [INFO] [stdout] --> verifier/src/main.rs:146:1 [INFO] [stdout] | [INFO] [stdout] 146 | pub fn verify_from_base64(base64_data: &str, args: &Args) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `verify_from_base64` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `Args` is only usable at visibility `pub(crate)` [INFO] [stdout] --> verifier/src/main.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | struct Args { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `alg` [INFO] [stdout] --> prover-c2pa/src/main.rs:338:45 [INFO] [stdout] | [INFO] [stdout] 338 | ... if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_alg` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Args` is more private than the item `verify_from_base64` [INFO] [stdout] --> verifier/src/main.rs:146:1 [INFO] [stdout] | [INFO] [stdout] 146 | pub fn verify_from_base64(base64_data: &str, args: &Args) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `verify_from_base64` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `Args` is only usable at visibility `pub(crate)` [INFO] [stdout] --> verifier/src/main.rs:18:1 [INFO] [stdout] | [INFO] [stdout] 18 | struct Args { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `client` [INFO] [stdout] --> prover-c2pa/src/main.rs:754:9 [INFO] [stdout] | [INFO] [stdout] 754 | let client = DefaultProverClient::new(&elf); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_client` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> prover-c2pa/src/main.rs:974:9 [INFO] [stdout] | [INFO] [stdout] 974 | let mut image_hash = calculate_image_hash(temp_path_str); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> prover-c2pa/src/main.rs:975:9 [INFO] [stdout] | [INFO] [stdout] 975 | let mut expected_hash = image_hash; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_elf` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:128:4 [INFO] [stdout] | [INFO] [stdout] 128 | fn load_elf(path: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `software_agent`, `source`, and `parameters` are never read [INFO] [stdout] --> prover-c2pa/src/main.rs:240:5 [INFO] [stdout] | [INFO] [stdout] 237 | struct ModificationRecord { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 240 | software_agent: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 241 | source: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 242 | parameters: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ModificationRecord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_validation_checks` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:246:4 [INFO] [stdout] | [INFO] [stdout] 246 | fn extract_validation_checks(json_str: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ValidationCheck` is never constructed [INFO] [stdout] --> prover-c2pa/src/main.rs:310:8 [INFO] [stdout] | [INFO] [stdout] 310 | struct ValidationCheck { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_data_hash_from_manifest` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:317:4 [INFO] [stdout] | [INFO] [stdout] 317 | fn extract_data_hash_from_manifest(json_str: &str) -> Option<[u8; 32]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_hex_hash` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:365:4 [INFO] [stdout] | [INFO] [stdout] 365 | fn parse_hex_hash(hex: &str) -> Option<[u8; 32]> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `main` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:393:4 [INFO] [stdout] | [INFO] [stdout] 393 | fn main() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `print_verification_results` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:535:4 [INFO] [stdout] | [INFO] [stdout] 535 | fn print_verification_results(reader: &Reader, json_output: &str, args: &Args) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_public_values` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:618:4 [INFO] [stdout] | [INFO] [stdout] 618 | fn verify_public_values(input: &C2paInput, public_values: &C2paResult) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `compute_hash_local` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:652:4 [INFO] [stdout] | [INFO] [stdout] 652 | fn compute_hash_local(data_hash: &[u8; 32], size: u32) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> verifier/src/main.rs:154:56 [INFO] [stdout] | [INFO] [stdout] 154 | let reader = match create_reader_from_stream(args, &format, image_bytes) { [INFO] [stdout] | ^^^^^^^ help: change this to: `format` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `client` [INFO] [stdout] --> prover-c2pa/src/main.rs:754:9 [INFO] [stdout] | [INFO] [stdout] 754 | let client = DefaultProverClient::new(&elf); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_client` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:367:9 [INFO] [stdout] | [INFO] [stdout] 367 | / if let Some(assertions) = manifest_obj.get("assertions") { [INFO] [stdout] 368 | | if let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 369 | | for assertion in assertions_arr { [INFO] [stdout] 370 | | if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 417 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 367 ~ if let Some(assertions) = manifest_obj.get("assertions") [INFO] [stdout] 368 ~ && let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 369 | for assertion in assertions_arr { [INFO] [stdout] ... [INFO] [stdout] 415 | } [INFO] [stdout] 416 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:370:21 [INFO] [stdout] | [INFO] [stdout] 370 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 371 | | if label == "c2pa.actions.v2" { [INFO] [stdout] 372 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 373 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... | [INFO] [stdout] 414 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 370 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 371 ~ && label == "c2pa.actions.v2" { [INFO] [stdout] 372 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 412 | } [INFO] [stdout] 413 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:371:25 [INFO] [stdout] | [INFO] [stdout] 371 | / if label == "c2pa.actions.v2" { [INFO] [stdout] 372 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 373 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 374 | | for action in actions { [INFO] [stdout] ... | [INFO] [stdout] 413 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 371 ~ if label == "c2pa.actions.v2" [INFO] [stdout] 372 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 373 | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... [INFO] [stdout] 411 | } [INFO] [stdout] 412 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:372:29 [INFO] [stdout] | [INFO] [stdout] 372 | / ... if let Some(data) = assertion.get("data") { [INFO] [stdout] 373 | | ... if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 374 | | ... for action in actions { [INFO] [stdout] 375 | | ... let action_name = action [INFO] [stdout] ... | [INFO] [stdout] 412 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 372 ~ if let Some(data) = assertion.get("data") [INFO] [stdout] 373 ~ && let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 374 | for action in actions { [INFO] [stdout] ... [INFO] [stdout] 410 | } [INFO] [stdout] 411 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:472:5 [INFO] [stdout] | [INFO] [stdout] 472 | / if let Some(val_results) = json.get("validation_results") { [INFO] [stdout] 473 | | if let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 474 | | // Check success [INFO] [stdout] 475 | | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] ... | [INFO] [stdout] 509 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 472 ~ if let Some(val_results) = json.get("validation_results") [INFO] [stdout] 473 ~ && let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 474 | // Check success [INFO] [stdout] ... [INFO] [stdout] 507 | } [INFO] [stdout] 508 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> prover-c2pa/src/main.rs:974:9 [INFO] [stdout] | [INFO] [stdout] 974 | let mut image_hash = calculate_image_hash(temp_path_str); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> prover-c2pa/src/main.rs:975:9 [INFO] [stdout] | [INFO] [stdout] 975 | let mut expected_hash = image_hash; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:475:13 [INFO] [stdout] | [INFO] [stdout] 475 | / if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 476 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] 477 | | for item in success_arr { [INFO] [stdout] 478 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 490 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 475 ~ if let Some(success) = active_manifest.get("success") [INFO] [stdout] 476 ~ && let Some(success_arr) = success.as_array() { [INFO] [stdout] 477 | for item in success_arr { [INFO] [stdout] ... [INFO] [stdout] 488 | } [INFO] [stdout] 489 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:492:13 [INFO] [stdout] | [INFO] [stdout] 492 | / if let Some(failure) = active_manifest.get("failure") { [INFO] [stdout] 493 | | if let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 494 | | for item in failure_arr { [INFO] [stdout] 495 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 507 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 492 ~ if let Some(failure) = active_manifest.get("failure") [INFO] [stdout] 493 ~ && let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 494 | for item in failure_arr { [INFO] [stdout] ... [INFO] [stdout] 505 | } [INFO] [stdout] 506 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_data_hash_from_manifest` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:317:4 [INFO] [stdout] | [INFO] [stdout] 317 | fn extract_data_hash_from_manifest(json_str: &str) -> Option<[u8; 32]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_hex_hash` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:365:4 [INFO] [stdout] | [INFO] [stdout] 365 | fn parse_hex_hash(hex: &str) -> Option<[u8; 32]> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `hash` [INFO] [stdout] --> prover-c2pa/src/main.rs:84:14 [INFO] [stdout] | [INFO] [stdout] 84 | for i in 0..32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 84 - for i in 0..32 { [INFO] [stdout] 84 + for (i, ) in hash.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> verifier/src/main.rs:154:56 [INFO] [stdout] | [INFO] [stdout] 154 | let reader = match create_reader_from_stream(args, &format, image_bytes) { [INFO] [stdout] | ^^^^^^^ help: change this to: `format` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `hash` [INFO] [stdout] --> prover-c2pa/src/main.rs:84:14 [INFO] [stdout] | [INFO] [stdout] 84 | for i in 0..32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 84 - for i in 0..32 { [INFO] [stdout] 84 + for (i, ) in hash.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:165:9 [INFO] [stdout] | [INFO] [stdout] 165 | / if let Some(assertions) = manifest_obj.get("assertions") { [INFO] [stdout] 166 | | if let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 167 | | for assertion in assertions_arr { [INFO] [stdout] 168 | | if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 211 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 165 ~ if let Some(assertions) = manifest_obj.get("assertions") [INFO] [stdout] 166 ~ && let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 167 | for assertion in assertions_arr { [INFO] [stdout] ... [INFO] [stdout] 209 | } [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:168:21 [INFO] [stdout] | [INFO] [stdout] 168 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 169 | | if label == "c2pa.actions.v2" { [INFO] [stdout] 170 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... | [INFO] [stdout] 208 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 168 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 169 ~ && label == "c2pa.actions.v2" { [INFO] [stdout] 170 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 206 | } [INFO] [stdout] 207 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:169:25 [INFO] [stdout] | [INFO] [stdout] 169 | / if label == "c2pa.actions.v2" { [INFO] [stdout] 170 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | | for action in actions { [INFO] [stdout] ... | [INFO] [stdout] 207 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 169 ~ if label == "c2pa.actions.v2" [INFO] [stdout] 170 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... [INFO] [stdout] 205 | } [INFO] [stdout] 206 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:170:29 [INFO] [stdout] | [INFO] [stdout] 170 | / ... if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | ... if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | | ... for action in actions { [INFO] [stdout] 173 | | ... let action_name = action [INFO] [stdout] ... | [INFO] [stdout] 206 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 170 ~ if let Some(data) = assertion.get("data") [INFO] [stdout] 171 ~ && let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | for action in actions { [INFO] [stdout] ... [INFO] [stdout] 204 | } [INFO] [stdout] 205 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:367:9 [INFO] [stdout] | [INFO] [stdout] 367 | / if let Some(assertions) = manifest_obj.get("assertions") { [INFO] [stdout] 368 | | if let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 369 | | for assertion in assertions_arr { [INFO] [stdout] 370 | | if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 417 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 367 ~ if let Some(assertions) = manifest_obj.get("assertions") [INFO] [stdout] 368 ~ && let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 369 | for assertion in assertions_arr { [INFO] [stdout] ... [INFO] [stdout] 415 | } [INFO] [stdout] 416 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:370:21 [INFO] [stdout] | [INFO] [stdout] 370 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 371 | | if label == "c2pa.actions.v2" { [INFO] [stdout] 372 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 373 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... | [INFO] [stdout] 414 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 370 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 371 ~ && label == "c2pa.actions.v2" { [INFO] [stdout] 372 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 412 | } [INFO] [stdout] 413 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:371:25 [INFO] [stdout] | [INFO] [stdout] 371 | / if label == "c2pa.actions.v2" { [INFO] [stdout] 372 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 373 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 374 | | for action in actions { [INFO] [stdout] ... | [INFO] [stdout] 413 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 371 ~ if label == "c2pa.actions.v2" [INFO] [stdout] 372 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 373 | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... [INFO] [stdout] 411 | } [INFO] [stdout] 412 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:372:29 [INFO] [stdout] | [INFO] [stdout] 372 | / ... if let Some(data) = assertion.get("data") { [INFO] [stdout] 373 | | ... if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 374 | | ... for action in actions { [INFO] [stdout] 375 | | ... let action_name = action [INFO] [stdout] ... | [INFO] [stdout] 412 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 372 ~ if let Some(data) = assertion.get("data") [INFO] [stdout] 373 ~ && let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 374 | for action in actions { [INFO] [stdout] ... [INFO] [stdout] 410 | } [INFO] [stdout] 411 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:269:5 [INFO] [stdout] | [INFO] [stdout] 269 | / if let Some(val_results) = json.get("validation_results") { [INFO] [stdout] 270 | | if let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 271 | | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 272 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] ... | [INFO] [stdout] 304 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 269 ~ if let Some(val_results) = json.get("validation_results") [INFO] [stdout] 270 ~ && let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 271 | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] ... [INFO] [stdout] 302 | } [INFO] [stdout] 303 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | / if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 272 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] 273 | | for item in success_arr { [INFO] [stdout] 274 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 286 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 271 ~ if let Some(success) = active_manifest.get("success") [INFO] [stdout] 272 ~ && let Some(success_arr) = success.as_array() { [INFO] [stdout] 273 | for item in success_arr { [INFO] [stdout] ... [INFO] [stdout] 284 | } [INFO] [stdout] 285 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:472:5 [INFO] [stdout] | [INFO] [stdout] 472 | / if let Some(val_results) = json.get("validation_results") { [INFO] [stdout] 473 | | if let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 474 | | // Check success [INFO] [stdout] 475 | | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] ... | [INFO] [stdout] 509 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 472 ~ if let Some(val_results) = json.get("validation_results") [INFO] [stdout] 473 ~ && let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 474 | // Check success [INFO] [stdout] ... [INFO] [stdout] 507 | } [INFO] [stdout] 508 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:475:13 [INFO] [stdout] | [INFO] [stdout] 475 | / if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 476 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] 477 | | for item in success_arr { [INFO] [stdout] 478 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 490 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 475 ~ if let Some(success) = active_manifest.get("success") [INFO] [stdout] 476 ~ && let Some(success_arr) = success.as_array() { [INFO] [stdout] 477 | for item in success_arr { [INFO] [stdout] ... [INFO] [stdout] 488 | } [INFO] [stdout] 489 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:287:13 [INFO] [stdout] | [INFO] [stdout] 287 | / if let Some(failure) = active_manifest.get("failure") { [INFO] [stdout] 288 | | if let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 289 | | for item in failure_arr { [INFO] [stdout] 290 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 302 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 287 ~ if let Some(failure) = active_manifest.get("failure") [INFO] [stdout] 288 ~ && let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 289 | for item in failure_arr { [INFO] [stdout] ... [INFO] [stdout] 300 | } [INFO] [stdout] 301 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> verifier/src/main.rs:492:13 [INFO] [stdout] | [INFO] [stdout] 492 | / if let Some(failure) = active_manifest.get("failure") { [INFO] [stdout] 493 | | if let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 494 | | for item in failure_arr { [INFO] [stdout] 495 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 507 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 492 ~ if let Some(failure) = active_manifest.get("failure") [INFO] [stdout] 493 ~ && let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 494 | for item in failure_arr { [INFO] [stdout] ... [INFO] [stdout] 505 | } [INFO] [stdout] 506 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:329:21 [INFO] [stdout] | [INFO] [stdout] 329 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 330 | | if label.contains("hash") || label.contains("data") { [INFO] [stdout] 331 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... | [INFO] [stdout] 355 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 329 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 330 ~ && (label.contains("hash") || label.contains("data")) { [INFO] [stdout] 331 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 353 | } [INFO] [stdout] 354 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:330:25 [INFO] [stdout] | [INFO] [stdout] 330 | / if label.contains("hash") || label.contains("data") { [INFO] [stdout] 331 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 332 | | // Try to get the hash value [INFO] [stdout] 333 | | if let Some(hash_val) = data.get("hash").and_then(|h| h.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 354 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 330 ~ if (label.contains("hash") || label.contains("data")) { [INFO] [stdout] 331 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 332 | // Try to get the hash value [INFO] [stdout] ... [INFO] [stdout] 352 | } [INFO] [stdout] 353 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:338:33 [INFO] [stdout] | [INFO] [stdout] 338 | / ... if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) { [INFO] [stdout] 339 | | ... if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | | ... if hash_arr.len() >= 32 { [INFO] [stdout] 341 | | ... let mut hash = [0u8; 32]; [INFO] [stdout] ... | [INFO] [stdout] 352 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 338 ~ if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) [INFO] [stdout] 339 ~ && let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | if hash_arr.len() >= 32 { [INFO] [stdout] ... [INFO] [stdout] 350 | } [INFO] [stdout] 351 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:339:37 [INFO] [stdout] | [INFO] [stdout] 339 | / ... if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | | ... if hash_arr.len() >= 32 { [INFO] [stdout] 341 | | ... let mut hash = [0u8; 32]; [INFO] [stdout] 342 | | ... for (i, val) in hash_arr.iter().enumerate() { [INFO] [stdout] ... | [INFO] [stdout] 351 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 339 ~ if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) [INFO] [stdout] 340 ~ && hash_arr.len() >= 32 { [INFO] [stdout] 341 | let mut hash = [0u8; 32]; [INFO] [stdout] ... [INFO] [stdout] 349 | return Some(hash); [INFO] [stdout] 350 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:343:49 [INFO] [stdout] | [INFO] [stdout] 343 | / ... if i < 32 { [INFO] [stdout] 344 | | ... if let Some(num) = val.as_u64() { [INFO] [stdout] 345 | | ... hash[i] = num as u8; [INFO] [stdout] 346 | | ... } [INFO] [stdout] 347 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 343 ~ if i < 32 [INFO] [stdout] 344 ~ && let Some(num) = val.as_u64() { [INFO] [stdout] 345 | hash[i] = num as u8; [INFO] [stdout] 346 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:165:9 [INFO] [stdout] | [INFO] [stdout] 165 | / if let Some(assertions) = manifest_obj.get("assertions") { [INFO] [stdout] 166 | | if let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 167 | | for assertion in assertions_arr { [INFO] [stdout] 168 | | if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 211 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 165 ~ if let Some(assertions) = manifest_obj.get("assertions") [INFO] [stdout] 166 ~ && let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 167 | for assertion in assertions_arr { [INFO] [stdout] ... [INFO] [stdout] 209 | } [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:168:21 [INFO] [stdout] | [INFO] [stdout] 168 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 169 | | if label == "c2pa.actions.v2" { [INFO] [stdout] 170 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... | [INFO] [stdout] 208 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 168 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 169 ~ && label == "c2pa.actions.v2" { [INFO] [stdout] 170 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 206 | } [INFO] [stdout] 207 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:169:25 [INFO] [stdout] | [INFO] [stdout] 169 | / if label == "c2pa.actions.v2" { [INFO] [stdout] 170 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | | for action in actions { [INFO] [stdout] ... | [INFO] [stdout] 207 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 169 ~ if label == "c2pa.actions.v2" [INFO] [stdout] 170 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... [INFO] [stdout] 205 | } [INFO] [stdout] 206 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:170:29 [INFO] [stdout] | [INFO] [stdout] 170 | / ... if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | ... if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | | ... for action in actions { [INFO] [stdout] 173 | | ... let action_name = action [INFO] [stdout] ... | [INFO] [stdout] 206 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 170 ~ if let Some(data) = assertion.get("data") [INFO] [stdout] 171 ~ && let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | for action in actions { [INFO] [stdout] ... [INFO] [stdout] 204 | } [INFO] [stdout] 205 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `data_hash` [INFO] [stdout] --> prover-c2pa/src/main.rs:655:14 [INFO] [stdout] | [INFO] [stdout] 655 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 655 - for i in 0..8 { [INFO] [stdout] 655 + for (i, ) in data_hash.iter().enumerate().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:269:5 [INFO] [stdout] | [INFO] [stdout] 269 | / if let Some(val_results) = json.get("validation_results") { [INFO] [stdout] 270 | | if let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 271 | | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 272 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] ... | [INFO] [stdout] 304 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 269 ~ if let Some(val_results) = json.get("validation_results") [INFO] [stdout] 270 ~ && let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 271 | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] ... [INFO] [stdout] 302 | } [INFO] [stdout] 303 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | / if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 272 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] 273 | | for item in success_arr { [INFO] [stdout] 274 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 286 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 271 ~ if let Some(success) = active_manifest.get("success") [INFO] [stdout] 272 ~ && let Some(success_arr) = success.as_array() { [INFO] [stdout] 273 | for item in success_arr { [INFO] [stdout] ... [INFO] [stdout] 284 | } [INFO] [stdout] 285 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:287:13 [INFO] [stdout] | [INFO] [stdout] 287 | / if let Some(failure) = active_manifest.get("failure") { [INFO] [stdout] 288 | | if let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 289 | | for item in failure_arr { [INFO] [stdout] 290 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 302 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 287 ~ if let Some(failure) = active_manifest.get("failure") [INFO] [stdout] 288 ~ && let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 289 | for item in failure_arr { [INFO] [stdout] ... [INFO] [stdout] 300 | } [INFO] [stdout] 301 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:329:21 [INFO] [stdout] | [INFO] [stdout] 329 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 330 | | if label.contains("hash") || label.contains("data") { [INFO] [stdout] 331 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... | [INFO] [stdout] 355 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 329 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 330 ~ && (label.contains("hash") || label.contains("data")) { [INFO] [stdout] 331 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 353 | } [INFO] [stdout] 354 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:330:25 [INFO] [stdout] | [INFO] [stdout] 330 | / if label.contains("hash") || label.contains("data") { [INFO] [stdout] 331 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 332 | | // Try to get the hash value [INFO] [stdout] 333 | | if let Some(hash_val) = data.get("hash").and_then(|h| h.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 354 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 330 ~ if (label.contains("hash") || label.contains("data")) { [INFO] [stdout] 331 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 332 | // Try to get the hash value [INFO] [stdout] ... [INFO] [stdout] 352 | } [INFO] [stdout] 353 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> verifier/src/verifier_test.rs:130:21 [INFO] [stdout] | [INFO] [stdout] 130 | assert!(verification_result.warnings.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!verification_result.warnings.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:338:33 [INFO] [stdout] | [INFO] [stdout] 338 | / ... if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) { [INFO] [stdout] 339 | | ... if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | | ... if hash_arr.len() >= 32 { [INFO] [stdout] 341 | | ... let mut hash = [0u8; 32]; [INFO] [stdout] ... | [INFO] [stdout] 352 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 338 ~ if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) [INFO] [stdout] 339 ~ && let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | if hash_arr.len() >= 32 { [INFO] [stdout] ... [INFO] [stdout] 350 | } [INFO] [stdout] 351 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:339:37 [INFO] [stdout] | [INFO] [stdout] 339 | / ... if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | | ... if hash_arr.len() >= 32 { [INFO] [stdout] 341 | | ... let mut hash = [0u8; 32]; [INFO] [stdout] 342 | | ... for (i, val) in hash_arr.iter().enumerate() { [INFO] [stdout] ... | [INFO] [stdout] 351 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 339 ~ if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) [INFO] [stdout] 340 ~ && hash_arr.len() >= 32 { [INFO] [stdout] 341 | let mut hash = [0u8; 32]; [INFO] [stdout] ... [INFO] [stdout] 349 | return Some(hash); [INFO] [stdout] 350 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:343:49 [INFO] [stdout] | [INFO] [stdout] 343 | / ... if i < 32 { [INFO] [stdout] 344 | | ... if let Some(num) = val.as_u64() { [INFO] [stdout] 345 | | ... hash[i] = num as u8; [INFO] [stdout] 346 | | ... } [INFO] [stdout] 347 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 343 ~ if i < 32 [INFO] [stdout] 344 ~ && let Some(num) = val.as_u64() { [INFO] [stdout] 345 | hash[i] = num as u8; [INFO] [stdout] 346 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> prover-c2pa/src/main.rs:758:8 [INFO] [stdout] | [INFO] [stdout] 758 | if proof_data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!proof_data.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `data_hash` [INFO] [stdout] --> prover-c2pa/src/main.rs:655:14 [INFO] [stdout] | [INFO] [stdout] 655 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 655 - for i in 0..8 { [INFO] [stdout] 655 + for (i, ) in data_hash.iter().enumerate().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:877:5 [INFO] [stdout] | [INFO] [stdout] 877 | / if data.len() >= 12 && &data[4..8] == b"ftyp" { [INFO] [stdout] 878 | | if &data[8..12] == b"avif" || &data[8..12] == b"avis" || &data[8..11] == b"av0" { [INFO] [stdout] 879 | | return "avif"; [INFO] [stdout] 880 | | } [INFO] [stdout] 881 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 877 ~ if data.len() >= 12 && &data[4..8] == b"ftyp" [INFO] [stdout] 878 ~ && (&data[8..12] == b"avif" || &data[8..12] == b"avis" || &data[8..11] == b"av0") { [INFO] [stdout] 879 | return "avif"; [INFO] [stdout] 880 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:884:5 [INFO] [stdout] | [INFO] [stdout] 884 | / if data.len() >= 12 && &data[4..8] == b"ftyp" { [INFO] [stdout] 885 | | if &data[8..12] == b"heic" || &data[8..12] == b"heis" || &data[8..12] == b"hevx" { [INFO] [stdout] 886 | | return "heic"; [INFO] [stdout] 887 | | } [INFO] [stdout] 888 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 884 ~ if data.len() >= 12 && &data[4..8] == b"ftyp" [INFO] [stdout] 885 ~ && (&data[8..12] == b"heic" || &data[8..12] == b"heis" || &data[8..12] == b"hevx") { [INFO] [stdout] 886 | return "heic"; [INFO] [stdout] 887 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> prover-c2pa/src/main.rs:758:8 [INFO] [stdout] | [INFO] [stdout] 758 | if proof_data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!proof_data.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:877:5 [INFO] [stdout] | [INFO] [stdout] 877 | / if data.len() >= 12 && &data[4..8] == b"ftyp" { [INFO] [stdout] 878 | | if &data[8..12] == b"avif" || &data[8..12] == b"avis" || &data[8..11] == b"av0" { [INFO] [stdout] 879 | | return "avif"; [INFO] [stdout] 880 | | } [INFO] [stdout] 881 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 877 ~ if data.len() >= 12 && &data[4..8] == b"ftyp" [INFO] [stdout] 878 ~ && (&data[8..12] == b"avif" || &data[8..12] == b"avis" || &data[8..11] == b"av0") { [INFO] [stdout] 879 | return "avif"; [INFO] [stdout] 880 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:884:5 [INFO] [stdout] | [INFO] [stdout] 884 | / if data.len() >= 12 && &data[4..8] == b"ftyp" { [INFO] [stdout] 885 | | if &data[8..12] == b"heic" || &data[8..12] == b"heis" || &data[8..12] == b"hevx" { [INFO] [stdout] 886 | | return "heic"; [INFO] [stdout] 887 | | } [INFO] [stdout] 888 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 884 ~ if data.len() >= 12 && &data[4..8] == b"ftyp" [INFO] [stdout] 885 ~ && (&data[8..12] == b"heic" || &data[8..12] == b"heis" || &data[8..12] == b"hevx") { [INFO] [stdout] 886 | return "heic"; [INFO] [stdout] 887 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking c2pa-service v0.1.0 (/opt/rustwide/workdir/c2pa-service) [INFO] [stdout] warning: unused variable: `alg` [INFO] [stdout] --> prover-c2pa/src/main.rs:338:45 [INFO] [stdout] | [INFO] [stdout] 338 | ... if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_alg` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `alg` [INFO] [stdout] --> prover-c2pa/src/main.rs:338:45 [INFO] [stdout] | [INFO] [stdout] 338 | ... if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_alg` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `client` [INFO] [stdout] --> prover-c2pa/src/main.rs:754:9 [INFO] [stdout] | [INFO] [stdout] 754 | let client = DefaultProverClient::new(&elf); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_client` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `client` [INFO] [stdout] --> prover-c2pa/src/main.rs:754:9 [INFO] [stdout] | [INFO] [stdout] 754 | let client = DefaultProverClient::new(&elf); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_client` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> prover-c2pa/src/main.rs:974:9 [INFO] [stdout] | [INFO] [stdout] 974 | let mut image_hash = calculate_image_hash(temp_path_str); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> prover-c2pa/src/main.rs:975:9 [INFO] [stdout] | [INFO] [stdout] 975 | let mut expected_hash = image_hash; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_data_hash_from_manifest` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:317:4 [INFO] [stdout] | [INFO] [stdout] 317 | fn extract_data_hash_from_manifest(json_str: &str) -> Option<[u8; 32]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_hex_hash` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:365:4 [INFO] [stdout] | [INFO] [stdout] 365 | fn parse_hex_hash(hex: &str) -> Option<[u8; 32]> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> prover-c2pa/src/main.rs:974:9 [INFO] [stdout] | [INFO] [stdout] 974 | let mut image_hash = calculate_image_hash(temp_path_str); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> prover-c2pa/src/main.rs:975:9 [INFO] [stdout] | [INFO] [stdout] 975 | let mut expected_hash = image_hash; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_data_hash_from_manifest` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:317:4 [INFO] [stdout] | [INFO] [stdout] 317 | fn extract_data_hash_from_manifest(json_str: &str) -> Option<[u8; 32]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_hex_hash` is never used [INFO] [stdout] --> prover-c2pa/src/main.rs:365:4 [INFO] [stdout] | [INFO] [stdout] 365 | fn parse_hex_hash(hex: &str) -> Option<[u8; 32]> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `hash` [INFO] [stdout] --> prover-c2pa/src/main.rs:84:14 [INFO] [stdout] | [INFO] [stdout] 84 | for i in 0..32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 84 - for i in 0..32 { [INFO] [stdout] 84 + for (i, ) in hash.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `hash` [INFO] [stdout] --> prover-c2pa/src/main.rs:84:14 [INFO] [stdout] | [INFO] [stdout] 84 | for i in 0..32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 84 - for i in 0..32 { [INFO] [stdout] 84 + for (i, ) in hash.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:165:9 [INFO] [stdout] | [INFO] [stdout] 165 | / if let Some(assertions) = manifest_obj.get("assertions") { [INFO] [stdout] 166 | | if let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 167 | | for assertion in assertions_arr { [INFO] [stdout] 168 | | if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 211 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 165 ~ if let Some(assertions) = manifest_obj.get("assertions") [INFO] [stdout] 166 ~ && let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 167 | for assertion in assertions_arr { [INFO] [stdout] ... [INFO] [stdout] 209 | } [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:168:21 [INFO] [stdout] | [INFO] [stdout] 168 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 169 | | if label == "c2pa.actions.v2" { [INFO] [stdout] 170 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... | [INFO] [stdout] 208 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 168 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 169 ~ && label == "c2pa.actions.v2" { [INFO] [stdout] 170 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 206 | } [INFO] [stdout] 207 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:169:25 [INFO] [stdout] | [INFO] [stdout] 169 | / if label == "c2pa.actions.v2" { [INFO] [stdout] 170 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | | for action in actions { [INFO] [stdout] ... | [INFO] [stdout] 207 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 169 ~ if label == "c2pa.actions.v2" [INFO] [stdout] 170 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... [INFO] [stdout] 205 | } [INFO] [stdout] 206 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:170:29 [INFO] [stdout] | [INFO] [stdout] 170 | / ... if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | ... if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | | ... for action in actions { [INFO] [stdout] 173 | | ... let action_name = action [INFO] [stdout] ... | [INFO] [stdout] 206 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 170 ~ if let Some(data) = assertion.get("data") [INFO] [stdout] 171 ~ && let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | for action in actions { [INFO] [stdout] ... [INFO] [stdout] 204 | } [INFO] [stdout] 205 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:269:5 [INFO] [stdout] | [INFO] [stdout] 269 | / if let Some(val_results) = json.get("validation_results") { [INFO] [stdout] 270 | | if let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 271 | | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 272 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] ... | [INFO] [stdout] 304 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 269 ~ if let Some(val_results) = json.get("validation_results") [INFO] [stdout] 270 ~ && let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 271 | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] ... [INFO] [stdout] 302 | } [INFO] [stdout] 303 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | / if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 272 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] 273 | | for item in success_arr { [INFO] [stdout] 274 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 286 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 271 ~ if let Some(success) = active_manifest.get("success") [INFO] [stdout] 272 ~ && let Some(success_arr) = success.as_array() { [INFO] [stdout] 273 | for item in success_arr { [INFO] [stdout] ... [INFO] [stdout] 284 | } [INFO] [stdout] 285 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:287:13 [INFO] [stdout] | [INFO] [stdout] 287 | / if let Some(failure) = active_manifest.get("failure") { [INFO] [stdout] 288 | | if let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 289 | | for item in failure_arr { [INFO] [stdout] 290 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 302 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 287 ~ if let Some(failure) = active_manifest.get("failure") [INFO] [stdout] 288 ~ && let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 289 | for item in failure_arr { [INFO] [stdout] ... [INFO] [stdout] 300 | } [INFO] [stdout] 301 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:329:21 [INFO] [stdout] | [INFO] [stdout] 329 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 330 | | if label.contains("hash") || label.contains("data") { [INFO] [stdout] 331 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... | [INFO] [stdout] 355 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 329 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 330 ~ && (label.contains("hash") || label.contains("data")) { [INFO] [stdout] 331 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 353 | } [INFO] [stdout] 354 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:330:25 [INFO] [stdout] | [INFO] [stdout] 330 | / if label.contains("hash") || label.contains("data") { [INFO] [stdout] 331 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 332 | | // Try to get the hash value [INFO] [stdout] 333 | | if let Some(hash_val) = data.get("hash").and_then(|h| h.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 354 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 330 ~ if (label.contains("hash") || label.contains("data")) { [INFO] [stdout] 331 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 332 | // Try to get the hash value [INFO] [stdout] ... [INFO] [stdout] 352 | } [INFO] [stdout] 353 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:338:33 [INFO] [stdout] | [INFO] [stdout] 338 | / ... if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) { [INFO] [stdout] 339 | | ... if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | | ... if hash_arr.len() >= 32 { [INFO] [stdout] 341 | | ... let mut hash = [0u8; 32]; [INFO] [stdout] ... | [INFO] [stdout] 352 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 338 ~ if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) [INFO] [stdout] 339 ~ && let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | if hash_arr.len() >= 32 { [INFO] [stdout] ... [INFO] [stdout] 350 | } [INFO] [stdout] 351 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:339:37 [INFO] [stdout] | [INFO] [stdout] 339 | / ... if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | | ... if hash_arr.len() >= 32 { [INFO] [stdout] 341 | | ... let mut hash = [0u8; 32]; [INFO] [stdout] 342 | | ... for (i, val) in hash_arr.iter().enumerate() { [INFO] [stdout] ... | [INFO] [stdout] 351 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 339 ~ if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) [INFO] [stdout] 340 ~ && hash_arr.len() >= 32 { [INFO] [stdout] 341 | let mut hash = [0u8; 32]; [INFO] [stdout] ... [INFO] [stdout] 349 | return Some(hash); [INFO] [stdout] 350 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:343:49 [INFO] [stdout] | [INFO] [stdout] 343 | / ... if i < 32 { [INFO] [stdout] 344 | | ... if let Some(num) = val.as_u64() { [INFO] [stdout] 345 | | ... hash[i] = num as u8; [INFO] [stdout] 346 | | ... } [INFO] [stdout] 347 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 343 ~ if i < 32 [INFO] [stdout] 344 ~ && let Some(num) = val.as_u64() { [INFO] [stdout] 345 | hash[i] = num as u8; [INFO] [stdout] 346 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:165:9 [INFO] [stdout] | [INFO] [stdout] 165 | / if let Some(assertions) = manifest_obj.get("assertions") { [INFO] [stdout] 166 | | if let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 167 | | for assertion in assertions_arr { [INFO] [stdout] 168 | | if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 211 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 165 ~ if let Some(assertions) = manifest_obj.get("assertions") [INFO] [stdout] 166 ~ && let Some(assertions_arr) = assertions.as_array() { [INFO] [stdout] 167 | for assertion in assertions_arr { [INFO] [stdout] ... [INFO] [stdout] 209 | } [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:168:21 [INFO] [stdout] | [INFO] [stdout] 168 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 169 | | if label == "c2pa.actions.v2" { [INFO] [stdout] 170 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... | [INFO] [stdout] 208 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 168 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 169 ~ && label == "c2pa.actions.v2" { [INFO] [stdout] 170 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 206 | } [INFO] [stdout] 207 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:169:25 [INFO] [stdout] | [INFO] [stdout] 169 | / if label == "c2pa.actions.v2" { [INFO] [stdout] 170 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | | for action in actions { [INFO] [stdout] ... | [INFO] [stdout] 207 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 169 ~ if label == "c2pa.actions.v2" [INFO] [stdout] 170 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] ... [INFO] [stdout] 205 | } [INFO] [stdout] 206 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:170:29 [INFO] [stdout] | [INFO] [stdout] 170 | / ... if let Some(data) = assertion.get("data") { [INFO] [stdout] 171 | | ... if let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | | ... for action in actions { [INFO] [stdout] 173 | | ... let action_name = action [INFO] [stdout] ... | [INFO] [stdout] 206 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 170 ~ if let Some(data) = assertion.get("data") [INFO] [stdout] 171 ~ && let Some(actions) = data.get("actions").and_then(|a| a.as_array()) { [INFO] [stdout] 172 | for action in actions { [INFO] [stdout] ... [INFO] [stdout] 204 | } [INFO] [stdout] 205 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:269:5 [INFO] [stdout] | [INFO] [stdout] 269 | / if let Some(val_results) = json.get("validation_results") { [INFO] [stdout] 270 | | if let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 271 | | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 272 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] ... | [INFO] [stdout] 304 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 269 ~ if let Some(val_results) = json.get("validation_results") [INFO] [stdout] 270 ~ && let Some(active_manifest) = val_results.get("activeManifest") { [INFO] [stdout] 271 | if let Some(success) = active_manifest.get("success") { [INFO] [stdout] ... [INFO] [stdout] 302 | } [INFO] [stdout] 303 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | / if let Some(success) = active_manifest.get("success") { [INFO] [stdout] 272 | | if let Some(success_arr) = success.as_array() { [INFO] [stdout] 273 | | for item in success_arr { [INFO] [stdout] 274 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 286 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 271 ~ if let Some(success) = active_manifest.get("success") [INFO] [stdout] 272 ~ && let Some(success_arr) = success.as_array() { [INFO] [stdout] 273 | for item in success_arr { [INFO] [stdout] ... [INFO] [stdout] 284 | } [INFO] [stdout] 285 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:287:13 [INFO] [stdout] | [INFO] [stdout] 287 | / if let Some(failure) = active_manifest.get("failure") { [INFO] [stdout] 288 | | if let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 289 | | for item in failure_arr { [INFO] [stdout] 290 | | if let Some(code) = item.get("code").and_then(|c| c.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 302 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 287 ~ if let Some(failure) = active_manifest.get("failure") [INFO] [stdout] 288 ~ && let Some(failure_arr) = failure.as_array() { [INFO] [stdout] 289 | for item in failure_arr { [INFO] [stdout] ... [INFO] [stdout] 300 | } [INFO] [stdout] 301 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:329:21 [INFO] [stdout] | [INFO] [stdout] 329 | / if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) { [INFO] [stdout] 330 | | if label.contains("hash") || label.contains("data") { [INFO] [stdout] 331 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... | [INFO] [stdout] 355 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 329 ~ if let Some(label) = assertion.get("label").and_then(|l| l.as_str()) [INFO] [stdout] 330 ~ && (label.contains("hash") || label.contains("data")) { [INFO] [stdout] 331 | if let Some(data) = assertion.get("data") { [INFO] [stdout] ... [INFO] [stdout] 353 | } [INFO] [stdout] 354 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:330:25 [INFO] [stdout] | [INFO] [stdout] 330 | / if label.contains("hash") || label.contains("data") { [INFO] [stdout] 331 | | if let Some(data) = assertion.get("data") { [INFO] [stdout] 332 | | // Try to get the hash value [INFO] [stdout] 333 | | if let Some(hash_val) = data.get("hash").and_then(|h| h.as_str()) { [INFO] [stdout] ... | [INFO] [stdout] 354 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 330 ~ if (label.contains("hash") || label.contains("data")) { [INFO] [stdout] 331 ~ && let Some(data) = assertion.get("data") { [INFO] [stdout] 332 | // Try to get the hash value [INFO] [stdout] ... [INFO] [stdout] 352 | } [INFO] [stdout] 353 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:338:33 [INFO] [stdout] | [INFO] [stdout] 338 | / ... if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) { [INFO] [stdout] 339 | | ... if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | | ... if hash_arr.len() >= 32 { [INFO] [stdout] 341 | | ... let mut hash = [0u8; 32]; [INFO] [stdout] ... | [INFO] [stdout] 352 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 338 ~ if let Some(alg) = data.get("alg").and_then(|a| a.as_str()) [INFO] [stdout] 339 ~ && let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | if hash_arr.len() >= 32 { [INFO] [stdout] ... [INFO] [stdout] 350 | } [INFO] [stdout] 351 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:339:37 [INFO] [stdout] | [INFO] [stdout] 339 | / ... if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) { [INFO] [stdout] 340 | | ... if hash_arr.len() >= 32 { [INFO] [stdout] 341 | | ... let mut hash = [0u8; 32]; [INFO] [stdout] 342 | | ... for (i, val) in hash_arr.iter().enumerate() { [INFO] [stdout] ... | [INFO] [stdout] 351 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 339 ~ if let Some(hash_arr) = data.get("hash").and_then(|h| h.as_array()) [INFO] [stdout] 340 ~ && hash_arr.len() >= 32 { [INFO] [stdout] 341 | let mut hash = [0u8; 32]; [INFO] [stdout] ... [INFO] [stdout] 349 | return Some(hash); [INFO] [stdout] 350 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:343:49 [INFO] [stdout] | [INFO] [stdout] 343 | / ... if i < 32 { [INFO] [stdout] 344 | | ... if let Some(num) = val.as_u64() { [INFO] [stdout] 345 | | ... hash[i] = num as u8; [INFO] [stdout] 346 | | ... } [INFO] [stdout] 347 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 343 ~ if i < 32 [INFO] [stdout] 344 ~ && let Some(num) = val.as_u64() { [INFO] [stdout] 345 | hash[i] = num as u8; [INFO] [stdout] 346 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `data_hash` [INFO] [stdout] --> prover-c2pa/src/main.rs:655:14 [INFO] [stdout] | [INFO] [stdout] 655 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 655 - for i in 0..8 { [INFO] [stdout] 655 + for (i, ) in data_hash.iter().enumerate().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `data_hash` [INFO] [stdout] --> prover-c2pa/src/main.rs:655:14 [INFO] [stdout] | [INFO] [stdout] 655 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 655 - for i in 0..8 { [INFO] [stdout] 655 + for (i, ) in data_hash.iter().enumerate().take(8) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> prover-c2pa/src/main.rs:758:8 [INFO] [stdout] | [INFO] [stdout] 758 | if proof_data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!proof_data.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:877:5 [INFO] [stdout] | [INFO] [stdout] 877 | / if data.len() >= 12 && &data[4..8] == b"ftyp" { [INFO] [stdout] 878 | | if &data[8..12] == b"avif" || &data[8..12] == b"avis" || &data[8..11] == b"av0" { [INFO] [stdout] 879 | | return "avif"; [INFO] [stdout] 880 | | } [INFO] [stdout] 881 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 877 ~ if data.len() >= 12 && &data[4..8] == b"ftyp" [INFO] [stdout] 878 ~ && (&data[8..12] == b"avif" || &data[8..12] == b"avis" || &data[8..11] == b"av0") { [INFO] [stdout] 879 | return "avif"; [INFO] [stdout] 880 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:884:5 [INFO] [stdout] | [INFO] [stdout] 884 | / if data.len() >= 12 && &data[4..8] == b"ftyp" { [INFO] [stdout] 885 | | if &data[8..12] == b"heic" || &data[8..12] == b"heis" || &data[8..12] == b"hevx" { [INFO] [stdout] 886 | | return "heic"; [INFO] [stdout] 887 | | } [INFO] [stdout] 888 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 884 ~ if data.len() >= 12 && &data[4..8] == b"ftyp" [INFO] [stdout] 885 ~ && (&data[8..12] == b"heic" || &data[8..12] == b"heis" || &data[8..12] == b"hevx") { [INFO] [stdout] 886 | return "heic"; [INFO] [stdout] 887 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> prover-c2pa/src/main.rs:758:8 [INFO] [stdout] | [INFO] [stdout] 758 | if proof_data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!proof_data.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:877:5 [INFO] [stdout] | [INFO] [stdout] 877 | / if data.len() >= 12 && &data[4..8] == b"ftyp" { [INFO] [stdout] 878 | | if &data[8..12] == b"avif" || &data[8..12] == b"avis" || &data[8..11] == b"av0" { [INFO] [stdout] 879 | | return "avif"; [INFO] [stdout] 880 | | } [INFO] [stdout] 881 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 877 ~ if data.len() >= 12 && &data[4..8] == b"ftyp" [INFO] [stdout] 878 ~ && (&data[8..12] == b"avif" || &data[8..12] == b"avis" || &data[8..11] == b"av0") { [INFO] [stdout] 879 | return "avif"; [INFO] [stdout] 880 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> prover-c2pa/src/main.rs:884:5 [INFO] [stdout] | [INFO] [stdout] 884 | / if data.len() >= 12 && &data[4..8] == b"ftyp" { [INFO] [stdout] 885 | | if &data[8..12] == b"heic" || &data[8..12] == b"heis" || &data[8..12] == b"hevx" { [INFO] [stdout] 886 | | return "heic"; [INFO] [stdout] 887 | | } [INFO] [stdout] 888 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 884 ~ if data.len() >= 12 && &data[4..8] == b"ftyp" [INFO] [stdout] 885 ~ && (&data[8..12] == b"heic" || &data[8..12] == b"heis" || &data[8..12] == b"hevx") { [INFO] [stdout] 886 | return "heic"; [INFO] [stdout] 887 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 35s [INFO] running `Command { std: "docker" "inspect" "2239652f9ebae7990590bf9e462ab370e78d93986cdc5160486a2281c80f7c2c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2239652f9ebae7990590bf9e462ab370e78d93986cdc5160486a2281c80f7c2c", kill_on_drop: false }` [INFO] [stdout] 2239652f9ebae7990590bf9e462ab370e78d93986cdc5160486a2281c80f7c2c