[INFO] cloning repository https://github.com/Egue/hjstream [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Egue/hjstream" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEgue%2Fhjstream", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEgue%2Fhjstream'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a4434ebd7441ef9c629204f5546ac44a3e77a56d [INFO] linting Egue/hjstream against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEgue%2Fhjstream" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-1-tc1/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/Egue/hjstream [INFO] finished tweaking git repo https://github.com/Egue/hjstream [INFO] tweaked toml for git repo https://github.com/Egue/hjstream written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Egue/hjstream 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/Egue/hjstream 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] Downloading crates ... [INFO] [stderr] Downloaded tokio-test v0.4.5 [INFO] [stderr] Downloaded mockito v1.7.1 [INFO] [stderr] Downloaded prometheus v0.13.4 [INFO] [stderr] Downloaded protobuf v2.28.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 4bfc46a3fe2b04b63ae4961e8bbcb812cd3be7424a5253b1331f2f82afc15382 [INFO] running `Command { std: "docker" "start" "-a" "4bfc46a3fe2b04b63ae4961e8bbcb812cd3be7424a5253b1331f2f82afc15382", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4bfc46a3fe2b04b63ae4961e8bbcb812cd3be7424a5253b1331f2f82afc15382", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4bfc46a3fe2b04b63ae4961e8bbcb812cd3be7424a5253b1331f2f82afc15382", kill_on_drop: false }` [INFO] [stdout] 4bfc46a3fe2b04b63ae4961e8bbcb812cd3be7424a5253b1331f2f82afc15382 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] f6f4d54d60e8faf20e90c813f512c8a23a315e344c6e7553436910ab2822ea67 [INFO] running `Command { std: "docker" "start" "-a" "f6f4d54d60e8faf20e90c813f512c8a23a315e344c6e7553436910ab2822ea67", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling zerocopy v0.8.35 [INFO] [stderr] Compiling cc v1.2.54 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking data-encoding v2.10.0 [INFO] [stderr] Compiling protobuf v2.28.0 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking nu-ansi-term v0.50.3 [INFO] [stderr] Compiling prometheus v0.13.4 [INFO] [stderr] Checking time v0.3.46 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Checking dotenv v0.15.0 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking socket2 v0.6.2 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking inotify-sys v0.1.5 [INFO] [stderr] Checking inotify v0.9.6 [INFO] [stderr] Checking rand_core v0.9.5 [INFO] [stderr] Checking serde_path_to_error v0.1.20 [INFO] [stderr] Checking regex v1.12.2 [INFO] [stderr] Checking filetime v0.2.27 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking uuid v1.20.0 [INFO] [stderr] Checking notify v6.1.1 [INFO] [stderr] Checking colored v3.1.1 [INFO] [stderr] Checking similar v2.7.0 [INFO] [stderr] Checking tempfile v3.24.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tungstenite v0.24.0 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling axum-macros v0.4.2 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking tower-http v0.5.2 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking tracing-serde v0.2.0 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking assert-json-diff v2.0.2 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tokio-tungstenite v0.24.0 [INFO] [stderr] Checking tokio-stream v0.1.18 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking h2 v0.4.13 [INFO] [stderr] Checking tracing-appender v0.2.4 [INFO] [stderr] Checking tokio-test v0.4.5 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking hyper-util v0.1.19 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking axum v0.7.9 [INFO] [stderr] Checking mockito v1.7.1 [INFO] [stderr] Checking reqwest v0.12.28 [INFO] [stderr] Checking catv-transcoder-client v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/config/loader.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use chrono::Utc; [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 import: `debug` [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{debug, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut` [INFO] [stdout] --> src/mux/packet.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut}; [INFO] [stdout] | ^^^ ^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native` [INFO] [stdout] --> src/network/srt_receiver.rs:193:7 [INFO] [stdout] | [INFO] [stdout] 193 | #[cfg(feature = "srt-native")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `metrics`, and `prometheus` [INFO] [stdout] = help: consider adding `srt-native` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/network/srt_receiver.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> src/network/srt_receiver.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{info, warn, error, debug}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/network/udp_sender.rs:4:28 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{info, debug, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/network/multicast.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{info, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> src/utils/ffmpeg.rs:3:21 [INFO] [stdout] | [INFO] [stdout] 3 | use tracing::{info, warn, error}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/utils/pid_manager.rs:2:21 [INFO] [stdout] | [INFO] [stdout] 2 | use tracing::{info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/config/loader.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use chrono::Utc; [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 import: `crate::config::loader::VideoConfig` [INFO] [stdout] --> src/core/strategy.rs:283:9 [INFO] [stdout] | [INFO] [stdout] 283 | use crate::config::loader::VideoConfig; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `debug` [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{debug, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut` [INFO] [stdout] --> src/mux/packet.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut}; [INFO] [stdout] | ^^^ ^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native` [INFO] [stdout] --> src/network/srt_receiver.rs:193:7 [INFO] [stdout] | [INFO] [stdout] 193 | #[cfg(feature = "srt-native")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `metrics`, and `prometheus` [INFO] [stdout] = help: consider adding `srt-native` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/network/srt_receiver.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> src/network/srt_receiver.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{info, warn, error, debug}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/network/udp_sender.rs:4:28 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{info, debug, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/network/multicast.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{info, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> src/utils/ffmpeg.rs:3:21 [INFO] [stdout] | [INFO] [stdout] 3 | use tracing::{info, warn, error}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/utils/pid_manager.rs:2:21 [INFO] [stdout] | [INFO] [stdout] 2 | use tracing::{info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/api/websocket.rs:72:38 [INFO] [stdout] | [INFO] [stdout] 72 | Ok(Message::Ping(data)) => { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/api/websocket.rs:72:38 [INFO] [stdout] | [INFO] [stdout] 72 | Ok(Message::Ping(data)) => { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/mux/packet.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | offset += 6; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/network/multicast.rs:219:13 [INFO] [stdout] | [INFO] [stdout] 219 | let result = MulticastSender::new(multicast_addr, interface).await; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `parameters` is never read [INFO] [stdout] --> src/api/websocket.rs:130:5 [INFO] [stdout] | [INFO] [stdout] 127 | struct ClientCommand { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 130 | parameters: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClientCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/mux/packet.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | offset += 6; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/codec/video.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | encoder.codec = codec.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `codec::video::VideoEncoder { codec: codec.to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/codec/video.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | let mut encoder = Self::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/codec/audio.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | encoder.codec = codec.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `codec::audio::AudioEncoder { codec: codec.to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/codec/audio.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let mut encoder = Self::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `parameters` is never read [INFO] [stdout] --> src/api/websocket.rs:130:5 [INFO] [stdout] | [INFO] [stdout] 127 | struct ClientCommand { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 130 | parameters: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClientCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:55:49 [INFO] [stdout] | [INFO] [stdout] 55 | if self.needs_update(local, &backend_config) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:57:57 [INFO] [stdout] | [INFO] [stdout] 57 | self.loader.save_channel_config(&backend_config)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:63:53 [INFO] [stdout] | [INFO] [stdout] 63 | self.loader.save_channel_config(&backend_config)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:95:18 [INFO] [stdout] | [INFO] [stdout] 95 | cmd.args(&["-hide_banner", "-stats", "-loglevel", "info"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-hide_banner", "-stats", "-loglevel", "info"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:122:18 [INFO] [stdout] | [INFO] [stdout] 122 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 123 | | "-fflags", "+genpts", [INFO] [stdout] 124 | | "-i", &self.config.input.url, [INFO] [stdout] 125 | | "-c", "copy", [INFO] [stdout] ... | [INFO] [stdout] 128 | | "-y", [INFO] [stdout] 129 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 122 ~ cmd.args([ [INFO] [stdout] 123 + "-fflags", "+genpts", [INFO] [stdout] 124 + "-i", &self.config.input.url, [INFO] [stdout] 125 + "-c", "copy", [INFO] [stdout] 126 + "-f", "mpegts", [INFO] [stdout] 127 + "-mpegts_copyts", "1", [INFO] [stdout] 128 + "-y", [INFO] [stdout] 129 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:138:18 [INFO] [stdout] | [INFO] [stdout] 138 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 139 | | "-fflags", "+genpts", [INFO] [stdout] 140 | | "-i", &self.config.input.url, [INFO] [stdout] 141 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 138 ~ cmd.args([ [INFO] [stdout] 139 + "-fflags", "+genpts", [INFO] [stdout] 140 + "-i", &self.config.input.url, [INFO] [stdout] 141 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:147:18 [INFO] [stdout] | [INFO] [stdout] 147 | cmd.args(&["-c:a", "copy"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `["-c:a", "copy"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:150:18 [INFO] [stdout] | [INFO] [stdout] 150 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:157:18 [INFO] [stdout] | [INFO] [stdout] 157 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 158 | | "-fflags", "+genpts", [INFO] [stdout] 159 | | "-i", &self.config.input.url, [INFO] [stdout] 160 | | "-c:v", "copy", [INFO] [stdout] 161 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 157 ~ cmd.args([ [INFO] [stdout] 158 + "-fflags", "+genpts", [INFO] [stdout] 159 + "-i", &self.config.input.url, [INFO] [stdout] 160 + "-c:v", "copy", [INFO] [stdout] 161 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:167:18 [INFO] [stdout] | [INFO] [stdout] 167 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:174:18 [INFO] [stdout] | [INFO] [stdout] 174 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 175 | | "-fflags", "+genpts", [INFO] [stdout] 176 | | "-i", &self.config.input.url, [INFO] [stdout] 177 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 174 ~ cmd.args([ [INFO] [stdout] 175 + "-fflags", "+genpts", [INFO] [stdout] 176 + "-i", &self.config.input.url, [INFO] [stdout] 177 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:186:18 [INFO] [stdout] | [INFO] [stdout] 186 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:196:37 [INFO] [stdout] | [INFO] [stdout] 196 | "nvenc" => cmd.args(&["-c:v", "h264_nvenc"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_nvenc"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:197:37 [INFO] [stdout] | [INFO] [stdout] 197 | "vaapi" => cmd.args(&["-c:v", "h264_vaapi"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_vaapi"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:198:35 [INFO] [stdout] | [INFO] [stdout] 198 | "qsv" => cmd.args(&["-c:v", "h264_qsv"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_qsv"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:199:31 [INFO] [stdout] | [INFO] [stdout] 199 | _ => cmd.args(&["-c:v", &video.codec]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", &video.codec]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:202:22 [INFO] [stdout] | [INFO] [stdout] 202 | cmd.args(&["-c:v", &format!("lib{}", video.codec)]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", &format!("lib{}", video.codec)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:206:18 [INFO] [stdout] | [INFO] [stdout] 206 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 207 | | "-profile:v", &video.profile, [INFO] [stdout] 208 | | "-level", &video.level, [INFO] [stdout] 209 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 206 ~ cmd.args([ [INFO] [stdout] 207 + "-profile:v", &video.profile, [INFO] [stdout] 208 + "-level", &video.level, [INFO] [stdout] 209 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:214:26 [INFO] [stdout] | [INFO] [stdout] 214 | cmd.args(&[ [INFO] [stdout] | __________________________^ [INFO] [stdout] 215 | | "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 216 | | "-minrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 217 | | "-maxrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 218 | | "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 219 | | ]); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 214 ~ cmd.args([ [INFO] [stdout] 215 + "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 216 + "-minrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 217 + "-maxrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 218 + "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 219 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:222:26 [INFO] [stdout] | [INFO] [stdout] 222 | cmd.args(&[ [INFO] [stdout] | __________________________^ [INFO] [stdout] 223 | | "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 224 | | "-maxrate", &format!("{}k", video.max_bitrate_kbps), [INFO] [stdout] 225 | | "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 226 | | ]); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 222 ~ cmd.args([ [INFO] [stdout] 223 + "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 224 + "-maxrate", &format!("{}k", video.max_bitrate_kbps), [INFO] [stdout] 225 + "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 226 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:229:26 [INFO] [stdout] | [INFO] [stdout] 229 | cmd.args(&["-b:v", &format!("{}k", video.bitrate_kbps)]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-b:v", &format!("{}k", video.bitrate_kbps)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:234:18 [INFO] [stdout] | [INFO] [stdout] 234 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 235 | | "-g", &video.gop_size.to_string(), [INFO] [stdout] 236 | | "-keyint_min", &(video.gop_size / 2).to_string(), [INFO] [stdout] 237 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 234 ~ cmd.args([ [INFO] [stdout] 235 + "-g", &video.gop_size.to_string(), [INFO] [stdout] 236 + "-keyint_min", &(video.gop_size / 2).to_string(), [INFO] [stdout] 237 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:241:22 [INFO] [stdout] | [INFO] [stdout] 241 | cmd.args(&[ [INFO] [stdout] | ______________________^ [INFO] [stdout] 242 | | "-preset", &video.preset, [INFO] [stdout] 243 | | "-tune", &video.tune, [INFO] [stdout] 244 | | ]); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 241 ~ cmd.args([ [INFO] [stdout] 242 + "-preset", &video.preset, [INFO] [stdout] 243 + "-tune", &video.tune, [INFO] [stdout] 244 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:248:18 [INFO] [stdout] | [INFO] [stdout] 248 | cmd.args(&["-r", &video.framerate.to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-r", &video.framerate.to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:254:18 [INFO] [stdout] | [INFO] [stdout] 254 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 255 | | "-c:a", &audio.codec, [INFO] [stdout] 256 | | "-b:a", &format!("{}k", audio.bitrate_kbps), [INFO] [stdout] 257 | | "-ar", &audio.sample_rate.to_string(), [INFO] [stdout] 258 | | "-ac", &audio.channels.to_string(), [INFO] [stdout] 259 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 254 ~ cmd.args([ [INFO] [stdout] 255 + "-c:a", &audio.codec, [INFO] [stdout] 256 + "-b:a", &format!("{}k", audio.bitrate_kbps), [INFO] [stdout] 257 + "-ar", &audio.sample_rate.to_string(), [INFO] [stdout] 258 + "-ac", &audio.channels.to_string(), [INFO] [stdout] 259 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/codec/video.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | encoder.codec = codec.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `codec::video::VideoEncoder { codec: codec.to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/codec/video.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | let mut encoder = Self::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/analyzer.rs:44:19 [INFO] [stdout] | [INFO] [stdout] 44 | .args(&[ [INFO] [stdout] | ___________________^ [INFO] [stdout] 45 | | "-v", "quiet", [INFO] [stdout] 46 | | "-print_format", "json", [INFO] [stdout] 47 | | "-show_format", [INFO] [stdout] 48 | | "-show_streams", [INFO] [stdout] 49 | | input_url, [INFO] [stdout] 50 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 44 ~ .args([ [INFO] [stdout] 45 + "-v", "quiet", [INFO] [stdout] 46 + "-print_format", "json", [INFO] [stdout] 47 + "-show_format", [INFO] [stdout] 48 + "-show_streams", [INFO] [stdout] 49 + input_url, [INFO] [stdout] 50 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/analyzer.rs:77:19 [INFO] [stdout] | [INFO] [stdout] 77 | .args(&[ [INFO] [stdout] | ___________________^ [INFO] [stdout] 78 | | "-v", "error", [INFO] [stdout] 79 | | "-show_entries", "format=duration", [INFO] [stdout] 80 | | "-of", "default=noprint_wrappers=1:nokey=1", [INFO] [stdout] 81 | | "-timeout", "5000000", // 5 segundos [INFO] [stdout] 82 | | input_url, [INFO] [stdout] 83 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 77 ~ .args([ [INFO] [stdout] 78 + "-v", "error", [INFO] [stdout] 79 + "-show_entries", "format=duration", [INFO] [stdout] 80 + "-of", "default=noprint_wrappers=1:nokey=1", [INFO] [stdout] 81 + "-timeout", "5000000", // 5 segundos [INFO] [stdout] 82 + input_url, [INFO] [stdout] 83 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/codec/audio.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | encoder.codec = codec.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `codec::audio::AudioEncoder { codec: codec.to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/codec/audio.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let mut encoder = Self::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: float has excessive precision [INFO] [stdout] --> src/core/analyzer.rs:210:70 [INFO] [stdout] | [INFO] [stdout] 210 | assert_eq!(StreamAnalyzer::parse_fps("30000/1001").unwrap(), 29.970029970029969); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stdout] = note: `#[warn(clippy::excessive_precision)]` on by default [INFO] [stdout] help: consider changing the type or truncating it to [INFO] [stdout] | [INFO] [stdout] 210 - assert_eq!(StreamAnalyzer::parse_fps("30000/1001").unwrap(), 29.970029970029969); [INFO] [stdout] 210 + assert_eq!(StreamAnalyzer::parse_fps("30000/1001").unwrap(), 29.970_029_970_029_97); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:55:49 [INFO] [stdout] | [INFO] [stdout] 55 | if self.needs_update(local, &backend_config) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:57:57 [INFO] [stdout] | [INFO] [stdout] 57 | self.loader.save_channel_config(&backend_config)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:63:53 [INFO] [stdout] | [INFO] [stdout] 63 | self.loader.save_channel_config(&backend_config)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/monitor/health_checker.rs:261:23 [INFO] [stdout] | [INFO] [stdout] 261 | .args(&["-h", "/"]) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `["-h", "/"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: items after a test module [INFO] [stdout] --> src/monitor/stats_collector.rs:176:1 [INFO] [stdout] | [INFO] [stdout] 176 | mod tests { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | impl Default for ChannelStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_test_module [INFO] [stdout] = note: `#[warn(clippy::items_after_test_module)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/monitor/stats_collector.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | / if let Some(hist) = history.get(channel_id) { [INFO] [stdout] 88 | | Some(ChannelAverages { [INFO] [stdout] 89 | | average_fps: hist.average_fps(), [INFO] [stdout] 90 | | average_bitrate_kbps: hist.average_bitrate(), [INFO] [stdout] ... | [INFO] [stdout] 94 | | None [INFO] [stdout] 95 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 87 ~ history.get(channel_id).map(|hist| ChannelAverages { [INFO] [stdout] 88 + average_fps: hist.average_fps(), [INFO] [stdout] 89 + average_bitrate_kbps: hist.average_bitrate(), [INFO] [stdout] 90 + bitrate_variance: hist.bitrate_variance(), [INFO] [stdout] 91 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:56:83 [INFO] [stdout] | [INFO] [stdout] 56 | let stream = self.stream_buffers.entry(packet.header.pid).or_insert_with(Vec::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:95:18 [INFO] [stdout] | [INFO] [stdout] 95 | cmd.args(&["-hide_banner", "-stats", "-loglevel", "info"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-hide_banner", "-stats", "-loglevel", "info"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:122:18 [INFO] [stdout] | [INFO] [stdout] 122 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 123 | | "-fflags", "+genpts", [INFO] [stdout] 124 | | "-i", &self.config.input.url, [INFO] [stdout] 125 | | "-c", "copy", [INFO] [stdout] ... | [INFO] [stdout] 128 | | "-y", [INFO] [stdout] 129 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 122 ~ cmd.args([ [INFO] [stdout] 123 + "-fflags", "+genpts", [INFO] [stdout] 124 + "-i", &self.config.input.url, [INFO] [stdout] 125 + "-c", "copy", [INFO] [stdout] 126 + "-f", "mpegts", [INFO] [stdout] 127 + "-mpegts_copyts", "1", [INFO] [stdout] 128 + "-y", [INFO] [stdout] 129 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:138:18 [INFO] [stdout] | [INFO] [stdout] 138 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 139 | | "-fflags", "+genpts", [INFO] [stdout] 140 | | "-i", &self.config.input.url, [INFO] [stdout] 141 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 138 ~ cmd.args([ [INFO] [stdout] 139 + "-fflags", "+genpts", [INFO] [stdout] 140 + "-i", &self.config.input.url, [INFO] [stdout] 141 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:147:18 [INFO] [stdout] | [INFO] [stdout] 147 | cmd.args(&["-c:a", "copy"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `["-c:a", "copy"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:150:18 [INFO] [stdout] | [INFO] [stdout] 150 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:157:18 [INFO] [stdout] | [INFO] [stdout] 157 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 158 | | "-fflags", "+genpts", [INFO] [stdout] 159 | | "-i", &self.config.input.url, [INFO] [stdout] 160 | | "-c:v", "copy", [INFO] [stdout] 161 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 157 ~ cmd.args([ [INFO] [stdout] 158 + "-fflags", "+genpts", [INFO] [stdout] 159 + "-i", &self.config.input.url, [INFO] [stdout] 160 + "-c:v", "copy", [INFO] [stdout] 161 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:167:18 [INFO] [stdout] | [INFO] [stdout] 167 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:174:18 [INFO] [stdout] | [INFO] [stdout] 174 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 175 | | "-fflags", "+genpts", [INFO] [stdout] 176 | | "-i", &self.config.input.url, [INFO] [stdout] 177 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 174 ~ cmd.args([ [INFO] [stdout] 175 + "-fflags", "+genpts", [INFO] [stdout] 176 + "-i", &self.config.input.url, [INFO] [stdout] 177 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/mux/pes.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 62 | / let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 63 | | | ((data[1] as u64) << 22) [INFO] [stdout] 64 | | | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 | | | ((data[3] as u64) << 7) [INFO] [stdout] 66 | | | ((data[4] as u64) >> 1)) as u64; [INFO] [stdout] | |______________________________________________- unnecessary `let` binding [INFO] [stdout] 67 | [INFO] [stdout] 68 | pts [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 62 ~ [INFO] [stdout] 63 | [INFO] [stdout] 64 ~ (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 65 + | ((data[1] as u64) << 22) [INFO] [stdout] 66 + | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 67 + | ((data[3] as u64) << 7) [INFO] [stdout] 68 + | ((data[4] as u64) >> 1)) as u64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:186:18 [INFO] [stdout] | [INFO] [stdout] 186 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/mux/pes.rs:62:19 [INFO] [stdout] | [INFO] [stdout] 62 | let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] | ___________________^ [INFO] [stdout] 63 | | | ((data[1] as u64) << 22) [INFO] [stdout] 64 | | | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 | | | ((data[3] as u64) << 7) [INFO] [stdout] 66 | | | ((data[4] as u64) >> 1)) as u64; [INFO] [stdout] | |_____________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 62 ~ let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 63 + | ((data[1] as u64) << 22) [INFO] [stdout] 64 + | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 + | ((data[3] as u64) << 7) [INFO] [stdout] 66 ~ | ((data[4] as u64) >> 1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:196:37 [INFO] [stdout] | [INFO] [stdout] 196 | "nvenc" => cmd.args(&["-c:v", "h264_nvenc"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_nvenc"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:197:37 [INFO] [stdout] | [INFO] [stdout] 197 | "vaapi" => cmd.args(&["-c:v", "h264_vaapi"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_vaapi"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:198:35 [INFO] [stdout] | [INFO] [stdout] 198 | "qsv" => cmd.args(&["-c:v", "h264_qsv"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_qsv"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:199:31 [INFO] [stdout] | [INFO] [stdout] 199 | _ => cmd.args(&["-c:v", &video.codec]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", &video.codec]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:202:22 [INFO] [stdout] | [INFO] [stdout] 202 | cmd.args(&["-c:v", &format!("lib{}", video.codec)]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", &format!("lib{}", video.codec)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:206:18 [INFO] [stdout] | [INFO] [stdout] 206 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 207 | | "-profile:v", &video.profile, [INFO] [stdout] 208 | | "-level", &video.level, [INFO] [stdout] 209 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 206 ~ cmd.args([ [INFO] [stdout] 207 + "-profile:v", &video.profile, [INFO] [stdout] 208 + "-level", &video.level, [INFO] [stdout] 209 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:214:26 [INFO] [stdout] | [INFO] [stdout] 214 | cmd.args(&[ [INFO] [stdout] | __________________________^ [INFO] [stdout] 215 | | "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 216 | | "-minrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 217 | | "-maxrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 218 | | "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 219 | | ]); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 214 ~ cmd.args([ [INFO] [stdout] 215 + "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 216 + "-minrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 217 + "-maxrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 218 + "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 219 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:222:26 [INFO] [stdout] | [INFO] [stdout] 222 | cmd.args(&[ [INFO] [stdout] | __________________________^ [INFO] [stdout] 223 | | "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 224 | | "-maxrate", &format!("{}k", video.max_bitrate_kbps), [INFO] [stdout] 225 | | "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 226 | | ]); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 222 ~ cmd.args([ [INFO] [stdout] 223 + "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 224 + "-maxrate", &format!("{}k", video.max_bitrate_kbps), [INFO] [stdout] 225 + "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 226 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:229:26 [INFO] [stdout] | [INFO] [stdout] 229 | cmd.args(&["-b:v", &format!("{}k", video.bitrate_kbps)]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-b:v", &format!("{}k", video.bitrate_kbps)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:234:18 [INFO] [stdout] | [INFO] [stdout] 234 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 235 | | "-g", &video.gop_size.to_string(), [INFO] [stdout] 236 | | "-keyint_min", &(video.gop_size / 2).to_string(), [INFO] [stdout] 237 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 234 ~ cmd.args([ [INFO] [stdout] 235 + "-g", &video.gop_size.to_string(), [INFO] [stdout] 236 + "-keyint_min", &(video.gop_size / 2).to_string(), [INFO] [stdout] 237 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:241:22 [INFO] [stdout] | [INFO] [stdout] 241 | cmd.args(&[ [INFO] [stdout] | ______________________^ [INFO] [stdout] 242 | | "-preset", &video.preset, [INFO] [stdout] 243 | | "-tune", &video.tune, [INFO] [stdout] 244 | | ]); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 241 ~ cmd.args([ [INFO] [stdout] 242 + "-preset", &video.preset, [INFO] [stdout] 243 + "-tune", &video.tune, [INFO] [stdout] 244 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:248:18 [INFO] [stdout] | [INFO] [stdout] 248 | cmd.args(&["-r", &video.framerate.to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-r", &video.framerate.to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:254:18 [INFO] [stdout] | [INFO] [stdout] 254 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 255 | | "-c:a", &audio.codec, [INFO] [stdout] 256 | | "-b:a", &format!("{}k", audio.bitrate_kbps), [INFO] [stdout] 257 | | "-ar", &audio.sample_rate.to_string(), [INFO] [stdout] 258 | | "-ac", &audio.channels.to_string(), [INFO] [stdout] 259 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 254 ~ cmd.args([ [INFO] [stdout] 255 + "-c:a", &audio.codec, [INFO] [stdout] 256 + "-b:a", &format!("{}k", audio.bitrate_kbps), [INFO] [stdout] 257 + "-ar", &audio.sample_rate.to_string(), [INFO] [stdout] 258 + "-ac", &audio.channels.to_string(), [INFO] [stdout] 259 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/analyzer.rs:44:19 [INFO] [stdout] | [INFO] [stdout] 44 | .args(&[ [INFO] [stdout] | ___________________^ [INFO] [stdout] 45 | | "-v", "quiet", [INFO] [stdout] 46 | | "-print_format", "json", [INFO] [stdout] 47 | | "-show_format", [INFO] [stdout] 48 | | "-show_streams", [INFO] [stdout] 49 | | input_url, [INFO] [stdout] 50 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 44 ~ .args([ [INFO] [stdout] 45 + "-v", "quiet", [INFO] [stdout] 46 + "-print_format", "json", [INFO] [stdout] 47 + "-show_format", [INFO] [stdout] 48 + "-show_streams", [INFO] [stdout] 49 + input_url, [INFO] [stdout] 50 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/analyzer.rs:77:19 [INFO] [stdout] | [INFO] [stdout] 77 | .args(&[ [INFO] [stdout] | ___________________^ [INFO] [stdout] 78 | | "-v", "error", [INFO] [stdout] 79 | | "-show_entries", "format=duration", [INFO] [stdout] 80 | | "-of", "default=noprint_wrappers=1:nokey=1", [INFO] [stdout] 81 | | "-timeout", "5000000", // 5 segundos [INFO] [stdout] 82 | | input_url, [INFO] [stdout] 83 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 77 ~ .args([ [INFO] [stdout] 78 + "-v", "error", [INFO] [stdout] 79 + "-show_entries", "format=duration", [INFO] [stdout] 80 + "-of", "default=noprint_wrappers=1:nokey=1", [INFO] [stdout] 81 + "-timeout", "5000000", // 5 segundos [INFO] [stdout] 82 + input_url, [INFO] [stdout] 83 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/network/multicast.rs:168:15 [INFO] [stdout] | [INFO] [stdout] 168 | .args(&["addr", "show", interface_name]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["addr", "show", interface_name]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> src/network/multicast.rs:177:41 [INFO] [stdout] | [INFO] [stdout] 177 | let parts: Vec<&str> = line.trim().split_whitespace().collect(); [INFO] [stdout] | ^^^^^^^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] = note: `#[warn(clippy::trim_split_whitespace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:39:19 [INFO] [stdout] | [INFO] [stdout] 39 | .args(&["-codecs"]) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `["-codecs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | .args(&["-encoders"]) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `["-encoders"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:133:19 [INFO] [stdout] | [INFO] [stdout] 133 | .args(&["-protocols"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["-protocols"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `version_parts.get(0)` [INFO] [stdout] --> src/utils/ffmpeg.rs:163:21 [INFO] [stdout] | [INFO] [stdout] 163 | let major = version_parts.get(0).and_then(|s| s.parse().ok()).unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `version_parts.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/utils/bitrate_calc.rs:229:17 [INFO] [stdout] | [INFO] [stdout] 229 | (pixels / 50_000) as u32 // ~0.02 bits por pixel [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(pixels / 50_000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/utils/bitrate_calc.rs:282:17 [INFO] [stdout] | [INFO] [stdout] 282 | assert!(total >= 4_300 && total <= 4_400); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(4_300..=4_400).contains(&total)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/utils/pid_manager.rs:210:24 [INFO] [stdout] | [INFO] [stdout] 210 | if !(pids[i] == self.pcr_pid && pids[j] == self.video_pid) && [INFO] [stdout] | ________________________^ [INFO] [stdout] 211 | | !(pids[j] == self.pcr_pid && pids[i] == self.video_pid) { [INFO] [stdout] | |______________________________________________________________________________^ help: try: `!(pids[i] == self.pcr_pid && pids[j] == self.video_pid || pids[j] == self.pcr_pid && pids[i] == self.video_pid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/monitor/health_checker.rs:261:23 [INFO] [stdout] | [INFO] [stdout] 261 | .args(&["-h", "/"]) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `["-h", "/"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/monitor/stats_collector.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | / if let Some(hist) = history.get(channel_id) { [INFO] [stdout] 88 | | Some(ChannelAverages { [INFO] [stdout] 89 | | average_fps: hist.average_fps(), [INFO] [stdout] 90 | | average_bitrate_kbps: hist.average_bitrate(), [INFO] [stdout] ... | [INFO] [stdout] 94 | | None [INFO] [stdout] 95 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 87 ~ history.get(channel_id).map(|hist| ChannelAverages { [INFO] [stdout] 88 + average_fps: hist.average_fps(), [INFO] [stdout] 89 + average_bitrate_kbps: hist.average_bitrate(), [INFO] [stdout] 90 + bitrate_variance: hist.bitrate_variance(), [INFO] [stdout] 91 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:56:83 [INFO] [stdout] | [INFO] [stdout] 56 | let stream = self.stream_buffers.entry(packet.header.pid).or_insert_with(Vec::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/mux/pes.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 62 | / let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 63 | | | ((data[1] as u64) << 22) [INFO] [stdout] 64 | | | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 | | | ((data[3] as u64) << 7) [INFO] [stdout] 66 | | | ((data[4] as u64) >> 1)) as u64; [INFO] [stdout] | |______________________________________________- unnecessary `let` binding [INFO] [stdout] 67 | [INFO] [stdout] 68 | pts [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 62 ~ [INFO] [stdout] 63 | [INFO] [stdout] 64 ~ (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 65 + | ((data[1] as u64) << 22) [INFO] [stdout] 66 + | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 67 + | ((data[3] as u64) << 7) [INFO] [stdout] 68 + | ((data[4] as u64) >> 1)) as u64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/mux/pes.rs:62:19 [INFO] [stdout] | [INFO] [stdout] 62 | let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] | ___________________^ [INFO] [stdout] 63 | | | ((data[1] as u64) << 22) [INFO] [stdout] 64 | | | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 | | | ((data[3] as u64) << 7) [INFO] [stdout] 66 | | | ((data[4] as u64) >> 1)) as u64; [INFO] [stdout] | |_____________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 62 ~ let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 63 + | ((data[1] as u64) << 22) [INFO] [stdout] 64 + | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 + | ((data[3] as u64) << 7) [INFO] [stdout] 66 ~ | ((data[4] as u64) >> 1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/network/multicast.rs:168:15 [INFO] [stdout] | [INFO] [stdout] 168 | .args(&["addr", "show", interface_name]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["addr", "show", interface_name]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> src/network/multicast.rs:177:41 [INFO] [stdout] | [INFO] [stdout] 177 | let parts: Vec<&str> = line.trim().split_whitespace().collect(); [INFO] [stdout] | ^^^^^^^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] = note: `#[warn(clippy::trim_split_whitespace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:39:19 [INFO] [stdout] | [INFO] [stdout] 39 | .args(&["-codecs"]) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `["-codecs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | .args(&["-encoders"]) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `["-encoders"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:133:19 [INFO] [stdout] | [INFO] [stdout] 133 | .args(&["-protocols"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["-protocols"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `version_parts.get(0)` [INFO] [stdout] --> src/utils/ffmpeg.rs:163:21 [INFO] [stdout] | [INFO] [stdout] 163 | let major = version_parts.get(0).and_then(|s| s.parse().ok()).unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `version_parts.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/utils/bitrate_calc.rs:229:17 [INFO] [stdout] | [INFO] [stdout] 229 | (pixels / 50_000) as u32 // ~0.02 bits por pixel [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(pixels / 50_000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/utils/pid_manager.rs:210:24 [INFO] [stdout] | [INFO] [stdout] 210 | if !(pids[i] == self.pcr_pid && pids[j] == self.video_pid) && [INFO] [stdout] | ________________________^ [INFO] [stdout] 211 | | !(pids[j] == self.pcr_pid && pids[i] == self.video_pid) { [INFO] [stdout] | |______________________________________________________________________________^ help: try: `!(pids[i] == self.pcr_pid && pids[j] == self.video_pid || pids[j] == self.pcr_pid && pids[i] == self.video_pid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `client::ApiClient` [INFO] [stdout] --> src/api/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use client::ApiClient; [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 import: `handlers::*` [INFO] [stdout] --> src/api/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use handlers::*; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `websocket::WebSocketManager` [INFO] [stdout] --> src/api/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use websocket::WebSocketManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `client::ApiClient` [INFO] [stdout] --> src/api/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use client::ApiClient; [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 import: `handlers::*` [INFO] [stdout] --> src/api/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use handlers::*; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `websocket::WebSocketManager` [INFO] [stdout] --> src/api/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use websocket::WebSocketManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `video::VideoEncoder` [INFO] [stdout] --> src/codec/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use video::VideoEncoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `audio::AudioEncoder` [INFO] [stdout] --> src/codec/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use audio::AudioEncoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `encoder::Encoder` [INFO] [stdout] --> src/codec/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use encoder::Encoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `decoder::Decoder` [INFO] [stdout] --> src/codec/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use decoder::Decoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/config/loader.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `video::VideoEncoder` [INFO] [stdout] --> src/codec/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use video::VideoEncoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `audio::AudioEncoder` [INFO] [stdout] --> src/codec/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use audio::AudioEncoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `encoder::Encoder` [INFO] [stdout] --> src/codec/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use encoder::Encoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `decoder::Decoder` [INFO] [stdout] --> src/codec/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use decoder::Decoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/config/loader.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::config::loader::VideoConfig` [INFO] [stdout] --> src/core/strategy.rs:283:9 [INFO] [stdout] | [INFO] [stdout] 283 | use crate::config::loader::VideoConfig; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `manager::TranscoderManager` [INFO] [stdout] --> src/core/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use manager::TranscoderManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel::Channel` [INFO] [stdout] --> src/core/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use channel::Channel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `transcoder::Transcoder` [INFO] [stdout] --> src/core/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use transcoder::Transcoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `analyzer::StreamAnalyzer` [INFO] [stdout] --> src/core/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use analyzer::StreamAnalyzer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `TranscodeStrategy` and `decide_strategy` [INFO] [stdout] --> src/core/mod.rs:14:20 [INFO] [stdout] | [INFO] [stdout] 14 | pub use strategy::{TranscodeStrategy, decide_strategy}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `manager::TranscoderManager` [INFO] [stdout] --> src/core/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use manager::TranscoderManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel::Channel` [INFO] [stdout] --> src/core/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use channel::Channel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `transcoder::Transcoder` [INFO] [stdout] --> src/core/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use transcoder::Transcoder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `analyzer::StreamAnalyzer` [INFO] [stdout] --> src/core/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use analyzer::StreamAnalyzer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `TranscodeStrategy` and `decide_strategy` [INFO] [stdout] --> src/core/mod.rs:14:20 [INFO] [stdout] | [INFO] [stdout] 14 | pub use strategy::{TranscodeStrategy, decide_strategy}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel::Channel` [INFO] [stdout] --> src/models/mod.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use channel::Channel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error::TranscoderError` [INFO] [stdout] --> src/models/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use error::TranscoderError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ChannelStats` and `ChannelStatus` [INFO] [stdout] --> src/models/mod.rs:10:17 [INFO] [stdout] | [INFO] [stdout] 10 | pub use stats::{ChannelStats, ChannelStatus}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `health_checker::HealthChecker` [INFO] [stdout] --> src/monitor/mod.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use health_checker::HealthChecker; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `metrics::MetricsCollector` [INFO] [stdout] --> src/monitor/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use metrics::MetricsCollector; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stats_collector::StatsCollector` [INFO] [stdout] --> src/monitor/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use stats_collector::StatsCollector; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `alerting::AlertManager` [INFO] [stdout] --> src/monitor/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use alerting::AlertManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `debug` [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{debug, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel::Channel` [INFO] [stdout] --> src/models/mod.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use channel::Channel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error::TranscoderError` [INFO] [stdout] --> src/models/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use error::TranscoderError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ChannelStats` and `ChannelStatus` [INFO] [stdout] --> src/models/mod.rs:10:17 [INFO] [stdout] | [INFO] [stdout] 10 | pub use stats::{ChannelStats, ChannelStatus}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut` [INFO] [stdout] --> src/mux/packet.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut}; [INFO] [stdout] | ^^^ ^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `mpegts_demuxer::MpegTsDemuxer` [INFO] [stdout] --> src/mux/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use mpegts_demuxer::MpegTsDemuxer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `mpegts_muxer::MpegTsMuxer` [INFO] [stdout] --> src/mux/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use mpegts_muxer::MpegTsMuxer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AdaptationField`, `TsHeader`, and `TsPacket` [INFO] [stdout] --> src/mux/mod.rs:11:18 [INFO] [stdout] | [INFO] [stdout] 11 | pub use packet::{TsPacket, TsHeader, AdaptationField}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pes::PesPacket` [INFO] [stdout] --> src/mux/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use pes::PesPacket; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Pat`, `Pmt`, and `ProgramInfo` [INFO] [stdout] --> src/mux/mod.rs:13:15 [INFO] [stdout] | [INFO] [stdout] 13 | pub use psi::{Pat, Pmt, ProgramInfo}; [INFO] [stdout] | ^^^ ^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native` [INFO] [stdout] --> src/network/srt_receiver.rs:193:7 [INFO] [stdout] | [INFO] [stdout] 193 | #[cfg(feature = "srt-native")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `metrics`, and `prometheus` [INFO] [stdout] = help: consider adding `srt-native` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/network/srt_receiver.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> src/network/srt_receiver.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{info, warn, error, debug}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `health_checker::HealthChecker` [INFO] [stdout] --> src/monitor/mod.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use health_checker::HealthChecker; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/network/udp_sender.rs:4:28 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{info, debug, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `metrics::MetricsCollector` [INFO] [stdout] --> src/monitor/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use metrics::MetricsCollector; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stats_collector::StatsCollector` [INFO] [stdout] --> src/monitor/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use stats_collector::StatsCollector; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `alerting::AlertManager` [INFO] [stdout] --> src/monitor/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use alerting::AlertManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `debug` [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{debug, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut` [INFO] [stdout] --> src/mux/packet.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut}; [INFO] [stdout] | ^^^ ^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/network/multicast.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{info, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `mpegts_demuxer::MpegTsDemuxer` [INFO] [stdout] --> src/mux/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use mpegts_demuxer::MpegTsDemuxer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `mpegts_muxer::MpegTsMuxer` [INFO] [stdout] --> src/mux/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use mpegts_muxer::MpegTsMuxer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AdaptationField`, `TsHeader`, and `TsPacket` [INFO] [stdout] --> src/mux/mod.rs:11:18 [INFO] [stdout] | [INFO] [stdout] 11 | pub use packet::{TsPacket, TsHeader, AdaptationField}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pes::PesPacket` [INFO] [stdout] --> src/mux/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use pes::PesPacket; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Pat`, `Pmt`, and `ProgramInfo` [INFO] [stdout] --> src/mux/mod.rs:13:15 [INFO] [stdout] | [INFO] [stdout] 13 | pub use psi::{Pat, Pmt, ProgramInfo}; [INFO] [stdout] | ^^^ ^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native` [INFO] [stdout] --> src/network/srt_receiver.rs:193:7 [INFO] [stdout] | [INFO] [stdout] 193 | #[cfg(feature = "srt-native")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `metrics`, and `prometheus` [INFO] [stdout] = help: consider adding `srt-native` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/network/srt_receiver.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> src/network/srt_receiver.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{info, warn, error, debug}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `srt_receiver::SrtReceiver` [INFO] [stdout] --> src/network/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use srt_receiver::SrtReceiver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `udp_sender::UdpSender` [INFO] [stdout] --> src/network/mod.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use udp_sender::UdpSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `multicast::MulticastSender` [INFO] [stdout] --> src/network/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use multicast::MulticastSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> src/utils/ffmpeg.rs:3:21 [INFO] [stdout] | [INFO] [stdout] 3 | use tracing::{info, warn, error}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/network/udp_sender.rs:4:28 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{info, debug, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `error` [INFO] [stdout] --> src/network/multicast.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use tracing::{info, error}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `srt_receiver::SrtReceiver` [INFO] [stdout] --> src/network/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use srt_receiver::SrtReceiver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `udp_sender::UdpSender` [INFO] [stdout] --> src/network/mod.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use udp_sender::UdpSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `multicast::MulticastSender` [INFO] [stdout] --> src/network/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use multicast::MulticastSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> src/utils/ffmpeg.rs:3:21 [INFO] [stdout] | [INFO] [stdout] 3 | use tracing::{info, warn, error}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/utils/pid_manager.rs:2:21 [INFO] [stdout] | [INFO] [stdout] 2 | use tracing::{info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/utils/pid_manager.rs:2:21 [INFO] [stdout] | [INFO] [stdout] 2 | use tracing::{info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `delete` and `extract::State` [INFO] [stdout] --> src/main.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 179 | extract::State, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 180 | routing::{get, post, delete}, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `delete` and `extract::State` [INFO] [stdout] --> src/main.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 179 | extract::State, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 180 | routing::{get, post, delete}, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/api/websocket.rs:72:38 [INFO] [stdout] | [INFO] [stdout] 72 | Ok(Message::Ping(data)) => { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/mux/packet.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | offset += 6; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_channel_config`, `send_channel_stats`, `send_bulk_stats`, `check_pending_commands`, and `acknowledge_command` are never used [INFO] [stdout] --> src/api/client.rs:119:18 [INFO] [stdout] | [INFO] [stdout] 17 | impl ApiClient { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 119 | pub async fn get_channel_config(&self, channel_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub async fn send_channel_stats(&self, stats: &ChannelStats) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub async fn send_bulk_stats(&self, stats: Vec) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 211 | pub async fn check_pending_commands(&self, client_id: &str) -> Result, TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub async fn acknowledge_command(&self, command_id: &str, success: bool, message: Option) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BulkStatsRequest` is never constructed [INFO] [stdout] --> src/api/client.rs:296:8 [INFO] [stdout] | [INFO] [stdout] 296 | struct BulkStatsRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RemoteCommand` is never constructed [INFO] [stdout] --> src/api/client.rs:301:12 [INFO] [stdout] | [INFO] [stdout] 301 | pub struct RemoteCommand { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RemoteCommandType` is never used [INFO] [stdout] --> src/api/client.rs:311:10 [INFO] [stdout] | [INFO] [stdout] 311 | pub enum RemoteCommandType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandAcknowledgment` is never constructed [INFO] [stdout] --> src/api/client.rs:322:8 [INFO] [stdout] | [INFO] [stdout] 322 | struct CommandAcknowledgment { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_channel_stats` is never used [INFO] [stdout] --> src/api/handlers.rs:104:14 [INFO] [stdout] | [INFO] [stdout] 104 | pub async fn get_channel_stats( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateChannelRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | pub struct CreateChannelRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_channel` is never used [INFO] [stdout] --> src/api/handlers.rs:128:14 [INFO] [stdout] | [INFO] [stdout] 128 | pub async fn create_channel( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_channel` is never used [INFO] [stdout] --> src/api/handlers.rs:151:14 [INFO] [stdout] | [INFO] [stdout] 151 | pub async fn delete_channel( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_summary` is never used [INFO] [stdout] --> src/api/handlers.rs:185:14 [INFO] [stdout] | [INFO] [stdout] 185 | pub async fn get_summary( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UpdateConfigRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:263:12 [INFO] [stdout] | [INFO] [stdout] 263 | pub struct UpdateConfigRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `update_channel_config` is never used [INFO] [stdout] --> src/api/handlers.rs:267:14 [INFO] [stdout] | [INFO] [stdout] 267 | pub async fn update_channel_config( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_channels_health` is never used [INFO] [stdout] --> src/api/handlers.rs:287:14 [INFO] [stdout] | [INFO] [stdout] 287 | pub async fn check_channels_health( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `parameters` is never read [INFO] [stdout] --> src/api/websocket.rs:130:5 [INFO] [stdout] | [INFO] [stdout] 127 | struct ClientCommand { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 130 | parameters: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClientCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RegistrationService` is never constructed [INFO] [stdout] --> src/api/registration.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct RegistrationService { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `register_with_retry` are never used [INFO] [stdout] --> src/api/registration.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl RegistrationService { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 14 | pub fn new(api_client: ApiClient, client_config: ClientConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub async fn register_with_retry(&self) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HeartbeatService` is never constructed [INFO] [stdout] --> src/api/heartbeat.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct HeartbeatService { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `start` are never used [INFO] [stdout] --> src/api/heartbeat.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl HeartbeatService { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 14 | pub fn new(api_client: Arc, client_id: String, interval_seconds: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub async fn start(self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VideoEncoder` is never constructed [INFO] [stdout] --> src/codec/video.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct VideoEncoder { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `build_ffmpeg_args`, and `validate` are never used [INFO] [stdout] --> src/codec/video.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 45 | impl VideoEncoder { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 46 | /// Crear un encoder de video personalizado [INFO] [stdout] 47 | pub fn new(codec: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn build_ffmpeg_args(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn validate(&self) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AudioEncoder` is never constructed [INFO] [stdout] --> src/codec/audio.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct AudioEncoder { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `ac3_surround`, `eac3_surround`, `aac_stereo`, `build_ffmpeg_args`, and `validate` are never used [INFO] [stdout] --> src/codec/audio.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl AudioEncoder { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 30 | /// Crear un encoder de audio personalizado [INFO] [stdout] 31 | pub fn new(codec: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn ac3_surround() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn eac3_surround() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn aac_stereo() -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn build_ffmpeg_args(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn validate(&self) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Encoder` is never constructed [INFO] [stdout] --> src/codec/encoder.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Encoder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EncoderMetadata` is never constructed [INFO] [stdout] --> src/codec/encoder.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct EncoderMetadata { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/codec/encoder.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl Encoder { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 39 | /// Crear un encoder para CATV estándar [INFO] [stdout] 40 | pub fn catv_standard() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn catv_surround() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn stream_optimized() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn high_quality() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn build_ffmpeg_command(&self) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn validate(&self) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn describe(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamInfo` is never constructed [INFO] [stdout] --> src/codec/decoder.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct StreamInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ContainerInfo` is never constructed [INFO] [stdout] --> src/codec/decoder.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct ContainerInfo { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Decoder` is never constructed [INFO] [stdout] --> src/codec/decoder.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct Decoder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `build_ffprobe_command`, `extract_video_info`, `extract_audio_info`, `extract_all_audio_streams`, and `extract_subtitle_info` are never used [INFO] [stdout] --> src/codec/decoder.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl Decoder { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 37 | /// Crear un decoder para una URL de entrada [INFO] [stdout] 38 | pub fn new(input_url: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn build_ffprobe_command(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn extract_video_info(container: &ContainerInfo) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn extract_audio_info(container: &ContainerInfo) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn extract_all_audio_streams(container: &ContainerInfo) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn extract_subtitle_info(container: &ContainerInfo) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `load_channel_config` and `delete_channel_config` are never used [INFO] [stdout] --> src/config/loader.rs:253:12 [INFO] [stdout] | [INFO] [stdout] 228 | impl ConfigLoader { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn load_channel_config(&self, channel_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn delete_channel_config(&self, channel_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `remove_channel`, `reload_channel_config`, `channel_count`, and `has_channel` are never used [INFO] [stdout] --> src/core/manager.rs:56:18 [INFO] [stdout] | [INFO] [stdout] 16 | impl TranscoderManager { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 56 | pub async fn remove_channel(&self, channel_id: &str) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub async fn reload_channel_config( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub async fn channel_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub async fn has_channel(&self, channel_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_config` and `get_config` are never used [INFO] [stdout] --> src/core/channel.rs:165:18 [INFO] [stdout] | [INFO] [stdout] 20 | impl Channel { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 165 | pub async fn update_config(&mut self, new_config: ChannelConfig) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn get_config(&self) -> &ChannelConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `quick_check` is never used [INFO] [stdout] --> src/core/analyzer.rs:73:18 [INFO] [stdout] | [INFO] [stdout] 37 | impl StreamAnalyzer { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 73 | pub async fn quick_check(input_url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategyReason` is never constructed [INFO] [stdout] --> src/core/strategy.rs:199:12 [INFO] [stdout] | [INFO] [stdout] 199 | pub struct StrategyReason { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decide_strategy_with_reasons` is never used [INFO] [stdout] --> src/core/strategy.rs:207:8 [INFO] [stdout] | [INFO] [stdout] 207 | pub fn decide_strategy_with_reasons( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VideoFrame` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct VideoFrame { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AudioFrame` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct AudioFrame { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PixelFormat` is never used [INFO] [stdout] --> src/core/pipeline.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum PixelFormat { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProcessingPipeline` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct ProcessingPipeline { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process_video_frame`, and `process_audio_frame` are never used [INFO] [stdout] --> src/core/pipeline.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl ProcessingPipeline { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 40 | pub fn new(buffer_size: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub async fn process_video_frame(&self, frame: VideoFrame) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub async fn process_audio_frame(&self, frame: AudioFrame) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VideoFilter` is never used [INFO] [stdout] --> src/core/pipeline.rs:62:11 [INFO] [stdout] | [INFO] [stdout] 62 | pub trait VideoFilter: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DeinterlaceFilter` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct DeinterlaceFilter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScaleFilter` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | pub struct ScaleFilter { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/core/pipeline.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 83 | impl ScaleFilter { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 84 | pub fn new(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Channel` is never constructed [INFO] [stdout] --> src/models/channel.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Channel { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChannelConfigModel` is never constructed [INFO] [stdout] --> src/models/channel.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct ChannelConfigModel { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/models/channel.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 28 | impl Channel { [INFO] [stdout] | ------------ associated function in this implementation [INFO] [stdout] 29 | pub fn new(id: String, name: String, client_id: String, config: ChannelConfigModel) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateChannelRequest` is never constructed [INFO] [stdout] --> src/models/channel.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct CreateChannelRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UpdateChannelRequest` is never constructed [INFO] [stdout] --> src/models/channel.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct UpdateChannelRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChannelResponse` is never constructed [INFO] [stdout] --> src/models/channel.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct ChannelResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConfigSnapshot` is never constructed [INFO] [stdout] --> src/models/config.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct ConfigSnapshot { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChannelConfigSnapshot` is never constructed [INFO] [stdout] --> src/models/config.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct ChannelConfigSnapshot { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add_channel`, and `calculate_hash` are never used [INFO] [stdout] --> src/models/config.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl ConfigSnapshot { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 22 | pub fn new(client_id: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn add_channel(&mut self, snapshot: ChannelConfigSnapshot) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn calculate_hash(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConfigValidator` is never constructed [INFO] [stdout] --> src/models/config.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct ConfigValidator; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `validate_channel_config` is never used [INFO] [stdout] --> src/models/config.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl ConfigValidator { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 54 | /// Valida una configuración de canal [INFO] [stdout] 55 | pub fn validate_channel_config(config: &crate::config::loader::ChannelConfig) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/models/error.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum TranscoderError { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 19 | ConfigError(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | ConfigLoadError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | ConfigSaveError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | InvalidConfig(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | ProcessDied(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | NetworkError(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | SrtError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | UdpError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | CodecError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | MuxError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | DemuxError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | PipelineError(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | ApiError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | AuthError(String), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | Timeout(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | ResourceUnavailable(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | HardwareError(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | HardwareAccelNotAvailable(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | Unknown(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TranscoderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_recoverable` and `severity` are never used [INFO] [stdout] --> src/models/error.rs:96:12 [INFO] [stdout] | [INFO] [stdout] 94 | impl TranscoderError { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] 95 | /// Verifica si el error es recuperable [INFO] [stdout] 96 | pub fn is_recoverable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn severity(&self) -> ErrorSeverity { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ErrorSeverity` is never used [INFO] [stdout] --> src/models/error.rs:141:10 [INFO] [stdout] | [INFO] [stdout] 141 | pub enum ErrorSeverity { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_str` is never used [INFO] [stdout] --> src/models/error.rs:149:12 [INFO] [stdout] | [INFO] [stdout] 148 | impl ErrorSeverity { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] 149 | pub fn as_str(&self) -> &str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> src/models/error.rs:160:10 [INFO] [stdout] | [INFO] [stdout] 160 | pub type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_active`, `is_error`, and `as_str` are never used [INFO] [stdout] --> src/models/stats.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl ChannelStatus { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] 31 | pub fn is_active(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn is_error(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn as_str(&self) -> &str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `is_healthy`, and `summary` are never used [INFO] [stdout] --> src/models/stats.rs:96:12 [INFO] [stdout] | [INFO] [stdout] 95 | impl ChannelStats { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 96 | pub fn new(channel_id: String, mode: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn is_healthy(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn summary(&self) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AggregatedStats` is never constructed [INFO] [stdout] --> src/models/stats.rs:163:12 [INFO] [stdout] | [INFO] [stdout] 163 | pub struct AggregatedStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_channels` is never used [INFO] [stdout] --> src/models/stats.rs:177:12 [INFO] [stdout] | [INFO] [stdout] 176 | impl AggregatedStats { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 177 | pub fn from_channels(stats: &[ChannelStats]) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StatsHistory` is never constructed [INFO] [stdout] --> src/models/stats.rs:214:12 [INFO] [stdout] | [INFO] [stdout] 214 | pub struct StatsHistory { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StatsEntry` is never constructed [INFO] [stdout] --> src/models/stats.rs:221:12 [INFO] [stdout] | [INFO] [stdout] 221 | pub struct StatsEntry { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add_entry`, `average_fps`, `average_bitrate`, and `bitrate_variance` are never used [INFO] [stdout] --> src/models/stats.rs:230:12 [INFO] [stdout] | [INFO] [stdout] 229 | impl StatsHistory { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 230 | pub fn new(channel_id: String, max_entries: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn add_entry(&mut self, stats: &ChannelStats) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | pub fn average_fps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn average_bitrate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn bitrate_variance(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_interval` and `with_auto_restart` are never used [INFO] [stdout] --> src/monitor/health_checker.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl HealthChecker { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn with_interval(mut self, interval: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn with_auto_restart(mut self, enabled: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SimpleHealthCheck` is never constructed [INFO] [stdout] --> src/monitor/health_checker.rs:176:12 [INFO] [stdout] | [INFO] [stdout] 176 | pub struct SimpleHealthCheck; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `check`, `check_memory`, and `check_disk_space` are never used [INFO] [stdout] --> src/monitor/health_checker.rs:180:18 [INFO] [stdout] | [INFO] [stdout] 178 | impl SimpleHealthCheck { [INFO] [stdout] | ---------------------- associated functions in this implementation [INFO] [stdout] 179 | /// Verificar salud básica del sistema [INFO] [stdout] 180 | pub async fn check() -> HealthCheckResult { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | fn check_memory() -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | fn check_disk_space() -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HealthCheckResult` is never constructed [INFO] [stdout] --> src/monitor/health_checker.rs:293:12 [INFO] [stdout] | [INFO] [stdout] 293 | pub struct HealthCheckResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ComponentHealth` is never constructed [INFO] [stdout] --> src/monitor/health_checker.rs:299:12 [INFO] [stdout] | [INFO] [stdout] 299 | pub struct ComponentHealth { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/monitor/metrics.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct MetricsCollector { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 19 | frames_processed: IntCounter, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | frames_dropped: IntCounter, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 21 | restarts_total: IntCounter, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 22 | errors_total: IntCounter, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | active_channels: IntGauge, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | current_fps: Gauge, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 27 | current_bitrate: Gauge, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | processing_duration: Histogram, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/monitor/metrics.rs:98:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl MetricsCollector { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn inc_frames_processed(&self, count: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn inc_frames_dropped(&self, count: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn inc_restarts(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn inc_errors(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn set_active_channels(&self, count: i64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | pub fn set_fps(&self, fps: f64) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn set_bitrate(&self, bitrate_kbps: f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn observe_processing_duration(&self, duration_seconds: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MetricsManager` is never constructed [INFO] [stdout] --> src/monitor/metrics.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 197 | pub struct MetricsManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `update_from_stats`, and `gather` are never used [INFO] [stdout] --> src/monitor/metrics.rs:202:12 [INFO] [stdout] | [INFO] [stdout] 201 | impl MetricsManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 202 | pub fn new() -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 215 | pub async fn update_from_stats(&self, stats: &crate::models::stats::ChannelStats) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 224 | pub async fn gather(&self) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StatsCollector` is never constructed [INFO] [stdout] --> src/monitor/stats_collector.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct StatsCollector { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start`, `update_history`, `get_history`, `get_averages`, and `cleanup_old_history` are never used [INFO] [stdout] --> src/monitor/stats_collector.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl StatsCollector { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 20 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub async fn start(self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | async fn update_history(&self, stats: &HashMap) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub async fn get_history(&self, channel_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub async fn get_averages(&self, channel_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub async fn cleanup_old_history(&self, older_than_hours: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChannelAverages` is never constructed [INFO] [stdout] --> src/monitor/stats_collector.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | pub struct ChannelAverages { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StatsAggregator` is never constructed [INFO] [stdout] --> src/monitor/stats_collector.rs:120:12 [INFO] [stdout] | [INFO] [stdout] 120 | pub struct StatsAggregator; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `aggregate` is never used [INFO] [stdout] --> src/monitor/stats_collector.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 122 | impl StatsAggregator { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 123 | /// Agregar estadísticas de múltiples canales [INFO] [stdout] 124 | pub fn aggregate(stats: &[ChannelStats]) -> AggregatedChannelStats { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AggregatedChannelStats` is never constructed [INFO] [stdout] --> src/monitor/stats_collector.rs:163:12 [INFO] [stdout] | [INFO] [stdout] 163 | pub struct AggregatedChannelStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AlertManager` is never constructed [INFO] [stdout] --> src/monitor/alerting.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct AlertManager { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/monitor/alerting.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl AlertManager { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 16 | pub fn new(api_client: ApiClient) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn with_min_interval(mut self, seconds: i64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub async fn send_alert(&self, alert: MonitoringAlert) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub async fn cleanup_old_alerts(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn alert_low_fps(channel_id: String, fps: f64) -> MonitoringAlert { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn alert_dropped_frames(channel_id: String, percentage: f64) -> MonitoringAlert { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn alert_bitrate_deviation( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MpegTsDemuxer` is never constructed [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct MpegTsDemuxer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl MpegTsDemuxer { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 14 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn process(&mut self, data: &[u8]) -> Result, String> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | pub fn extract_stream(&mut self, pid: u16) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn get_stream(&self, pid: u16) -> Option<&Vec> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn clear_stream(&mut self, pid: u16) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn packet_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn active_pids(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MpegTsMuxer` is never constructed [INFO] [stdout] --> src/mux/mpegts_muxer.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct MpegTsMuxer { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/mux/mpegts_muxer.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl MpegTsMuxer { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 17 | pub fn new(pmt_pid: u16, video_pid: u16, audio_pid: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn generate_pat(&mut self) -> TsPacket { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn generate_pmt(&mut self) -> TsPacket { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn create_video_packet(&mut self, data: &[u8], pts: Option) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn create_audio_packet(&mut self, data: &[u8], pts: Option) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | fn create_pes_packets(&mut self, pid: u16, data: &[u8], stream_id: u8, pts: Option) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn create_pes_header(&self, stream_id: u8, data_len: usize, pts: Option) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | fn get_continuity_counter(&mut self, pid: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 200 | fn get_pcr(&mut self) -> u64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn mux(&mut self, video_data: &[u8], audio_data: &[u8]) -> Vec { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TS_PACKET_SIZE` is never used [INFO] [stdout] --> src/mux/packet.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | pub const TS_PACKET_SIZE: usize = 188; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SYNC_BYTE` is never used [INFO] [stdout] --> src/mux/packet.rs:7:11 [INFO] [stdout] | [INFO] [stdout] 7 | pub const SYNC_BYTE: u8 = 0x47; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TsPacket` is never constructed [INFO] [stdout] --> src/mux/packet.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct TsPacket { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TsHeader` is never constructed [INFO] [stdout] --> src/mux/packet.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct TsHeader { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptationField` is never constructed [INFO] [stdout] --> src/mux/packet.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct AdaptationField { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `parse`, `parse_header`, `parse_adaptation_field`, `to_bytes`, and `is_valid` are never used [INFO] [stdout] --> src/mux/packet.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl TsPacket { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 47 | /// Crear un nuevo paquete TS [INFO] [stdout] 48 | pub fn new(pid: u16, payload: Vec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn parse(data: &[u8]) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | fn parse_header(data: &[u8]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | fn parse_adaptation_field(data: &[u8]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn to_bytes(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn is_valid(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `pat` and `pmt` are never used [INFO] [stdout] --> src/mux/packet.rs:240:12 [INFO] [stdout] | [INFO] [stdout] 238 | impl TsHeader { [INFO] [stdout] | ------------- associated functions in this implementation [INFO] [stdout] 239 | /// Crear header para PAT [INFO] [stdout] 240 | pub fn pat() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 254 | pub fn pmt(pmt_pid: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PesPacket` is never constructed [INFO] [stdout] --> src/mux/pes.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct PesPacket { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `parse` and `parse_timestamp` are never used [INFO] [stdout] --> src/mux/pes.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl PesPacket { [INFO] [stdout] | -------------- associated functions in this implementation [INFO] [stdout] 12 | /// Parsear paquete PES [INFO] [stdout] 13 | pub fn parse(data: &[u8]) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | fn parse_timestamp(data: &[u8]) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Pat` is never constructed [INFO] [stdout] --> src/mux/psi.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Pat { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_bytes` is never used [INFO] [stdout] --> src/mux/psi.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl Pat { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] 9 | pub fn to_bytes(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Pmt` is never constructed [INFO] [stdout] --> src/mux/psi.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct Pmt { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_bytes` is never used [INFO] [stdout] --> src/mux/psi.rs:60:12 [INFO] [stdout] | [INFO] [stdout] 59 | impl Pmt { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] 60 | pub fn to_bytes(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProgramInfo` is never constructed [INFO] [stdout] --> src/mux/psi.rs:112:12 [INFO] [stdout] | [INFO] [stdout] 112 | pub struct ProgramInfo { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SrtReceiver` is never constructed [INFO] [stdout] --> src/network/srt_receiver.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct SrtReceiver { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SrtMode` is never used [INFO] [stdout] --> src/network/srt_receiver.rs:19:10 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum SrtMode { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/network/srt_receiver.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl SrtReceiver { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 26 | pub fn new(url: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn with_latency(mut self, latency_ms: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn with_buffer_size(mut self, buffer_size: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub async fn connect(&mut self) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub async fn receive(&mut self) -> Result, TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub async fn receive_timeout(&mut self, timeout: std::time::Duration) -> Result, TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub async fn close(&mut self) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | async fn connect_listener(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | async fn connect_caller(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | async fn connect_rendezvous(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | fn parse_srt_url(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | fn parse_srt_parameters(&self, params: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SrtReceiverBuilder` is never constructed [INFO] [stdout] --> src/network/srt_receiver.rs:234:12 [INFO] [stdout] | [INFO] [stdout] 234 | pub struct SrtReceiverBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `latency`, `buffer_size`, `max_bandwidth`, `passphrase`, and `build` are never used [INFO] [stdout] --> src/network/srt_receiver.rs:243:12 [INFO] [stdout] | [INFO] [stdout] 242 | impl SrtReceiverBuilder { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 243 | pub fn new(url: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn latency(mut self, latency_ms: u32) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 258 | pub fn buffer_size(mut self, buffer_size: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn max_bandwidth(mut self, mbps: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn passphrase(mut self, passphrase: String) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 273 | pub fn build(self) -> SrtReceiver { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UdpSender` is never constructed [INFO] [stdout] --> src/network/udp_sender.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct UdpSender { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/network/udp_sender.rs:19:18 [INFO] [stdout] | [INFO] [stdout] 17 | impl UdpSender { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 18 | /// Crear nuevo UdpSender [INFO] [stdout] 19 | pub async fn new(destination: SocketAddr) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | pub async fn from_url(url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub fn with_local_interface(mut self, interface: String) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn enable_broadcast(&self) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub async fn send(&mut self, data: &[u8]) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub async fn send_batch(&mut self, packets: Vec>) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub fn stats(&self) -> UdpStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn reset_stats(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UdpStats` is never constructed [INFO] [stdout] --> src/network/udp_sender.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 129 | pub struct UdpStats { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `bitrate_kbps` is never used [INFO] [stdout] --> src/network/udp_sender.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 136 | impl UdpStats { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] 137 | pub fn bitrate_kbps(&self, duration_secs: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParsedUdpUrl` is never constructed [INFO] [stdout] --> src/network/udp_sender.rs:150:8 [INFO] [stdout] | [INFO] [stdout] 150 | struct ParsedUdpUrl { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_udp_url` is never used [INFO] [stdout] --> src/network/udp_sender.rs:157:4 [INFO] [stdout] | [INFO] [stdout] 157 | fn parse_udp_url(url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UdpSenderBuilder` is never constructed [INFO] [stdout] --> src/network/udp_sender.rs:198:12 [INFO] [stdout] | [INFO] [stdout] 198 | pub struct UdpSenderBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `local_interface`, `ttl`, `packet_size`, `broadcast`, and `build` are never used [INFO] [stdout] --> src/network/udp_sender.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 206 | impl UdpSenderBuilder { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 207 | pub fn new(destination: SocketAddr) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | pub fn local_interface(mut self, interface: String) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub fn ttl(mut self, ttl: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | pub fn packet_size(mut self, size: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | pub fn broadcast(mut self, enabled: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub async fn build(self) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MulticastSender` is never constructed [INFO] [stdout] --> src/network/multicast.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct MulticastSender { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `send`, `set_ttl`, `set_multicast_loop`, and `packets_sent` are never used [INFO] [stdout] --> src/network/multicast.rs:17:18 [INFO] [stdout] | [INFO] [stdout] 15 | impl MulticastSender { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 16 | /// Crear nuevo MulticastSender [INFO] [stdout] 17 | pub async fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub async fn send(&mut self, data: &[u8]) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn set_multicast_loop(&self, enabled: bool) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn packets_sent(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_multicast_address` is never used [INFO] [stdout] --> src/network/multicast.rs:106:4 [INFO] [stdout] | [INFO] [stdout] 106 | fn is_multicast_address(addr: &Ipv4Addr) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MulticastReceiver` is never constructed [INFO] [stdout] --> src/network/multicast.rs:112:12 [INFO] [stdout] | [INFO] [stdout] 112 | pub struct MulticastReceiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `receive` are never used [INFO] [stdout] --> src/network/multicast.rs:119:18 [INFO] [stdout] | [INFO] [stdout] 118 | impl MulticastReceiver { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 119 | pub async fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub async fn receive(&self, buffer: &mut [u8]) -> Result<(usize, SocketAddr), TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_interface_ip` is never used [INFO] [stdout] --> src/network/multicast.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn get_interface_ip(interface_name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FfmpegHelper` is never constructed [INFO] [stdout] --> src/utils/ffmpeg.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct FfmpegHelper; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/utils/ffmpeg.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl FfmpegHelper { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] 10 | /// Verificar si FFmpeg está instalado [INFO] [stdout] 11 | pub fn is_installed() -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn get_version() -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn has_codec(codec_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn has_encoder(encoder_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | pub fn list_hw_encoders() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn best_h264_encoder() -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn check_capabilities() -> FfmpegCapabilities { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn has_protocol(protocol: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn parse_version(output: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn validate_args(args: &[String]) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn execute(args: Vec) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FfmpegVersion` is never constructed [INFO] [stdout] --> src/utils/ffmpeg.rs:201:12 [INFO] [stdout] | [INFO] [stdout] 201 | pub struct FfmpegVersion { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_at_least` is never used [INFO] [stdout] --> src/utils/ffmpeg.rs:210:12 [INFO] [stdout] | [INFO] [stdout] 208 | impl FfmpegVersion { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] 209 | /// Verificar si la versión es al menos la especificada [INFO] [stdout] 210 | pub fn is_at_least(&self, major: u32, minor: u32, patch: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FfmpegCapabilities` is never constructed [INFO] [stdout] --> src/utils/ffmpeg.rs:232:12 [INFO] [stdout] | [INFO] [stdout] 232 | pub struct FfmpegCapabilities { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `print_summary` is never used [INFO] [stdout] --> src/utils/ffmpeg.rs:246:12 [INFO] [stdout] | [INFO] [stdout] 245 | impl FfmpegCapabilities { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] 246 | pub fn print_summary(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PidManager` is never constructed [INFO] [stdout] --> src/utils/pid_manager.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct PidManager { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/utils/pid_manager.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 12 | impl PidManager { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 13 | /// PIDs reservados según el estándar MPEG-TS [INFO] [stdout] 14 | const PAT_PID: u16 = 0x0000; // Program Association Table [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 15 | const CAT_PID: u16 = 0x0001; // Conditional Access Table [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 16 | const TSDT_PID: u16 = 0x0002; // Transport Stream Description Table [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 17 | const NULL_PID: u16 = 0x1FFF; // Null packets [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 18 | [INFO] [stdout] 19 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn with_base_pids(pmt_pid: u16, video_pid: u16, audio_pid: u16) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn allocate(&mut self, stream_type: &str) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn allocate_specific(&mut self, stream_type: &str, pid: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn free(&mut self, stream_type: &str) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn get_pid(&self, stream_type: &str) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn is_pid_reserved(&self, pid: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn is_pid_allocated(&self, pid: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn is_pid_used(&self, pid: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn get_all_allocated(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn validate_pids(&self, pmt: u16, video: u16, audio: u16) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn auto_assign() -> PidAssignment { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PidAssignment` is never constructed [INFO] [stdout] --> src/utils/pid_manager.rs:163:12 [INFO] [stdout] | [INFO] [stdout] 163 | pub struct PidAssignment { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `catv_standard` and `validate` are never used [INFO] [stdout] --> src/utils/pid_manager.rs:174:12 [INFO] [stdout] | [INFO] [stdout] 172 | impl PidAssignment { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 173 | /// Crear asignación estándar para CATV [INFO] [stdout] 174 | pub fn catv_standard(service_id: u16) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn validate(&self) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BitrateCalculator` is never constructed [INFO] [stdout] --> src/utils/bitrate_calc.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct BitrateCalculator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BitrateSample` is never constructed [INFO] [stdout] --> src/utils/bitrate_calc.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | struct BitrateSample { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/utils/bitrate_calc.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl BitrateCalculator { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 17 | /// Crear calculadora con ventana de tiempo específica [INFO] [stdout] 18 | pub fn new(window_duration: Duration) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn new_1sec() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn new_5sec() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn add_sample(&mut self, bytes: u64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn calculate_bps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn calculate_kbps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn calculate_mbps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn average_bps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn stats(&self) -> BitrateStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | fn cleanup_old_samples(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | fn calculate_historical_bitrates(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BitrateStats` is never constructed [INFO] [stdout] --> src/utils/bitrate_calc.rs:167:12 [INFO] [stdout] | [INFO] [stdout] 167 | pub struct BitrateStats { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `variance` and `is_cbr` are never used [INFO] [stdout] --> src/utils/bitrate_calc.rs:181:12 [INFO] [stdout] | [INFO] [stdout] 179 | impl BitrateStats { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] 180 | /// Calcular varianza del bitrate (para detectar CBR vs VBR) [INFO] [stdout] 181 | pub fn variance(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn is_cbr(&self, tolerance_percent: f64) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CatvBitrateHelper` is never constructed [INFO] [stdout] --> src/utils/bitrate_calc.rs:195:12 [INFO] [stdout] | [INFO] [stdout] 195 | pub struct CatvBitrateHelper; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `recommended_video_bitrate`, `total_channel_bitrate`, and `channels_per_transponder` are never used [INFO] [stdout] --> src/utils/bitrate_calc.rs:199:12 [INFO] [stdout] | [INFO] [stdout] 197 | impl CatvBitrateHelper { [INFO] [stdout] | ---------------------- associated functions in this implementation [INFO] [stdout] 198 | /// Calcular bitrate recomendado para resolución [INFO] [stdout] 199 | pub fn recommended_video_bitrate(width: u32, height: u32, fps: u32) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 235 | pub fn total_channel_bitrate(video_kbps: u32, audio_kbps: u32) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn channels_per_transponder( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TimeHelper` is never constructed [INFO] [stdout] --> src/utils/time.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct TimeHelper; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `format_duration`, `mpegts_to_seconds`, `seconds_to_mpegts`, and `uptime_since` are never used [INFO] [stdout] --> src/utils/time.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl TimeHelper { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] 7 | /// Formatear duración en formato humano legible [INFO] [stdout] 8 | pub fn format_duration(seconds: u64) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn mpegts_to_seconds(pts: i64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | pub fn seconds_to_mpegts(seconds: f64) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn uptime_since(started_at: DateTime) -> Duration { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HashHelper` is never constructed [INFO] [stdout] --> src/utils/hash.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct HashHelper; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `hash_string`, `hash_config`, and `configs_equal` are never used [INFO] [stdout] --> src/utils/hash.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 7 | impl HashHelper { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] 8 | /// Calcular hash simple de un string [INFO] [stdout] 9 | pub fn hash_string(s: &str) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 16 | pub fn hash_config(config: &T) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn configs_equal(a: &T, b: &T) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/api/websocket.rs:72:38 [INFO] [stdout] | [INFO] [stdout] 72 | Ok(Message::Ping(data)) => { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/codec/video.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | encoder.codec = codec.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `codec::video::VideoEncoder { codec: codec.to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/codec/video.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | let mut encoder = Self::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/codec/audio.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | encoder.codec = codec.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `codec::audio::AudioEncoder { codec: codec.to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/codec/audio.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let mut encoder = Self::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:55:49 [INFO] [stdout] | [INFO] [stdout] 55 | if self.needs_update(local, &backend_config) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:57:57 [INFO] [stdout] | [INFO] [stdout] 57 | self.loader.save_channel_config(&backend_config)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:63:53 [INFO] [stdout] | [INFO] [stdout] 63 | self.loader.save_channel_config(&backend_config)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:95:18 [INFO] [stdout] | [INFO] [stdout] 95 | cmd.args(&["-hide_banner", "-stats", "-loglevel", "info"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-hide_banner", "-stats", "-loglevel", "info"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:122:18 [INFO] [stdout] | [INFO] [stdout] 122 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 123 | | "-fflags", "+genpts", [INFO] [stdout] 124 | | "-i", &self.config.input.url, [INFO] [stdout] 125 | | "-c", "copy", [INFO] [stdout] ... | [INFO] [stdout] 128 | | "-y", [INFO] [stdout] 129 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 122 ~ cmd.args([ [INFO] [stdout] 123 + "-fflags", "+genpts", [INFO] [stdout] 124 + "-i", &self.config.input.url, [INFO] [stdout] 125 + "-c", "copy", [INFO] [stdout] 126 + "-f", "mpegts", [INFO] [stdout] 127 + "-mpegts_copyts", "1", [INFO] [stdout] 128 + "-y", [INFO] [stdout] 129 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:138:18 [INFO] [stdout] | [INFO] [stdout] 138 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 139 | | "-fflags", "+genpts", [INFO] [stdout] 140 | | "-i", &self.config.input.url, [INFO] [stdout] 141 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 138 ~ cmd.args([ [INFO] [stdout] 139 + "-fflags", "+genpts", [INFO] [stdout] 140 + "-i", &self.config.input.url, [INFO] [stdout] 141 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:147:18 [INFO] [stdout] | [INFO] [stdout] 147 | cmd.args(&["-c:a", "copy"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `["-c:a", "copy"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:150:18 [INFO] [stdout] | [INFO] [stdout] 150 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:157:18 [INFO] [stdout] | [INFO] [stdout] 157 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 158 | | "-fflags", "+genpts", [INFO] [stdout] 159 | | "-i", &self.config.input.url, [INFO] [stdout] 160 | | "-c:v", "copy", [INFO] [stdout] 161 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 157 ~ cmd.args([ [INFO] [stdout] 158 + "-fflags", "+genpts", [INFO] [stdout] 159 + "-i", &self.config.input.url, [INFO] [stdout] 160 + "-c:v", "copy", [INFO] [stdout] 161 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:167:18 [INFO] [stdout] | [INFO] [stdout] 167 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:174:18 [INFO] [stdout] | [INFO] [stdout] 174 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 175 | | "-fflags", "+genpts", [INFO] [stdout] 176 | | "-i", &self.config.input.url, [INFO] [stdout] 177 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 174 ~ cmd.args([ [INFO] [stdout] 175 + "-fflags", "+genpts", [INFO] [stdout] 176 + "-i", &self.config.input.url, [INFO] [stdout] 177 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:186:18 [INFO] [stdout] | [INFO] [stdout] 186 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:196:37 [INFO] [stdout] | [INFO] [stdout] 196 | "nvenc" => cmd.args(&["-c:v", "h264_nvenc"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_nvenc"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:197:37 [INFO] [stdout] | [INFO] [stdout] 197 | "vaapi" => cmd.args(&["-c:v", "h264_vaapi"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_vaapi"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:198:35 [INFO] [stdout] | [INFO] [stdout] 198 | "qsv" => cmd.args(&["-c:v", "h264_qsv"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_qsv"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:199:31 [INFO] [stdout] | [INFO] [stdout] 199 | _ => cmd.args(&["-c:v", &video.codec]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", &video.codec]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:202:22 [INFO] [stdout] | [INFO] [stdout] 202 | cmd.args(&["-c:v", &format!("lib{}", video.codec)]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", &format!("lib{}", video.codec)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:206:18 [INFO] [stdout] | [INFO] [stdout] 206 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 207 | | "-profile:v", &video.profile, [INFO] [stdout] 208 | | "-level", &video.level, [INFO] [stdout] 209 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 206 ~ cmd.args([ [INFO] [stdout] 207 + "-profile:v", &video.profile, [INFO] [stdout] 208 + "-level", &video.level, [INFO] [stdout] 209 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:214:26 [INFO] [stdout] | [INFO] [stdout] 214 | cmd.args(&[ [INFO] [stdout] | __________________________^ [INFO] [stdout] 215 | | "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 216 | | "-minrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 217 | | "-maxrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 218 | | "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 219 | | ]); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 214 ~ cmd.args([ [INFO] [stdout] 215 + "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 216 + "-minrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 217 + "-maxrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 218 + "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 219 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:222:26 [INFO] [stdout] | [INFO] [stdout] 222 | cmd.args(&[ [INFO] [stdout] | __________________________^ [INFO] [stdout] 223 | | "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 224 | | "-maxrate", &format!("{}k", video.max_bitrate_kbps), [INFO] [stdout] 225 | | "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 226 | | ]); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 222 ~ cmd.args([ [INFO] [stdout] 223 + "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 224 + "-maxrate", &format!("{}k", video.max_bitrate_kbps), [INFO] [stdout] 225 + "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 226 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:229:26 [INFO] [stdout] | [INFO] [stdout] 229 | cmd.args(&["-b:v", &format!("{}k", video.bitrate_kbps)]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-b:v", &format!("{}k", video.bitrate_kbps)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:234:18 [INFO] [stdout] | [INFO] [stdout] 234 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 235 | | "-g", &video.gop_size.to_string(), [INFO] [stdout] 236 | | "-keyint_min", &(video.gop_size / 2).to_string(), [INFO] [stdout] 237 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 234 ~ cmd.args([ [INFO] [stdout] 235 + "-g", &video.gop_size.to_string(), [INFO] [stdout] 236 + "-keyint_min", &(video.gop_size / 2).to_string(), [INFO] [stdout] 237 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:241:22 [INFO] [stdout] | [INFO] [stdout] 241 | cmd.args(&[ [INFO] [stdout] | ______________________^ [INFO] [stdout] 242 | | "-preset", &video.preset, [INFO] [stdout] 243 | | "-tune", &video.tune, [INFO] [stdout] 244 | | ]); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 241 ~ cmd.args([ [INFO] [stdout] 242 + "-preset", &video.preset, [INFO] [stdout] 243 + "-tune", &video.tune, [INFO] [stdout] 244 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:248:18 [INFO] [stdout] | [INFO] [stdout] 248 | cmd.args(&["-r", &video.framerate.to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-r", &video.framerate.to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:254:18 [INFO] [stdout] | [INFO] [stdout] 254 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 255 | | "-c:a", &audio.codec, [INFO] [stdout] 256 | | "-b:a", &format!("{}k", audio.bitrate_kbps), [INFO] [stdout] 257 | | "-ar", &audio.sample_rate.to_string(), [INFO] [stdout] 258 | | "-ac", &audio.channels.to_string(), [INFO] [stdout] 259 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 254 ~ cmd.args([ [INFO] [stdout] 255 + "-c:a", &audio.codec, [INFO] [stdout] 256 + "-b:a", &format!("{}k", audio.bitrate_kbps), [INFO] [stdout] 257 + "-ar", &audio.sample_rate.to_string(), [INFO] [stdout] 258 + "-ac", &audio.channels.to_string(), [INFO] [stdout] 259 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/analyzer.rs:44:19 [INFO] [stdout] | [INFO] [stdout] 44 | .args(&[ [INFO] [stdout] | ___________________^ [INFO] [stdout] 45 | | "-v", "quiet", [INFO] [stdout] 46 | | "-print_format", "json", [INFO] [stdout] 47 | | "-show_format", [INFO] [stdout] 48 | | "-show_streams", [INFO] [stdout] 49 | | input_url, [INFO] [stdout] 50 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 44 ~ .args([ [INFO] [stdout] 45 + "-v", "quiet", [INFO] [stdout] 46 + "-print_format", "json", [INFO] [stdout] 47 + "-show_format", [INFO] [stdout] 48 + "-show_streams", [INFO] [stdout] 49 + input_url, [INFO] [stdout] 50 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/analyzer.rs:77:19 [INFO] [stdout] | [INFO] [stdout] 77 | .args(&[ [INFO] [stdout] | ___________________^ [INFO] [stdout] 78 | | "-v", "error", [INFO] [stdout] 79 | | "-show_entries", "format=duration", [INFO] [stdout] 80 | | "-of", "default=noprint_wrappers=1:nokey=1", [INFO] [stdout] 81 | | "-timeout", "5000000", // 5 segundos [INFO] [stdout] 82 | | input_url, [INFO] [stdout] 83 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 77 ~ .args([ [INFO] [stdout] 78 + "-v", "error", [INFO] [stdout] 79 + "-show_entries", "format=duration", [INFO] [stdout] 80 + "-of", "default=noprint_wrappers=1:nokey=1", [INFO] [stdout] 81 + "-timeout", "5000000", // 5 segundos [INFO] [stdout] 82 + input_url, [INFO] [stdout] 83 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/mux/packet.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | offset += 6; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/monitor/health_checker.rs:261:23 [INFO] [stdout] | [INFO] [stdout] 261 | .args(&["-h", "/"]) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `["-h", "/"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/network/multicast.rs:219:13 [INFO] [stdout] | [INFO] [stdout] 219 | let result = MulticastSender::new(multicast_addr, interface).await; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/monitor/stats_collector.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | / if let Some(hist) = history.get(channel_id) { [INFO] [stdout] 88 | | Some(ChannelAverages { [INFO] [stdout] 89 | | average_fps: hist.average_fps(), [INFO] [stdout] 90 | | average_bitrate_kbps: hist.average_bitrate(), [INFO] [stdout] ... | [INFO] [stdout] 94 | | None [INFO] [stdout] 95 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 87 ~ history.get(channel_id).map(|hist| ChannelAverages { [INFO] [stdout] 88 + average_fps: hist.average_fps(), [INFO] [stdout] 89 + average_bitrate_kbps: hist.average_bitrate(), [INFO] [stdout] 90 + bitrate_variance: hist.bitrate_variance(), [INFO] [stdout] 91 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:56:83 [INFO] [stdout] | [INFO] [stdout] 56 | let stream = self.stream_buffers.entry(packet.header.pid).or_insert_with(Vec::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/mux/pes.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 62 | / let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 63 | | | ((data[1] as u64) << 22) [INFO] [stdout] 64 | | | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 | | | ((data[3] as u64) << 7) [INFO] [stdout] 66 | | | ((data[4] as u64) >> 1)) as u64; [INFO] [stdout] | |______________________________________________- unnecessary `let` binding [INFO] [stdout] 67 | [INFO] [stdout] 68 | pts [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 62 ~ [INFO] [stdout] 63 | [INFO] [stdout] 64 ~ (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 65 + | ((data[1] as u64) << 22) [INFO] [stdout] 66 + | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 67 + | ((data[3] as u64) << 7) [INFO] [stdout] 68 + | ((data[4] as u64) >> 1)) as u64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/mux/pes.rs:62:19 [INFO] [stdout] | [INFO] [stdout] 62 | let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] | ___________________^ [INFO] [stdout] 63 | | | ((data[1] as u64) << 22) [INFO] [stdout] 64 | | | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 | | | ((data[3] as u64) << 7) [INFO] [stdout] 66 | | | ((data[4] as u64) >> 1)) as u64; [INFO] [stdout] | |_____________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 62 ~ let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 63 + | ((data[1] as u64) << 22) [INFO] [stdout] 64 + | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 + | ((data[3] as u64) << 7) [INFO] [stdout] 66 ~ | ((data[4] as u64) >> 1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/network/multicast.rs:168:15 [INFO] [stdout] | [INFO] [stdout] 168 | .args(&["addr", "show", interface_name]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["addr", "show", interface_name]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> src/network/multicast.rs:177:41 [INFO] [stdout] | [INFO] [stdout] 177 | let parts: Vec<&str> = line.trim().split_whitespace().collect(); [INFO] [stdout] | ^^^^^^^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] = note: `#[warn(clippy::trim_split_whitespace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:39:19 [INFO] [stdout] | [INFO] [stdout] 39 | .args(&["-codecs"]) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `["-codecs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | .args(&["-encoders"]) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `["-encoders"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:133:19 [INFO] [stdout] | [INFO] [stdout] 133 | .args(&["-protocols"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["-protocols"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `version_parts.get(0)` [INFO] [stdout] --> src/utils/ffmpeg.rs:163:21 [INFO] [stdout] | [INFO] [stdout] 163 | let major = version_parts.get(0).and_then(|s| s.parse().ok()).unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `version_parts.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_channel_config`, `send_channel_stats`, `send_bulk_stats`, `check_pending_commands`, and `acknowledge_command` are never used [INFO] [stdout] --> src/api/client.rs:119:18 [INFO] [stdout] | [INFO] [stdout] 17 | impl ApiClient { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 119 | pub async fn get_channel_config(&self, channel_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub async fn send_channel_stats(&self, stats: &ChannelStats) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub async fn send_bulk_stats(&self, stats: Vec) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 211 | pub async fn check_pending_commands(&self, client_id: &str) -> Result, TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub async fn acknowledge_command(&self, command_id: &str, success: bool, message: Option) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BulkStatsRequest` is never constructed [INFO] [stdout] --> src/api/client.rs:296:8 [INFO] [stdout] | [INFO] [stdout] 296 | struct BulkStatsRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RemoteCommand` is never constructed [INFO] [stdout] --> src/api/client.rs:301:12 [INFO] [stdout] | [INFO] [stdout] 301 | pub struct RemoteCommand { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RemoteCommandType` is never used [INFO] [stdout] --> src/api/client.rs:311:10 [INFO] [stdout] | [INFO] [stdout] 311 | pub enum RemoteCommandType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandAcknowledgment` is never constructed [INFO] [stdout] --> src/api/client.rs:322:8 [INFO] [stdout] | [INFO] [stdout] 322 | struct CommandAcknowledgment { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_channel_stats` is never used [INFO] [stdout] --> src/api/handlers.rs:104:14 [INFO] [stdout] | [INFO] [stdout] 104 | pub async fn get_channel_stats( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateChannelRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | pub struct CreateChannelRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_channel` is never used [INFO] [stdout] --> src/api/handlers.rs:128:14 [INFO] [stdout] | [INFO] [stdout] 128 | pub async fn create_channel( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_channel` is never used [INFO] [stdout] --> src/api/handlers.rs:151:14 [INFO] [stdout] | [INFO] [stdout] 151 | pub async fn delete_channel( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_summary` is never used [INFO] [stdout] --> src/api/handlers.rs:185:14 [INFO] [stdout] | [INFO] [stdout] 185 | pub async fn get_summary( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UpdateConfigRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:263:12 [INFO] [stdout] | [INFO] [stdout] 263 | pub struct UpdateConfigRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `update_channel_config` is never used [INFO] [stdout] --> src/api/handlers.rs:267:14 [INFO] [stdout] | [INFO] [stdout] 267 | pub async fn update_channel_config( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_channels_health` is never used [INFO] [stdout] --> src/api/handlers.rs:287:14 [INFO] [stdout] | [INFO] [stdout] 287 | pub async fn check_channels_health( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `parameters` is never read [INFO] [stdout] --> src/api/websocket.rs:130:5 [INFO] [stdout] | [INFO] [stdout] 127 | struct ClientCommand { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 130 | parameters: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClientCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RegistrationService` is never constructed [INFO] [stdout] --> src/api/registration.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct RegistrationService { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `register_with_retry` are never used [INFO] [stdout] --> src/api/registration.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl RegistrationService { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 14 | pub fn new(api_client: ApiClient, client_config: ClientConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | pub async fn register_with_retry(&self) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HeartbeatService` is never constructed [INFO] [stdout] --> src/api/heartbeat.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct HeartbeatService { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `start` are never used [INFO] [stdout] --> src/api/heartbeat.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl HeartbeatService { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 14 | pub fn new(api_client: Arc, client_id: String, interval_seconds: u64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub async fn start(self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/codec/video.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 45 | impl VideoEncoder { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 46 | /// Crear un encoder de video personalizado [INFO] [stdout] 47 | pub fn new(codec: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/codec/audio.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl AudioEncoder { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 30 | /// Crear un encoder de audio personalizado [INFO] [stdout] 31 | pub fn new(codec: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `stream_optimized`, `high_quality`, and `describe` are never used [INFO] [stdout] --> src/codec/encoder.rs:98:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl Encoder { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn stream_optimized() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn high_quality() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn describe(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `extract_all_audio_streams` and `extract_subtitle_info` are never used [INFO] [stdout] --> src/codec/decoder.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl Decoder { [INFO] [stdout] | ------------ associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn extract_all_audio_streams(container: &ContainerInfo) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn extract_subtitle_info(container: &ContainerInfo) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `load_channel_config` and `delete_channel_config` are never used [INFO] [stdout] --> src/config/loader.rs:253:12 [INFO] [stdout] | [INFO] [stdout] 228 | impl ConfigLoader { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn load_channel_config(&self, channel_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn delete_channel_config(&self, channel_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `remove_channel`, `reload_channel_config`, and `has_channel` are never used [INFO] [stdout] --> src/core/manager.rs:56:18 [INFO] [stdout] | [INFO] [stdout] 16 | impl TranscoderManager { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 56 | pub async fn remove_channel(&self, channel_id: &str) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub async fn reload_channel_config( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub async fn has_channel(&self, channel_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_config` and `get_config` are never used [INFO] [stdout] --> src/core/channel.rs:165:18 [INFO] [stdout] | [INFO] [stdout] 20 | impl Channel { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 165 | pub async fn update_config(&mut self, new_config: ChannelConfig) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn get_config(&self) -> &ChannelConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/utils/pid_manager.rs:210:24 [INFO] [stdout] | [INFO] [stdout] 210 | if !(pids[i] == self.pcr_pid && pids[j] == self.video_pid) && [INFO] [stdout] | ________________________^ [INFO] [stdout] 211 | | !(pids[j] == self.pcr_pid && pids[i] == self.video_pid) { [INFO] [stdout] | |______________________________________________________________________________^ help: try: `!(pids[i] == self.pcr_pid && pids[j] == self.video_pid || pids[j] == self.pcr_pid && pids[i] == self.video_pid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `quick_check` is never used [INFO] [stdout] --> src/core/analyzer.rs:73:18 [INFO] [stdout] | [INFO] [stdout] 37 | impl StreamAnalyzer { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 73 | pub async fn quick_check(input_url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StrategyReason` is never constructed [INFO] [stdout] --> src/core/strategy.rs:199:12 [INFO] [stdout] | [INFO] [stdout] 199 | pub struct StrategyReason { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decide_strategy_with_reasons` is never used [INFO] [stdout] --> src/core/strategy.rs:207:8 [INFO] [stdout] | [INFO] [stdout] 207 | pub fn decide_strategy_with_reasons( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VideoFrame` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct VideoFrame { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AudioFrame` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct AudioFrame { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PixelFormat` is never used [INFO] [stdout] --> src/core/pipeline.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum PixelFormat { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProcessingPipeline` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct ProcessingPipeline { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process_video_frame`, and `process_audio_frame` are never used [INFO] [stdout] --> src/core/pipeline.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl ProcessingPipeline { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 40 | pub fn new(buffer_size: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub async fn process_video_frame(&self, frame: VideoFrame) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub async fn process_audio_frame(&self, frame: AudioFrame) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VideoFilter` is never used [INFO] [stdout] --> src/core/pipeline.rs:62:11 [INFO] [stdout] | [INFO] [stdout] 62 | pub trait VideoFilter: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DeinterlaceFilter` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct DeinterlaceFilter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScaleFilter` is never constructed [INFO] [stdout] --> src/core/pipeline.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | pub struct ScaleFilter { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/core/pipeline.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 83 | impl ScaleFilter { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 84 | pub fn new(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Channel` is never constructed [INFO] [stdout] --> src/models/channel.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Channel { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChannelConfigModel` is never constructed [INFO] [stdout] --> src/models/channel.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct ChannelConfigModel { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/models/channel.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 28 | impl Channel { [INFO] [stdout] | ------------ associated function in this implementation [INFO] [stdout] 29 | pub fn new(id: String, name: String, client_id: String, config: ChannelConfigModel) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateChannelRequest` is never constructed [INFO] [stdout] --> src/models/channel.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct CreateChannelRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UpdateChannelRequest` is never constructed [INFO] [stdout] --> src/models/channel.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct UpdateChannelRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChannelResponse` is never constructed [INFO] [stdout] --> src/models/channel.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct ChannelResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConfigValidator` is never constructed [INFO] [stdout] --> src/models/config.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct ConfigValidator; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `validate_channel_config` is never used [INFO] [stdout] --> src/models/config.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl ConfigValidator { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 54 | /// Valida una configuración de canal [INFO] [stdout] 55 | pub fn validate_channel_config(config: &crate::config::loader::ChannelConfig) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/models/error.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum TranscoderError { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 19 | ConfigError(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | ConfigLoadError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | ConfigSaveError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | ProcessDied(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | CodecError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | MuxError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | DemuxError(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | PipelineError(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | ApiError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | AuthError(String), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | Timeout(String), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | ResourceUnavailable(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | HardwareError(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | HardwareAccelNotAvailable(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TranscoderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_str` is never used [INFO] [stdout] --> src/models/error.rs:149:12 [INFO] [stdout] | [INFO] [stdout] 148 | impl ErrorSeverity { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] 149 | pub fn as_str(&self) -> &str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> src/models/error.rs:160:10 [INFO] [stdout] | [INFO] [stdout] 160 | pub type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_str` is never used [INFO] [stdout] --> src/models/stats.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl ChannelStatus { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn as_str(&self) -> &str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `summary` is never used [INFO] [stdout] --> src/models/stats.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 95 | impl ChannelStats { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn summary(&self) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StatsHistory` is never constructed [INFO] [stdout] --> src/models/stats.rs:214:12 [INFO] [stdout] | [INFO] [stdout] 214 | pub struct StatsHistory { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StatsEntry` is never constructed [INFO] [stdout] --> src/models/stats.rs:221:12 [INFO] [stdout] | [INFO] [stdout] 221 | pub struct StatsEntry { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add_entry`, `average_fps`, `average_bitrate`, and `bitrate_variance` are never used [INFO] [stdout] --> src/models/stats.rs:230:12 [INFO] [stdout] | [INFO] [stdout] 229 | impl StatsHistory { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 230 | pub fn new(channel_id: String, max_entries: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn add_entry(&mut self, stats: &ChannelStats) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | pub fn average_fps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn average_bitrate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn bitrate_variance(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_interval` and `with_auto_restart` are never used [INFO] [stdout] --> src/monitor/health_checker.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl HealthChecker { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn with_interval(mut self, interval: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn with_auto_restart(mut self, enabled: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/monitor/metrics.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct MetricsCollector { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 19 | frames_processed: IntCounter, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | frames_dropped: IntCounter, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 21 | restarts_total: IntCounter, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 22 | errors_total: IntCounter, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | active_channels: IntGauge, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | current_fps: Gauge, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 27 | current_bitrate: Gauge, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | processing_duration: Histogram, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/monitor/metrics.rs:98:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl MetricsCollector { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn inc_frames_processed(&self, count: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn inc_frames_dropped(&self, count: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn inc_restarts(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn inc_errors(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn set_active_channels(&self, count: i64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | pub fn set_fps(&self, fps: f64) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn set_bitrate(&self, bitrate_kbps: f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn observe_processing_duration(&self, duration_seconds: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MetricsManager` is never constructed [INFO] [stdout] --> src/monitor/metrics.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 197 | pub struct MetricsManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `update_from_stats`, and `gather` are never used [INFO] [stdout] --> src/monitor/metrics.rs:202:12 [INFO] [stdout] | [INFO] [stdout] 201 | impl MetricsManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 202 | pub fn new() -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 215 | pub async fn update_from_stats(&self, stats: &crate::models::stats::ChannelStats) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 224 | pub async fn gather(&self) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StatsCollector` is never constructed [INFO] [stdout] --> src/monitor/stats_collector.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct StatsCollector { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start`, `update_history`, `get_history`, `get_averages`, and `cleanup_old_history` are never used [INFO] [stdout] --> src/monitor/stats_collector.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl StatsCollector { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 20 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub async fn start(self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | async fn update_history(&self, stats: &HashMap) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub async fn get_history(&self, channel_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub async fn get_averages(&self, channel_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub async fn cleanup_old_history(&self, older_than_hours: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChannelAverages` is never constructed [INFO] [stdout] --> src/monitor/stats_collector.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 113 | pub struct ChannelAverages { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `cleanup_old_alerts`, `alert_dropped_frames`, and `alert_bitrate_deviation` are never used [INFO] [stdout] --> src/monitor/alerting.rs:63:18 [INFO] [stdout] | [INFO] [stdout] 15 | impl AlertManager { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 63 | pub async fn cleanup_old_alerts(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn alert_dropped_frames(channel_id: String, percentage: f64) -> MonitoringAlert { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn alert_bitrate_deviation( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `extract_stream`, `get_stream`, `clear_stream`, and `active_pids` are never used [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl MpegTsDemuxer { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 72 | pub fn extract_stream(&mut self, pid: u16) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn get_stream(&self, pid: u16) -> Option<&Vec> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn clear_stream(&mut self, pid: u16) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn active_pids(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pcr_pid` and `pcr_counter` are never read [INFO] [stdout] --> src/mux/mpegts_muxer.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct MpegTsMuxer { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pcr_pid: u16, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 13 | pcr_counter: u64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/mux/mpegts_muxer.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl MpegTsMuxer { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn generate_pmt(&mut self) -> TsPacket { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn create_video_packet(&mut self, data: &[u8], pts: Option) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn create_audio_packet(&mut self, data: &[u8], pts: Option) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | fn create_pes_packets(&mut self, pid: u16, data: &[u8], stream_id: u8, pts: Option) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn create_pes_header(&self, stream_id: u8, data_len: usize, pts: Option) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 200 | fn get_pcr(&mut self) -> u64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn mux(&mut self, video_data: &[u8], audio_data: &[u8]) -> Vec { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `opcr_flag`, `splicing_point_flag`, `transport_private_data_flag`, `adaptation_field_extension_flag`, and `opcr` are never read [INFO] [stdout] --> src/mux/packet.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct AdaptationField { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 38 | pub opcr_flag: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 39 | pub splicing_point_flag: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 40 | pub transport_private_data_flag: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 41 | pub adaptation_field_extension_flag: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 42 | pub pcr: Option, // Program Clock Reference [INFO] [stdout] 43 | pub opcr: Option, // Original PCR [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AdaptationField` 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: method `is_valid` is never used [INFO] [stdout] --> src/mux/packet.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl TsPacket { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn is_valid(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `pmt` is never used [INFO] [stdout] --> src/mux/packet.rs:254:12 [INFO] [stdout] | [INFO] [stdout] 238 | impl TsHeader { [INFO] [stdout] | ------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 254 | pub fn pmt(pmt_pid: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PesPacket` is never constructed [INFO] [stdout] --> src/mux/pes.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct PesPacket { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `parse` and `parse_timestamp` are never used [INFO] [stdout] --> src/mux/pes.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl PesPacket { [INFO] [stdout] | -------------- associated functions in this implementation [INFO] [stdout] 12 | /// Parsear paquete PES [INFO] [stdout] 13 | pub fn parse(data: &[u8]) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | fn parse_timestamp(data: &[u8]) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Pmt` is never constructed [INFO] [stdout] --> src/mux/psi.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct Pmt { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_bytes` is never used [INFO] [stdout] --> src/mux/psi.rs:60:12 [INFO] [stdout] | [INFO] [stdout] 59 | impl Pmt { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] 60 | pub fn to_bytes(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProgramInfo` is never constructed [INFO] [stdout] --> src/mux/psi.rs:112:12 [INFO] [stdout] | [INFO] [stdout] 112 | pub struct ProgramInfo { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `mode` and `socket` are never read [INFO] [stdout] --> src/network/srt_receiver.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct SrtReceiver { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 11 | url: String, [INFO] [stdout] 12 | mode: SrtMode, [INFO] [stdout] | ^^^^ [INFO] [stdout] 13 | socket: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/network/srt_receiver.rs:56:18 [INFO] [stdout] | [INFO] [stdout] 25 | impl SrtReceiver { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 56 | pub async fn connect(&mut self) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub async fn receive(&mut self) -> Result, TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub async fn receive_timeout(&mut self, timeout: std::time::Duration) -> Result, TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub async fn close(&mut self) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | async fn connect_listener(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | async fn connect_caller(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | async fn connect_rendezvous(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `max_bandwidth_mbps` and `passphrase` are never read [INFO] [stdout] --> src/network/srt_receiver.rs:238:5 [INFO] [stdout] | [INFO] [stdout] 234 | pub struct SrtReceiverBuilder { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 238 | max_bandwidth_mbps: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 239 | passphrase: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `max_bandwidth` and `passphrase` are never used [INFO] [stdout] --> src/network/srt_receiver.rs:263:12 [INFO] [stdout] | [INFO] [stdout] 242 | impl SrtReceiverBuilder { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn max_bandwidth(mut self, mbps: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn passphrase(mut self, passphrase: String) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `socket`, `local_interface`, `ttl`, `packet_size`, `packets_sent`, and `bytes_sent` are never read [INFO] [stdout] --> src/network/udp_sender.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct UdpSender { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 8 | socket: UdpSocket, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 9 | destination: SocketAddr, [INFO] [stdout] 10 | local_interface: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 11 | ttl: u32, [INFO] [stdout] | ^^^ [INFO] [stdout] 12 | packet_size: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 13 | packets_sent: u64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 14 | bytes_sent: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/network/udp_sender.rs:39:18 [INFO] [stdout] | [INFO] [stdout] 17 | impl UdpSender { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 39 | pub async fn from_url(url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub fn with_local_interface(mut self, interface: String) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn enable_broadcast(&self) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub async fn send(&mut self, data: &[u8]) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub async fn send_batch(&mut self, packets: Vec>) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub fn stats(&self) -> UdpStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn reset_stats(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UdpStats` is never constructed [INFO] [stdout] --> src/network/udp_sender.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 129 | pub struct UdpStats { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `bitrate_kbps` is never used [INFO] [stdout] --> src/network/udp_sender.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 136 | impl UdpStats { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] 137 | pub fn bitrate_kbps(&self, duration_secs: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `local_interface` is never read [INFO] [stdout] --> src/network/udp_sender.rs:152:5 [INFO] [stdout] | [INFO] [stdout] 150 | struct ParsedUdpUrl { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 151 | destination: SocketAddr, [INFO] [stdout] 152 | local_interface: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UdpSenderBuilder` is never constructed [INFO] [stdout] --> src/network/udp_sender.rs:198:12 [INFO] [stdout] | [INFO] [stdout] 198 | pub struct UdpSenderBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `local_interface`, `ttl`, `packet_size`, `broadcast`, and `build` are never used [INFO] [stdout] --> src/network/udp_sender.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 206 | impl UdpSenderBuilder { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 207 | pub fn new(destination: SocketAddr) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | pub fn local_interface(mut self, interface: String) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub fn ttl(mut self, ttl: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | pub fn packet_size(mut self, size: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | pub fn broadcast(mut self, enabled: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub async fn build(self) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ttl` and `packets_sent` are never read [INFO] [stdout] --> src/network/multicast.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct MulticastSender { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 11 | ttl: u32, [INFO] [stdout] | ^^^ [INFO] [stdout] 12 | packets_sent: u64, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `send`, `set_ttl`, `set_multicast_loop`, and `packets_sent` are never used [INFO] [stdout] --> src/network/multicast.rs:63:18 [INFO] [stdout] | [INFO] [stdout] 15 | impl MulticastSender { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 63 | pub async fn send(&mut self, data: &[u8]) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn set_multicast_loop(&self, enabled: bool) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn packets_sent(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MulticastReceiver` is never constructed [INFO] [stdout] --> src/network/multicast.rs:112:12 [INFO] [stdout] | [INFO] [stdout] 112 | pub struct MulticastReceiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `receive` are never used [INFO] [stdout] --> src/network/multicast.rs:119:18 [INFO] [stdout] | [INFO] [stdout] 118 | impl MulticastReceiver { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 119 | pub async fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub async fn receive(&self, buffer: &mut [u8]) -> Result<(usize, SocketAddr), TranscoderError> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_interface_ip` is never used [INFO] [stdout] --> src/network/multicast.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn get_interface_ip(interface_name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/utils/ffmpeg.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl FfmpegHelper { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 22 | pub fn get_version() -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn has_codec(codec_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn has_encoder(encoder_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | pub fn list_hw_encoders() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn best_h264_encoder() -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn check_capabilities() -> FfmpegCapabilities { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn has_protocol(protocol: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn validate_args(args: &[String]) -> Result<(), TranscoderError> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn execute(args: Vec) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FfmpegCapabilities` is never constructed [INFO] [stdout] --> src/utils/ffmpeg.rs:232:12 [INFO] [stdout] | [INFO] [stdout] 232 | pub struct FfmpegCapabilities { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `print_summary` is never used [INFO] [stdout] --> src/utils/ffmpeg.rs:246:12 [INFO] [stdout] | [INFO] [stdout] 245 | impl FfmpegCapabilities { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] 246 | pub fn print_summary(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_base_pids`, `free`, `get_pid`, `get_all_allocated`, and `auto_assign` are never used [INFO] [stdout] --> src/utils/pid_manager.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl PidManager { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn with_base_pids(pmt_pid: u16, video_pid: u16, audio_pid: u16) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn free(&mut self, stream_type: &str) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn get_pid(&self, stream_type: &str) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn get_all_allocated(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn auto_assign() -> PidAssignment { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/utils/bitrate_calc.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl BitrateCalculator { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn new_5sec() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn calculate_kbps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn calculate_mbps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn average_bps(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn stats(&self) -> BitrateStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | fn calculate_historical_bitrates(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BitrateStats` is never constructed [INFO] [stdout] --> src/utils/bitrate_calc.rs:167:12 [INFO] [stdout] | [INFO] [stdout] 167 | pub struct BitrateStats { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `variance` and `is_cbr` are never used [INFO] [stdout] --> src/utils/bitrate_calc.rs:181:12 [INFO] [stdout] | [INFO] [stdout] 179 | impl BitrateStats { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] 180 | /// Calcular varianza del bitrate (para detectar CBR vs VBR) [INFO] [stdout] 181 | pub fn variance(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn is_cbr(&self, tolerance_percent: f64) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `channels_per_transponder` is never used [INFO] [stdout] --> src/utils/bitrate_calc.rs:242:12 [INFO] [stdout] | [INFO] [stdout] 197 | impl CatvBitrateHelper { [INFO] [stdout] | ---------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn channels_per_transponder( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `uptime_since` is never used [INFO] [stdout] --> src/utils/time.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl TimeHelper { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn uptime_since(started_at: DateTime) -> Duration { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `hash_config` and `configs_equal` are never used [INFO] [stdout] --> src/utils/hash.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 7 | impl HashHelper { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 16 | pub fn hash_config(config: &T) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn configs_equal(a: &T, b: &T) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/utils/bitrate_calc.rs:229:17 [INFO] [stdout] | [INFO] [stdout] 229 | (pixels / 50_000) as u32 // ~0.02 bits por pixel [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(pixels / 50_000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/codec/video.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | encoder.codec = codec.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `codec::video::VideoEncoder { codec: codec.to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/codec/video.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | let mut encoder = Self::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/codec/audio.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | encoder.codec = codec.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `codec::audio::AudioEncoder { codec: codec.to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/codec/audio.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let mut encoder = Self::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:55:49 [INFO] [stdout] | [INFO] [stdout] 55 | if self.needs_update(local, &backend_config) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:57:57 [INFO] [stdout] | [INFO] [stdout] 57 | self.loader.save_channel_config(&backend_config)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/sync.rs:63:53 [INFO] [stdout] | [INFO] [stdout] 63 | self.loader.save_channel_config(&backend_config)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `backend_config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:95:18 [INFO] [stdout] | [INFO] [stdout] 95 | cmd.args(&["-hide_banner", "-stats", "-loglevel", "info"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-hide_banner", "-stats", "-loglevel", "info"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:122:18 [INFO] [stdout] | [INFO] [stdout] 122 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 123 | | "-fflags", "+genpts", [INFO] [stdout] 124 | | "-i", &self.config.input.url, [INFO] [stdout] 125 | | "-c", "copy", [INFO] [stdout] ... | [INFO] [stdout] 128 | | "-y", [INFO] [stdout] 129 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 122 ~ cmd.args([ [INFO] [stdout] 123 + "-fflags", "+genpts", [INFO] [stdout] 124 + "-i", &self.config.input.url, [INFO] [stdout] 125 + "-c", "copy", [INFO] [stdout] 126 + "-f", "mpegts", [INFO] [stdout] 127 + "-mpegts_copyts", "1", [INFO] [stdout] 128 + "-y", [INFO] [stdout] 129 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:138:18 [INFO] [stdout] | [INFO] [stdout] 138 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 139 | | "-fflags", "+genpts", [INFO] [stdout] 140 | | "-i", &self.config.input.url, [INFO] [stdout] 141 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 138 ~ cmd.args([ [INFO] [stdout] 139 + "-fflags", "+genpts", [INFO] [stdout] 140 + "-i", &self.config.input.url, [INFO] [stdout] 141 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:147:18 [INFO] [stdout] | [INFO] [stdout] 147 | cmd.args(&["-c:a", "copy"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `["-c:a", "copy"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:150:18 [INFO] [stdout] | [INFO] [stdout] 150 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:157:18 [INFO] [stdout] | [INFO] [stdout] 157 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 158 | | "-fflags", "+genpts", [INFO] [stdout] 159 | | "-i", &self.config.input.url, [INFO] [stdout] 160 | | "-c:v", "copy", [INFO] [stdout] 161 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 157 ~ cmd.args([ [INFO] [stdout] 158 + "-fflags", "+genpts", [INFO] [stdout] 159 + "-i", &self.config.input.url, [INFO] [stdout] 160 + "-c:v", "copy", [INFO] [stdout] 161 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:167:18 [INFO] [stdout] | [INFO] [stdout] 167 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:174:18 [INFO] [stdout] | [INFO] [stdout] 174 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 175 | | "-fflags", "+genpts", [INFO] [stdout] 176 | | "-i", &self.config.input.url, [INFO] [stdout] 177 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 174 ~ cmd.args([ [INFO] [stdout] 175 + "-fflags", "+genpts", [INFO] [stdout] 176 + "-i", &self.config.input.url, [INFO] [stdout] 177 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:186:18 [INFO] [stdout] | [INFO] [stdout] 186 | cmd.args(&["-f", "mpegts", "-y"]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-f", "mpegts", "-y"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:196:37 [INFO] [stdout] | [INFO] [stdout] 196 | "nvenc" => cmd.args(&["-c:v", "h264_nvenc"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_nvenc"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:197:37 [INFO] [stdout] | [INFO] [stdout] 197 | "vaapi" => cmd.args(&["-c:v", "h264_vaapi"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_vaapi"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:198:35 [INFO] [stdout] | [INFO] [stdout] 198 | "qsv" => cmd.args(&["-c:v", "h264_qsv"]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", "h264_qsv"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:199:31 [INFO] [stdout] | [INFO] [stdout] 199 | _ => cmd.args(&["-c:v", &video.codec]), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", &video.codec]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:202:22 [INFO] [stdout] | [INFO] [stdout] 202 | cmd.args(&["-c:v", &format!("lib{}", video.codec)]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-c:v", &format!("lib{}", video.codec)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:206:18 [INFO] [stdout] | [INFO] [stdout] 206 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 207 | | "-profile:v", &video.profile, [INFO] [stdout] 208 | | "-level", &video.level, [INFO] [stdout] 209 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 206 ~ cmd.args([ [INFO] [stdout] 207 + "-profile:v", &video.profile, [INFO] [stdout] 208 + "-level", &video.level, [INFO] [stdout] 209 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:214:26 [INFO] [stdout] | [INFO] [stdout] 214 | cmd.args(&[ [INFO] [stdout] | __________________________^ [INFO] [stdout] 215 | | "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 216 | | "-minrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 217 | | "-maxrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 218 | | "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 219 | | ]); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 214 ~ cmd.args([ [INFO] [stdout] 215 + "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 216 + "-minrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 217 + "-maxrate", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 218 + "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 219 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:222:26 [INFO] [stdout] | [INFO] [stdout] 222 | cmd.args(&[ [INFO] [stdout] | __________________________^ [INFO] [stdout] 223 | | "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 224 | | "-maxrate", &format!("{}k", video.max_bitrate_kbps), [INFO] [stdout] 225 | | "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 226 | | ]); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 222 ~ cmd.args([ [INFO] [stdout] 223 + "-b:v", &format!("{}k", video.bitrate_kbps), [INFO] [stdout] 224 + "-maxrate", &format!("{}k", video.max_bitrate_kbps), [INFO] [stdout] 225 + "-bufsize", &format!("{}k", video.buffer_size_kb), [INFO] [stdout] 226 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:229:26 [INFO] [stdout] | [INFO] [stdout] 229 | cmd.args(&["-b:v", &format!("{}k", video.bitrate_kbps)]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-b:v", &format!("{}k", video.bitrate_kbps)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:234:18 [INFO] [stdout] | [INFO] [stdout] 234 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 235 | | "-g", &video.gop_size.to_string(), [INFO] [stdout] 236 | | "-keyint_min", &(video.gop_size / 2).to_string(), [INFO] [stdout] 237 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 234 ~ cmd.args([ [INFO] [stdout] 235 + "-g", &video.gop_size.to_string(), [INFO] [stdout] 236 + "-keyint_min", &(video.gop_size / 2).to_string(), [INFO] [stdout] 237 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:241:22 [INFO] [stdout] | [INFO] [stdout] 241 | cmd.args(&[ [INFO] [stdout] | ______________________^ [INFO] [stdout] 242 | | "-preset", &video.preset, [INFO] [stdout] 243 | | "-tune", &video.tune, [INFO] [stdout] 244 | | ]); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 241 ~ cmd.args([ [INFO] [stdout] 242 + "-preset", &video.preset, [INFO] [stdout] 243 + "-tune", &video.tune, [INFO] [stdout] 244 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:248:18 [INFO] [stdout] | [INFO] [stdout] 248 | cmd.args(&["-r", &video.framerate.to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["-r", &video.framerate.to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/transcoder.rs:254:18 [INFO] [stdout] | [INFO] [stdout] 254 | cmd.args(&[ [INFO] [stdout] | __________________^ [INFO] [stdout] 255 | | "-c:a", &audio.codec, [INFO] [stdout] 256 | | "-b:a", &format!("{}k", audio.bitrate_kbps), [INFO] [stdout] 257 | | "-ar", &audio.sample_rate.to_string(), [INFO] [stdout] 258 | | "-ac", &audio.channels.to_string(), [INFO] [stdout] 259 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 254 ~ cmd.args([ [INFO] [stdout] 255 + "-c:a", &audio.codec, [INFO] [stdout] 256 + "-b:a", &format!("{}k", audio.bitrate_kbps), [INFO] [stdout] 257 + "-ar", &audio.sample_rate.to_string(), [INFO] [stdout] 258 + "-ac", &audio.channels.to_string(), [INFO] [stdout] 259 ~ ]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/analyzer.rs:44:19 [INFO] [stdout] | [INFO] [stdout] 44 | .args(&[ [INFO] [stdout] | ___________________^ [INFO] [stdout] 45 | | "-v", "quiet", [INFO] [stdout] 46 | | "-print_format", "json", [INFO] [stdout] 47 | | "-show_format", [INFO] [stdout] 48 | | "-show_streams", [INFO] [stdout] 49 | | input_url, [INFO] [stdout] 50 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 44 ~ .args([ [INFO] [stdout] 45 + "-v", "quiet", [INFO] [stdout] 46 + "-print_format", "json", [INFO] [stdout] 47 + "-show_format", [INFO] [stdout] 48 + "-show_streams", [INFO] [stdout] 49 + input_url, [INFO] [stdout] 50 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/core/analyzer.rs:77:19 [INFO] [stdout] | [INFO] [stdout] 77 | .args(&[ [INFO] [stdout] | ___________________^ [INFO] [stdout] 78 | | "-v", "error", [INFO] [stdout] 79 | | "-show_entries", "format=duration", [INFO] [stdout] 80 | | "-of", "default=noprint_wrappers=1:nokey=1", [INFO] [stdout] 81 | | "-timeout", "5000000", // 5 segundos [INFO] [stdout] 82 | | input_url, [INFO] [stdout] 83 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 77 ~ .args([ [INFO] [stdout] 78 + "-v", "error", [INFO] [stdout] 79 + "-show_entries", "format=duration", [INFO] [stdout] 80 + "-of", "default=noprint_wrappers=1:nokey=1", [INFO] [stdout] 81 + "-timeout", "5000000", // 5 segundos [INFO] [stdout] 82 + input_url, [INFO] [stdout] 83 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: float has excessive precision [INFO] [stdout] --> src/core/analyzer.rs:210:70 [INFO] [stdout] | [INFO] [stdout] 210 | assert_eq!(StreamAnalyzer::parse_fps("30000/1001").unwrap(), 29.970029970029969); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stdout] = note: `#[warn(clippy::excessive_precision)]` on by default [INFO] [stdout] help: consider changing the type or truncating it to [INFO] [stdout] | [INFO] [stdout] 210 - assert_eq!(StreamAnalyzer::parse_fps("30000/1001").unwrap(), 29.970029970029969); [INFO] [stdout] 210 + assert_eq!(StreamAnalyzer::parse_fps("30000/1001").unwrap(), 29.970_029_970_029_97); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/monitor/health_checker.rs:261:23 [INFO] [stdout] | [INFO] [stdout] 261 | .args(&["-h", "/"]) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `["-h", "/"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: items after a test module [INFO] [stdout] --> src/monitor/stats_collector.rs:176:1 [INFO] [stdout] | [INFO] [stdout] 176 | mod tests { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | impl Default for ChannelStats { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_test_module [INFO] [stdout] = note: `#[warn(clippy::items_after_test_module)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/monitor/stats_collector.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | / if let Some(hist) = history.get(channel_id) { [INFO] [stdout] 88 | | Some(ChannelAverages { [INFO] [stdout] 89 | | average_fps: hist.average_fps(), [INFO] [stdout] 90 | | average_bitrate_kbps: hist.average_bitrate(), [INFO] [stdout] ... | [INFO] [stdout] 94 | | None [INFO] [stdout] 95 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 87 ~ history.get(channel_id).map(|hist| ChannelAverages { [INFO] [stdout] 88 + average_fps: hist.average_fps(), [INFO] [stdout] 89 + average_bitrate_kbps: hist.average_bitrate(), [INFO] [stdout] 90 + bitrate_variance: hist.bitrate_variance(), [INFO] [stdout] 91 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/mux/mpegts_demuxer.rs:56:83 [INFO] [stdout] | [INFO] [stdout] 56 | let stream = self.stream_buffers.entry(packet.header.pid).or_insert_with(Vec::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/mux/pes.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 62 | / let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 63 | | | ((data[1] as u64) << 22) [INFO] [stdout] 64 | | | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 | | | ((data[3] as u64) << 7) [INFO] [stdout] 66 | | | ((data[4] as u64) >> 1)) as u64; [INFO] [stdout] | |______________________________________________- unnecessary `let` binding [INFO] [stdout] 67 | [INFO] [stdout] 68 | pts [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 62 ~ [INFO] [stdout] 63 | [INFO] [stdout] 64 ~ (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 65 + | ((data[1] as u64) << 22) [INFO] [stdout] 66 + | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 67 + | ((data[3] as u64) << 7) [INFO] [stdout] 68 + | ((data[4] as u64) >> 1)) as u64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/mux/pes.rs:62:19 [INFO] [stdout] | [INFO] [stdout] 62 | let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] | ___________________^ [INFO] [stdout] 63 | | | ((data[1] as u64) << 22) [INFO] [stdout] 64 | | | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 | | | ((data[3] as u64) << 7) [INFO] [stdout] 66 | | | ((data[4] as u64) >> 1)) as u64; [INFO] [stdout] | |_____________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 62 ~ let pts = (((data[0] as u64 & 0x0E) << 29) [INFO] [stdout] 63 + | ((data[1] as u64) << 22) [INFO] [stdout] 64 + | ((data[2] as u64 & 0xFE) << 14) [INFO] [stdout] 65 + | ((data[3] as u64) << 7) [INFO] [stdout] 66 ~ | ((data[4] as u64) >> 1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/network/multicast.rs:168:15 [INFO] [stdout] | [INFO] [stdout] 168 | .args(&["addr", "show", interface_name]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["addr", "show", interface_name]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: found call to `str::trim` before `str::split_whitespace` [INFO] [stdout] --> src/network/multicast.rs:177:41 [INFO] [stdout] | [INFO] [stdout] 177 | let parts: Vec<&str> = line.trim().split_whitespace().collect(); [INFO] [stdout] | ^^^^^^^ help: remove `trim()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trim_split_whitespace [INFO] [stdout] = note: `#[warn(clippy::trim_split_whitespace)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:39:19 [INFO] [stdout] | [INFO] [stdout] 39 | .args(&["-codecs"]) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `["-codecs"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | .args(&["-encoders"]) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `["-encoders"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg.rs:133:19 [INFO] [stdout] | [INFO] [stdout] 133 | .args(&["-protocols"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `["-protocols"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `version_parts.get(0)` [INFO] [stdout] --> src/utils/ffmpeg.rs:163:21 [INFO] [stdout] | [INFO] [stdout] 163 | let major = version_parts.get(0).and_then(|s| s.parse().ok()).unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `version_parts.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/utils/pid_manager.rs:210:24 [INFO] [stdout] | [INFO] [stdout] 210 | if !(pids[i] == self.pcr_pid && pids[j] == self.video_pid) && [INFO] [stdout] | ________________________^ [INFO] [stdout] 211 | | !(pids[j] == self.pcr_pid && pids[i] == self.video_pid) { [INFO] [stdout] | |______________________________________________________________________________^ help: try: `!(pids[i] == self.pcr_pid && pids[j] == self.video_pid || pids[j] == self.pcr_pid && pids[i] == self.video_pid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/utils/bitrate_calc.rs:229:17 [INFO] [stdout] | [INFO] [stdout] 229 | (pixels / 50_000) as u32 // ~0.02 bits por pixel [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(pixels / 50_000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/utils/bitrate_calc.rs:282:17 [INFO] [stdout] | [INFO] [stdout] 282 | assert!(total >= 4_300 && total <= 4_400); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(4_300..=4_400).contains(&total)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 50s [INFO] running `Command { std: "docker" "inspect" "f6f4d54d60e8faf20e90c813f512c8a23a315e344c6e7553436910ab2822ea67", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f6f4d54d60e8faf20e90c813f512c8a23a315e344c6e7553436910ab2822ea67", kill_on_drop: false }` [INFO] [stdout] f6f4d54d60e8faf20e90c813f512c8a23a315e344c6e7553436910ab2822ea67