[INFO] cloning repository https://github.com/Khanh-21522203/RustRTMP [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Khanh-21522203/RustRTMP" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKhanh-21522203%2FRustRTMP", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKhanh-21522203%2FRustRTMP'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b18fd32e53617a46f5c8bdedada94948ba680ffb [INFO] checking Khanh-21522203/RustRTMP against master#c9af9c1dc85a55e309345030ff9cb7ea247953fa for pr-151146 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKhanh-21522203%2FRustRTMP" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Khanh-21522203/RustRTMP [INFO] finished tweaking git repo https://github.com/Khanh-21522203/RustRTMP [INFO] tweaked toml for git repo https://github.com/Khanh-21522203/RustRTMP written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Khanh-21522203/RustRTMP on toolchain c9af9c1dc85a55e309345030ff9cb7ea247953fa [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c9af9c1dc85a55e309345030ff9cb7ea247953fa" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Khanh-21522203/RustRTMP 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" "+c9af9c1dc85a55e309345030ff9cb7ea247953fa" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded rand_core v0.10.0-rc-2 [INFO] [stderr] Downloaded block-buffer v0.11.0-rc.5 [INFO] [stderr] Downloaded digest v0.11.0-rc.4 [INFO] [stderr] Downloaded chacha20 v0.10.0-rc.3 [INFO] [stderr] Downloaded hmac v0.13.0-rc.3 [INFO] [stderr] Downloaded openssl-sys v0.9.110 [INFO] [stderr] Downloaded rand v0.10.0-rc.1 [INFO] [stderr] Downloaded cc v1.2.44 [INFO] [stderr] Downloaded openssl v0.10.74 [INFO] [stderr] Downloaded syn v2.0.109 [INFO] [stderr] Downloaded crypto-common v0.2.0-rc.5 [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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+c9af9c1dc85a55e309345030ff9cb7ea247953fa" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f1dbe019a2e0bb732d21793139dd45e3e67f987689a82e98f52e9df3b2629a5b [INFO] running `Command { std: "docker" "start" "-a" "f1dbe019a2e0bb732d21793139dd45e3e67f987689a82e98f52e9df3b2629a5b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f1dbe019a2e0bb732d21793139dd45e3e67f987689a82e98f52e9df3b2629a5b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f1dbe019a2e0bb732d21793139dd45e3e67f987689a82e98f52e9df3b2629a5b", kill_on_drop: false }` [INFO] [stdout] f1dbe019a2e0bb732d21793139dd45e3e67f987689a82e98f52e9df3b2629a5b [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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+c9af9c1dc85a55e309345030ff9cb7ea247953fa" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6ca59920269044bfd0fc0f735688b0f12a06021648ea5fb58ec0fc507f5334ae [INFO] running `Command { std: "docker" "start" "-a" "6ca59920269044bfd0fc0f735688b0f12a06021648ea5fb58ec0fc507f5334ae", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.103 [INFO] [stderr] Compiling quote v1.0.41 [INFO] [stderr] Compiling libc v0.2.177 [INFO] [stderr] Compiling find-msvc-tools v0.1.4 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Checking memchr v2.7.6 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Checking regex-syntax v0.8.8 [INFO] [stderr] Compiling cc v1.2.44 [INFO] [stderr] Compiling openssl v0.10.74 [INFO] [stderr] Checking log v0.4.28 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking const-oid v0.10.1 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Checking rand_core v0.10.0-rc-2 [INFO] [stderr] Checking percent-encoding v2.3.2 [INFO] [stderr] Checking anstyle-query v1.1.4 [INFO] [stderr] Checking anstream v0.6.21 [INFO] [stderr] Checking form_urlencoded v1.2.2 [INFO] [stderr] Compiling syn v2.0.109 [INFO] [stderr] Checking hybrid-array v0.4.5 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking mio v1.1.0 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking socket2 v0.6.1 [INFO] [stderr] Checking signal-hook-registry v1.4.6 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking chacha20 v0.10.0-rc.3 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking crypto-common v0.2.0-rc.5 [INFO] [stderr] Checking block-buffer v0.11.0-rc.5 [INFO] [stderr] Compiling openssl-sys v0.9.110 [INFO] [stderr] Checking jiff v0.2.15 [INFO] [stderr] Checking rand v0.10.0-rc.1 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking uuid v1.18.1 [INFO] [stderr] Checking digest v0.11.0-rc.4 [INFO] [stderr] Checking hmac v0.13.0-rc.3 [INFO] [stderr] Checking sha2 v0.11.0-rc.3 [INFO] [stderr] Checking regex v1.12.2 [INFO] [stderr] Checking env_filter v0.1.4 [INFO] [stderr] Checking env_logger v0.11.8 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v2.0.17 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Checking tokio v1.48.0 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking thiserror v2.0.17 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking zerovec v0.11.5 [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] Checking icu_provider v2.1.1 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking icu_properties v2.1.1 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking RustRTMP v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/utils/error.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt; [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: `std::error::Error as StdError` [INFO] [stdout] --> src/utils/error.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::error::Error as StdError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `calculate_hmac_sha256` [INFO] [stdout] --> src/handshake/c0c1.rs:3:43 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::utils::{generate_random_bytes, calculate_hmac_sha256, current_timestamp}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> src/handshake/mod.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::{Error, Result}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> src/chunk/stream.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{Error, Result}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ByteBuffer` [INFO] [stdout] --> src/chunk/reader.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{ByteBuffer, Error, Result, DEFAULT_CHUNK_SIZE}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ChunkStream` [INFO] [stdout] --> src/chunk/reader.rs:3:28 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::chunk::stream::{ChunkStream, ChunkStreamContext}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stream::*` [INFO] [stdout] --> src/chunk/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use stream::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: private item shadows public glob re-export [INFO] [stdout] --> src/message/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::message::types::MessageType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the name `MessageType` in the type namespace is supposed to be publicly re-exported here [INFO] [stdout] --> src/message/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use types::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] note: but the private item here shadows it [INFO] [stdout] --> src/message/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::message::types::MessageType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(hidden_glob_reexports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtmpData` [INFO] [stdout] --> src/message/dispatcher.rs:2:48 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::protocol::{RtmpPacket, RtmpCommand, RtmpData}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `C0C1` [INFO] [stdout] --> src/connection/connection.rs:2:40 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::handshake::{HandshakeState, C0C1, S0S1S2, validate_c0c1, generate_s0s1s2, validate_c2}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::net::TcpStream` [INFO] [stdout] --> src/connection/connection.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Error` and `Result` [INFO] [stdout] --> src/server/context.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{Error, Result}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ServerConfigBuilder` [INFO] [stdout] --> src/server/mod.rs:10:32 [INFO] [stdout] | [INFO] [stdout] 10 | pub use config::{ServerConfig, ServerConfigBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ClientConfigBuilder` [INFO] [stdout] --> src/client/mod.rs:6:32 [INFO] [stdout] | [INFO] [stdout] 6 | pub use config::{ClientConfig, ClientConfigBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/handlers/delete_stream.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Error` and `Result` [INFO] [stdout] --> src/stream/stream.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{Error, Result}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RtmpData` and `RtmpPacket` [INFO] [stdout] --> src/stream/stream.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::protocol::{RtmpPacket, RtmpData}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Amf0Decoder` [INFO] [stdout] --> src/processing/metadata.rs:2:29 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::amf::{Amf0Value, Amf0Decoder}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: ambiguous glob re-exports [INFO] [stdout] --> src/lib.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use protocol::*; [INFO] [stdout] | ^^^^^^^^^^^ the name `constants` in the type namespace is first re-exported here [INFO] [stdout] 18 | pub use message::*; [INFO] [stdout] | ---------- but the name `constants` in the type namespace is also re-exported here [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(ambiguous_glob_reexports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/utils/error.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt; [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: `std::error::Error as StdError` [INFO] [stdout] --> src/utils/error.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::error::Error as StdError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `calculate_hmac_sha256` [INFO] [stdout] --> src/handshake/c0c1.rs:3:43 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::utils::{generate_random_bytes, calculate_hmac_sha256, current_timestamp}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> src/handshake/mod.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::{Error, Result}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Error` [INFO] [stdout] --> src/chunk/stream.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{Error, Result}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ByteBuffer` [INFO] [stdout] --> src/chunk/reader.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{ByteBuffer, Error, Result, DEFAULT_CHUNK_SIZE}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ChunkStream` [INFO] [stdout] --> src/chunk/reader.rs:3:28 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::chunk::stream::{ChunkStream, ChunkStreamContext}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stream::*` [INFO] [stdout] --> src/chunk/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use stream::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: private item shadows public glob re-export [INFO] [stdout] --> src/message/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::message::types::MessageType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the name `MessageType` in the type namespace is supposed to be publicly re-exported here [INFO] [stdout] --> src/message/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use types::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] note: but the private item here shadows it [INFO] [stdout] --> src/message/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::message::types::MessageType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(hidden_glob_reexports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtmpData` [INFO] [stdout] --> src/message/dispatcher.rs:2:48 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::protocol::{RtmpPacket, RtmpCommand, RtmpData}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `C0C1` [INFO] [stdout] --> src/connection/connection.rs:2:40 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::handshake::{HandshakeState, C0C1, S0S1S2, validate_c0c1, generate_s0s1s2, validate_c2}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::net::TcpStream` [INFO] [stdout] --> src/connection/connection.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Error` and `Result` [INFO] [stdout] --> src/server/context.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{Error, Result}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ServerConfigBuilder` [INFO] [stdout] --> src/server/mod.rs:10:32 [INFO] [stdout] | [INFO] [stdout] 10 | pub use config::{ServerConfig, ServerConfigBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ClientConfigBuilder` [INFO] [stdout] --> src/client/mod.rs:6:32 [INFO] [stdout] | [INFO] [stdout] 6 | pub use config::{ClientConfig, ClientConfigBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/handlers/delete_stream.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Error` and `Result` [INFO] [stdout] --> src/stream/stream.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{Error, Result}; [INFO] [stdout] | ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RtmpData` and `RtmpPacket` [INFO] [stdout] --> src/stream/stream.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::protocol::{RtmpPacket, RtmpData}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Amf0Decoder` [INFO] [stdout] --> src/processing/metadata.rs:2:29 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::amf::{Amf0Value, Amf0Decoder}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: ambiguous glob re-exports [INFO] [stdout] --> src/lib.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use protocol::*; [INFO] [stdout] | ^^^^^^^^^^^ the name `constants` in the type namespace is first re-exported here [INFO] [stdout] 18 | pub use message::*; [INFO] [stdout] | ---------- but the name `constants` in the type namespace is also re-exported here [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(ambiguous_glob_reexports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/stream/publisher.rs:75:39 [INFO] [stdout] | [INFO] [stdout] 75 | pub async fn process_video(&self, mut packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/stream/publisher.rs:75:39 [INFO] [stdout] | [INFO] [stdout] 75 | pub async fn process_video(&self, mut packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `chunk_size` [INFO] [stdout] --> src/protocol/packet.rs:63:33 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn create_chunks(&self, chunk_size: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk_size` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `num_chunks` [INFO] [stdout] --> src/chunk/writer.rs:59:13 [INFO] [stdout] | [INFO] [stdout] 59 | let num_chunks = (payload_len + self.chunk_size_out - 1) / self.chunk_size_out; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_chunks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/connection/connection.rs:253:35 [INFO] [stdout] | [INFO] [stdout] 253 | fn start_write_loop(&self, mut writer: W) -> tokio::task::JoinHandle> [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `writer` [INFO] [stdout] --> src/connection/connection.rs:253:35 [INFO] [stdout] | [INFO] [stdout] 253 | fn start_write_loop(&self, mut writer: W) -> tokio::task::JoinHandle> [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `packet` [INFO] [stdout] --> src/connection/connection.rs:300:37 [INFO] [stdout] | [INFO] [stdout] 300 | pub async fn send_packet(&self, packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 34 | MSG_TYPE_ABORT => { [INFO] [stdout] | ^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 49 | MSG_TYPE_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 53 | MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 57 | MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 61 | _ => Err(Error::protocol("Unknown control message type")), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_SET_CHUNK_SIZE` [INFO] [stdout] --> src/connection/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_SET_CHUNK_SIZE` [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 15 | _MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_ABORT` [INFO] [stdout] --> src/connection/mod.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | MSG_TYPE_ABORT => { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_ABORT` [INFO] [stdout] | [INFO] [stdout] 34 | protocol::constants::MSG_TYPE_ABORT => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 34 | _MSG_TYPE_ABORT => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `chunk_stream_id` [INFO] [stdout] --> src/connection/mod.rs:39:17 [INFO] [stdout] | [INFO] [stdout] 39 | let chunk_stream_id = u32::from_be_bytes([ [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk_stream_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_ACK` [INFO] [stdout] --> src/connection/mod.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | MSG_TYPE_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_ACK` [INFO] [stdout] | [INFO] [stdout] 49 | protocol::constants::MSG_TYPE_ACK => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 49 | _MSG_TYPE_ACK => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_WINDOW_ACK` [INFO] [stdout] --> src/connection/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_WINDOW_ACK` [INFO] [stdout] | [INFO] [stdout] 53 | protocol::constants::MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 53 | _MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_SET_PEER_BW` [INFO] [stdout] --> src/connection/mod.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_SET_PEER_BW` [INFO] [stdout] | [INFO] [stdout] 57 | protocol::constants::MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 57 | _MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `packet_rx` [INFO] [stdout] --> src/server/server.rs:114:25 [INFO] [stdout] | [INFO] [stdout] 114 | let (packet_tx, packet_rx) = tokio::sync::mpsc::channel(100); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet_rx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `packet_rx` [INFO] [stdout] --> src/client/client.rs:106:25 [INFO] [stdout] | [INFO] [stdout] 106 | let (packet_tx, packet_rx) = mpsc::channel(100); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet_rx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `reset` [INFO] [stdout] --> src/handlers/play.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | let reset = command.arguments.get(3) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_reset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `publisher` [INFO] [stdout] --> src/handlers/play.rs:103:13 [INFO] [stdout] | [INFO] [stdout] 103 | let publisher = self.find_publisher(&stream_name, context.clone()).await?; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_publisher` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream_id` [INFO] [stdout] --> src/handlers/delete_stream.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | let stream_id = command.arguments.first() [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `references` is never read [INFO] [stdout] --> src/amf/decoder.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Amf0Decoder<'a> { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 6 | buffer: &'a mut ByteBuffer, [INFO] [stdout] 7 | references: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `read_buffer` is never read [INFO] [stdout] --> src/chunk/reader.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct ChunkReader { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | read_buffer: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `priority_queue` is never read [INFO] [stdout] --> src/message/queue.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct MessageQueue { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 44 | priority_queue: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MSG_TYPE_AGGREGATE` is never used [INFO] [stdout] --> src/message/types.rs:88:15 [INFO] [stdout] | [INFO] [stdout] 88 | pub const MSG_TYPE_AGGREGATE: u8 = 22; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MSG_TYPE_SHARED_OBJECT_AMF0` is never used [INFO] [stdout] --> src/message/types.rs:89:15 [INFO] [stdout] | [INFO] [stdout] 89 | pub const MSG_TYPE_SHARED_OBJECT_AMF0: u8 = 19; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MSG_TYPE_SHARED_OBJECT_AMF3` is never used [INFO] [stdout] --> src/message/types.rs:90:15 [INFO] [stdout] | [INFO] [stdout] 90 | pub const MSG_TYPE_SHARED_OBJECT_AMF3: u8 = 16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `chunk_writer` and `stream_manager` are never read [INFO] [stdout] --> src/connection/connection.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Connection { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 28 | chunk_writer: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | stream_manager: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `bind_server` is never used [INFO] [stdout] --> src/server/mod.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 15 | pub async fn bind_server(config: &config::ServerConfig) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `connect_to_server` is never used [INFO] [stdout] --> src/client/mod.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | pub async fn connect_to_server(url: &str, connect_timeout: Duration) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/client/client.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct RtmpClient { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 16 | /// Client configuration [INFO] [stdout] 17 | config: Arc, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `CommandHandler` is never used [INFO] [stdout] --> src/handlers/mod.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub trait CommandHandler: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandHandlerRegistry` is never constructed [INFO] [stdout] --> src/handlers/mod.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 37 | pub struct CommandHandlerRegistry { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `register`, and `handle` are never used [INFO] [stdout] --> src/handlers/mod.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 41 | impl CommandHandlerRegistry { [INFO] [stdout] | --------------------------- associated items in this implementation [INFO] [stdout] 42 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn register(&mut self, handler: Arc) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub async fn handle( [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_connect_params` is never used [INFO] [stdout] --> src/handlers/mod.rs:77:8 [INFO] [stdout] | [INFO] [stdout] 77 | pub fn validate_connect_params(params: &Amf0Value) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_connect_response` is never used [INFO] [stdout] --> src/handlers/mod.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn generate_connect_response(success: bool, transaction_id: f64) -> RtmpCommand { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConnectHandler` is never constructed [INFO] [stdout] --> src/handlers/connect.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct ConnectHandler { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `validate_connect_params`, `create_connect_result`, and `send_server_bandwidth` are never used [INFO] [stdout] --> src/handlers/connect.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl ConnectHandler { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | fn validate_connect_params(&self, command: &RtmpCommand) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | fn create_connect_result(&self, transaction_id: f64) -> RtmpCommand { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | async fn send_server_bandwidth(&self, context: Arc) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConnectParams` is never constructed [INFO] [stdout] --> src/handlers/connect.rs:123:8 [INFO] [stdout] | [INFO] [stdout] 123 | struct ConnectParams { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_window_ack_packet` is never used [INFO] [stdout] --> src/handlers/connect.rs:131:4 [INFO] [stdout] | [INFO] [stdout] 131 | fn create_window_ack_packet(size: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_peer_bandwidth_packet` is never used [INFO] [stdout] --> src/handlers/connect.rs:146:4 [INFO] [stdout] | [INFO] [stdout] 146 | fn create_peer_bandwidth_packet(size: u32, limit_type: u8) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_chunk_size_packet` is never used [INFO] [stdout] --> src/handlers/connect.rs:162:4 [INFO] [stdout] | [INFO] [stdout] 162 | fn create_chunk_size_packet(size: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateStreamHandler` is never constructed [INFO] [stdout] --> src/handlers/create_stream.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct CreateStreamHandler { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `allocate_stream_id` are never used [INFO] [stdout] --> src/handlers/create_stream.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl CreateStreamHandler { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 12 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | fn allocate_stream_id(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PublishHandler` is never constructed [INFO] [stdout] --> src/handlers/publish.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct PublishHandler; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `validate_publish`, and `create_publish_status` are never used [INFO] [stdout] --> src/handlers/publish.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 7 | impl PublishHandler { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 8 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 12 | async fn validate_publish( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | fn create_publish_status(&self, stream_name: &str, stream_id: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_stream_begin_packet` is never used [INFO] [stdout] --> src/handlers/publish.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn create_stream_begin_packet(stream_id: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PlayHandler` is never constructed [INFO] [stdout] --> src/handlers/play.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct PlayHandler; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `find_publisher`, and `create_play_status_messages` are never used [INFO] [stdout] --> src/handlers/play.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl PlayHandler { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 9 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 13 | async fn find_publisher( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | fn create_play_status_messages(&self, stream_name: &str, stream_id: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_sample_access_packet` is never used [INFO] [stdout] --> src/handlers/play.rs:128:4 [INFO] [stdout] | [INFO] [stdout] 128 | fn create_sample_access_packet(stream_id: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DeleteStreamHandler` is never constructed [INFO] [stdout] --> src/handlers/delete_stream.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct DeleteStreamHandler; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/handlers/delete_stream.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl DeleteStreamHandler { [INFO] [stdout] | ------------------------ associated function in this implementation [INFO] [stdout] 9 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamInfo` is never constructed [INFO] [stdout] --> src/stream/stream.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct StreamInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `StreamType` is never used [INFO] [stdout] --> src/stream/stream.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | pub enum StreamType { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamMetadata` is never constructed [INFO] [stdout] --> src/stream/stream.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct StreamMetadata { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_amf` and `to_amf` are never used [INFO] [stdout] --> src/stream/stream.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl StreamMetadata { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 71 | /// Create from AMF metadata [INFO] [stdout] 72 | pub fn from_amf(data: &HashMap) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn to_amf(&self) -> HashMap { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_standard_metadata_key` is never used [INFO] [stdout] --> src/stream/stream.rs:141:4 [INFO] [stdout] | [INFO] [stdout] 141 | fn is_standard_metadata_key(key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Stream` is never constructed [INFO] [stdout] --> src/stream/stream.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 148 | pub struct Stream { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamStats` is never constructed [INFO] [stdout] --> src/stream/stream.rs:157:12 [INFO] [stdout] | [INFO] [stdout] 157 | pub struct StreamStats { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `info`, `set_metadata`, `update_stats`, and `stats` are never used [INFO] [stdout] --> src/stream/stream.rs:182:12 [INFO] [stdout] | [INFO] [stdout] 180 | impl Stream { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 181 | /// Create new stream [INFO] [stdout] 182 | pub fn new(id: u32, name: String, stream_type: StreamType) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 198 | pub async fn info(&self) -> StreamInfo { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 203 | pub async fn set_metadata(&self, metadata: StreamMetadata) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub async fn update_stats(&self, updater: F) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub async fn stats(&self) -> StreamStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Publisher` is never constructed [INFO] [stdout] --> src/stream/publisher.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Publisher { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SubscriberHandle` is never constructed [INFO] [stdout] --> src/stream/publisher.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct SubscriberHandle { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/stream/publisher.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl Publisher { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 41 | /// Create new publisher [INFO] [stdout] 42 | pub fn new(stream: Arc, gop_cache_size: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub async fn process_audio(&self, packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub async fn process_video(&self, mut packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub async fn process_metadata(&self, packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub async fn add_subscriber( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub async fn remove_subscriber(&self, id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | async fn send_initial_packets(&self, sender: &mpsc::Sender, stream_id: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | async fn distribute_packet(&self, packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub async fn subscriber_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_keyframe` is never used [INFO] [stdout] --> src/stream/publisher.rs:228:4 [INFO] [stdout] | [INFO] [stdout] 228 | fn is_keyframe(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_aac_sequence_header` is never used [INFO] [stdout] --> src/stream/publisher.rs:238:4 [INFO] [stdout] | [INFO] [stdout] 238 | fn is_aac_sequence_header(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_avc_sequence_header` is never used [INFO] [stdout] --> src/stream/publisher.rs:248:4 [INFO] [stdout] | [INFO] [stdout] 248 | fn is_avc_sequence_header(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Player` is never constructed [INFO] [stdout] --> src/stream/player.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct Player { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PlaybackState` is never used [INFO] [stdout] --> src/stream/player.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum PlaybackState { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/stream/player.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl Player { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 34 | /// Create new player [INFO] [stdout] 35 | pub fn new(stream: Arc, stream_name: String, buffer_time: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub async fn start(&mut self, publisher: Arc) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub async fn stop(&mut self, publisher: Arc) -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub async fn pause(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub async fn resume(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub async fn next_packet(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub async fn state(&self) -> PlaybackState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GopCache` is never constructed [INFO] [stdout] --> src/stream/gop_cache.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct GopCache { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/stream/gop_cache.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl GopCache { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 19 | /// Create new GOP cache [INFO] [stdout] 20 | pub fn new(max_gops: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn add_keyframe(&mut self, packet: RtmpPacket) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn add_frame(&mut self, packet: RtmpPacket) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | fn finish_current_gop(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn get_gop(&self) -> Vec { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn size(&self) -> usize { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn gop_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SoundRate` is never used [INFO] [stdout] --> src/processing/audio.rs:80:10 [INFO] [stdout] | [INFO] [stdout] 80 | pub enum SoundRate { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_bits` and `as_hz` are never used [INFO] [stdout] --> src/processing/audio.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 87 | impl SoundRate { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 88 | pub fn from_bits(bits: u8) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn as_hz(&self) -> u32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SoundSize` is never used [INFO] [stdout] --> src/processing/audio.rs:109:10 [INFO] [stdout] | [INFO] [stdout] 109 | pub enum SoundSize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SoundType` is never used [INFO] [stdout] --> src/processing/audio.rs:115:10 [INFO] [stdout] | [INFO] [stdout] 115 | pub enum SoundType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AudioProcessor` is never constructed [INFO] [stdout] --> src/processing/audio.rs:120:12 [INFO] [stdout] | [INFO] [stdout] 120 | pub struct AudioProcessor { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AACAudioConfig` is never constructed [INFO] [stdout] --> src/processing/audio.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct AACAudioConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process`, `parse_aac_config`, `codec`, and `sample_rate` are never used [INFO] [stdout] --> src/processing/audio.rs:151:12 [INFO] [stdout] | [INFO] [stdout] 149 | impl AudioProcessor { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 150 | /// Create new audio processor [INFO] [stdout] 151 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn process(&mut self, packet: &RtmpPacket) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | fn parse_aac_config(&mut self, data: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub fn codec(&self) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 236 | pub fn sample_rate(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AudioInfo` is never constructed [INFO] [stdout] --> src/processing/audio.rs:241:12 [INFO] [stdout] | [INFO] [stdout] 241 | pub struct AudioInfo { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FrameType` is never used [INFO] [stdout] --> src/processing/video.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | pub enum FrameType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_bits` and `is_keyframe` are never used [INFO] [stdout] --> src/processing/video.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl FrameType { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 73 | pub fn from_bits(bits: u8) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn is_keyframe(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VideoProcessor` is never constructed [INFO] [stdout] --> src/processing/video.rs:89:12 [INFO] [stdout] | [INFO] [stdout] 89 | pub struct VideoProcessor { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AVCVideoConfig` is never constructed [INFO] [stdout] --> src/processing/video.rs:104:12 [INFO] [stdout] | [INFO] [stdout] 104 | pub struct AVCVideoConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process`, `parse_avc_config`, `gop_too_large`, and `codec` are never used [INFO] [stdout] --> src/processing/video.rs:126:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl VideoProcessor { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 125 | /// Create new video processor [INFO] [stdout] 126 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn process(&mut self, packet: &RtmpPacket) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | fn parse_avc_config(&mut self, data: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | pub fn gop_too_large(&self, max_gop_size: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn codec(&self) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VideoInfo` is never constructed [INFO] [stdout] --> src/processing/video.rs:255:12 [INFO] [stdout] | [INFO] [stdout] 255 | pub struct VideoInfo { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MetadataProcessor` is never constructed [INFO] [stdout] --> src/processing/metadata.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct MetadataProcessor { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process`, `parse_metadata`, `get_cached`, and `clear_cache` are never used [INFO] [stdout] --> src/processing/metadata.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl MetadataProcessor { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 15 | /// Create new metadata processor [INFO] [stdout] 16 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn process(&mut self, data: &RtmpData, timestamp: u32) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn parse_metadata(&self, obj: &HashMap) -> Metadata { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn get_cached(&self) -> &HashMap { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn clear_cache(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Metadata` is never constructed [INFO] [stdout] --> src/processing/metadata.rs:103:12 [INFO] [stdout] | [INFO] [stdout] 103 | pub struct Metadata { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_video`, `has_audio`, `resolution`, and `to_amf` are never used [INFO] [stdout] --> src/processing/metadata.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 130 | impl Metadata { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 131 | /// Check if has video [INFO] [stdout] 132 | pub fn has_video(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn has_audio(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn resolution(&self) -> Option<(u32, u32)> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn to_amf(&self) -> HashMap { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_SET_CHUNK_SIZE` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_set_chunk_size` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_ABORT` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | MSG_TYPE_ABORT => { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_abort` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_ACK` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | MSG_TYPE_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_ack` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_WINDOW_ACK` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_window_ack` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_SET_PEER_BW` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_set_peer_bw` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `chunk_size` [INFO] [stdout] --> src/protocol/packet.rs:63:33 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn create_chunks(&self, chunk_size: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk_size` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `num_chunks` [INFO] [stdout] --> src/chunk/writer.rs:59:13 [INFO] [stdout] | [INFO] [stdout] 59 | let num_chunks = (payload_len + self.chunk_size_out - 1) / self.chunk_size_out; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_chunks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/connection/connection.rs:253:35 [INFO] [stdout] | [INFO] [stdout] 253 | fn start_write_loop(&self, mut writer: W) -> tokio::task::JoinHandle> [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upstream_clone` [INFO] [stdout] --> examples/relay_server.rs:82:13 [INFO] [stdout] | [INFO] [stdout] 82 | let upstream_clone = upstream.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upstream_clone` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `writer` [INFO] [stdout] --> src/connection/connection.rs:253:35 [INFO] [stdout] | [INFO] [stdout] 253 | fn start_write_loop(&self, mut writer: W) -> tokio::task::JoinHandle> [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `packet` [INFO] [stdout] --> src/connection/connection.rs:300:37 [INFO] [stdout] | [INFO] [stdout] 300 | pub async fn send_packet(&self, packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_server` is never used [INFO] [stdout] --> tests/integration_test.rs:23:10 [INFO] [stdout] | [INFO] [stdout] 23 | async fn wait_for_server(port: u16, max_attempts: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 34 | MSG_TYPE_ABORT => { [INFO] [stdout] | ^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 49 | MSG_TYPE_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 53 | MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 57 | MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/connection/mod.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ----------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 61 | _ => Err(Error::protocol("Unknown control message type")), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match against the value of constant `MSG_TYPE_SET_CHUNK_SIZE` instead of introducing a new catch-all binding [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_SET_CHUNK_SIZE` [INFO] [stdout] --> src/connection/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_SET_CHUNK_SIZE` [INFO] [stdout] | [INFO] [stdout] 15 | protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 15 | _MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_ABORT` [INFO] [stdout] --> src/connection/mod.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | MSG_TYPE_ABORT => { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_ABORT` [INFO] [stdout] | [INFO] [stdout] 34 | protocol::constants::MSG_TYPE_ABORT => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 34 | _MSG_TYPE_ABORT => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `chunk_stream_id` [INFO] [stdout] --> src/connection/mod.rs:39:17 [INFO] [stdout] | [INFO] [stdout] 39 | let chunk_stream_id = u32::from_be_bytes([ [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk_stream_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_ACK` [INFO] [stdout] --> src/connection/mod.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | MSG_TYPE_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_ACK` [INFO] [stdout] | [INFO] [stdout] 49 | protocol::constants::MSG_TYPE_ACK => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 49 | _MSG_TYPE_ACK => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_WINDOW_ACK` [INFO] [stdout] --> src/connection/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_WINDOW_ACK` [INFO] [stdout] | [INFO] [stdout] 53 | protocol::constants::MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 53 | _MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MSG_TYPE_SET_PEER_BW` [INFO] [stdout] --> src/connection/mod.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_SET_PEER_BW` [INFO] [stdout] | [INFO] [stdout] 57 | protocol::constants::MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | +++++++++++++++++++++ [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 57 | _MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `packet_rx` [INFO] [stdout] --> src/server/server.rs:114:25 [INFO] [stdout] | [INFO] [stdout] 114 | let (packet_tx, packet_rx) = tokio::sync::mpsc::channel(100); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet_rx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `packet_rx` [INFO] [stdout] --> src/client/client.rs:106:25 [INFO] [stdout] | [INFO] [stdout] 106 | let (packet_tx, packet_rx) = mpsc::channel(100); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet_rx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `reset` [INFO] [stdout] --> src/handlers/play.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | let reset = command.arguments.get(3) [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_reset` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `publisher` [INFO] [stdout] --> src/handlers/play.rs:103:13 [INFO] [stdout] | [INFO] [stdout] 103 | let publisher = self.find_publisher(&stream_name, context.clone()).await?; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_publisher` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream_id` [INFO] [stdout] --> src/handlers/delete_stream.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | let stream_id = command.arguments.first() [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `references` is never read [INFO] [stdout] --> src/amf/decoder.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Amf0Decoder<'a> { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 6 | buffer: &'a mut ByteBuffer, [INFO] [stdout] 7 | references: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `read_buffer` is never read [INFO] [stdout] --> src/chunk/reader.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct ChunkReader { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 15 | read_buffer: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `priority_queue` is never read [INFO] [stdout] --> src/message/queue.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct MessageQueue { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 44 | priority_queue: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MSG_TYPE_AGGREGATE` is never used [INFO] [stdout] --> src/message/types.rs:88:15 [INFO] [stdout] | [INFO] [stdout] 88 | pub const MSG_TYPE_AGGREGATE: u8 = 22; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MSG_TYPE_SHARED_OBJECT_AMF0` is never used [INFO] [stdout] --> src/message/types.rs:89:15 [INFO] [stdout] | [INFO] [stdout] 89 | pub const MSG_TYPE_SHARED_OBJECT_AMF0: u8 = 19; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MSG_TYPE_SHARED_OBJECT_AMF3` is never used [INFO] [stdout] --> src/message/types.rs:90:15 [INFO] [stdout] | [INFO] [stdout] 90 | pub const MSG_TYPE_SHARED_OBJECT_AMF3: u8 = 16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `chunk_writer` and `stream_manager` are never read [INFO] [stdout] --> src/connection/connection.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Connection { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 28 | chunk_writer: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | stream_manager: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `bind_server` is never used [INFO] [stdout] --> src/server/mod.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 15 | pub async fn bind_server(config: &config::ServerConfig) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `connect_to_server` is never used [INFO] [stdout] --> src/client/mod.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | pub async fn connect_to_server(url: &str, connect_timeout: Duration) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/client/client.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct RtmpClient { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 16 | /// Client configuration [INFO] [stdout] 17 | config: Arc, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `CommandHandler` is never used [INFO] [stdout] --> src/handlers/mod.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub trait CommandHandler: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CommandHandlerRegistry` is never constructed [INFO] [stdout] --> src/handlers/mod.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 37 | pub struct CommandHandlerRegistry { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `register`, and `handle` are never used [INFO] [stdout] --> src/handlers/mod.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 41 | impl CommandHandlerRegistry { [INFO] [stdout] | --------------------------- associated items in this implementation [INFO] [stdout] 42 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn register(&mut self, handler: Arc) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub async fn handle( [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_connect_params` is never used [INFO] [stdout] --> src/handlers/mod.rs:77:8 [INFO] [stdout] | [INFO] [stdout] 77 | pub fn validate_connect_params(params: &Amf0Value) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_connect_response` is never used [INFO] [stdout] --> src/handlers/mod.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn generate_connect_response(success: bool, transaction_id: f64) -> RtmpCommand { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConnectHandler` is never constructed [INFO] [stdout] --> src/handlers/connect.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct ConnectHandler { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `validate_connect_params`, `create_connect_result`, and `send_server_bandwidth` are never used [INFO] [stdout] --> src/handlers/connect.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl ConnectHandler { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | fn validate_connect_params(&self, command: &RtmpCommand) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | fn create_connect_result(&self, transaction_id: f64) -> RtmpCommand { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | async fn send_server_bandwidth(&self, context: Arc) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConnectParams` is never constructed [INFO] [stdout] --> src/handlers/connect.rs:123:8 [INFO] [stdout] | [INFO] [stdout] 123 | struct ConnectParams { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_window_ack_packet` is never used [INFO] [stdout] --> src/handlers/connect.rs:131:4 [INFO] [stdout] | [INFO] [stdout] 131 | fn create_window_ack_packet(size: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_peer_bandwidth_packet` is never used [INFO] [stdout] --> src/handlers/connect.rs:146:4 [INFO] [stdout] | [INFO] [stdout] 146 | fn create_peer_bandwidth_packet(size: u32, limit_type: u8) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_chunk_size_packet` is never used [INFO] [stdout] --> src/handlers/connect.rs:162:4 [INFO] [stdout] | [INFO] [stdout] 162 | fn create_chunk_size_packet(size: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateStreamHandler` is never constructed [INFO] [stdout] --> src/handlers/create_stream.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct CreateStreamHandler { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `allocate_stream_id` are never used [INFO] [stdout] --> src/handlers/create_stream.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl CreateStreamHandler { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 12 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | fn allocate_stream_id(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PublishHandler` is never constructed [INFO] [stdout] --> src/handlers/publish.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct PublishHandler; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `validate_publish`, and `create_publish_status` are never used [INFO] [stdout] --> src/handlers/publish.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 7 | impl PublishHandler { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 8 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 12 | async fn validate_publish( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | fn create_publish_status(&self, stream_name: &str, stream_id: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_stream_begin_packet` is never used [INFO] [stdout] --> src/handlers/publish.rs:99:8 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn create_stream_begin_packet(stream_id: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PlayHandler` is never constructed [INFO] [stdout] --> src/handlers/play.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct PlayHandler; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `find_publisher`, and `create_play_status_messages` are never used [INFO] [stdout] --> src/handlers/play.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl PlayHandler { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 9 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 13 | async fn find_publisher( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | fn create_play_status_messages(&self, stream_name: &str, stream_id: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_sample_access_packet` is never used [INFO] [stdout] --> src/handlers/play.rs:128:4 [INFO] [stdout] | [INFO] [stdout] 128 | fn create_sample_access_packet(stream_id: u32) -> RtmpPacket { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DeleteStreamHandler` is never constructed [INFO] [stdout] --> src/handlers/delete_stream.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct DeleteStreamHandler; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/handlers/delete_stream.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl DeleteStreamHandler { [INFO] [stdout] | ------------------------ associated function in this implementation [INFO] [stdout] 9 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamInfo` is never constructed [INFO] [stdout] --> src/stream/stream.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct StreamInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `StreamType` is never used [INFO] [stdout] --> src/stream/stream.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | pub enum StreamType { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamMetadata` is never constructed [INFO] [stdout] --> src/stream/stream.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct StreamMetadata { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_amf` and `to_amf` are never used [INFO] [stdout] --> src/stream/stream.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl StreamMetadata { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 71 | /// Create from AMF metadata [INFO] [stdout] 72 | pub fn from_amf(data: &HashMap) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn to_amf(&self) -> HashMap { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_standard_metadata_key` is never used [INFO] [stdout] --> src/stream/stream.rs:141:4 [INFO] [stdout] | [INFO] [stdout] 141 | fn is_standard_metadata_key(key: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Stream` is never constructed [INFO] [stdout] --> src/stream/stream.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 148 | pub struct Stream { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamStats` is never constructed [INFO] [stdout] --> src/stream/stream.rs:157:12 [INFO] [stdout] | [INFO] [stdout] 157 | pub struct StreamStats { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `info`, `set_metadata`, `update_stats`, and `stats` are never used [INFO] [stdout] --> src/stream/stream.rs:182:12 [INFO] [stdout] | [INFO] [stdout] 180 | impl Stream { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 181 | /// Create new stream [INFO] [stdout] 182 | pub fn new(id: u32, name: String, stream_type: StreamType) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 198 | pub async fn info(&self) -> StreamInfo { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 203 | pub async fn set_metadata(&self, metadata: StreamMetadata) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub async fn update_stats(&self, updater: F) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub async fn stats(&self) -> StreamStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Publisher` is never constructed [INFO] [stdout] --> src/stream/publisher.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Publisher { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SubscriberHandle` is never constructed [INFO] [stdout] --> src/stream/publisher.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct SubscriberHandle { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/stream/publisher.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl Publisher { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 41 | /// Create new publisher [INFO] [stdout] 42 | pub fn new(stream: Arc, gop_cache_size: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub async fn process_audio(&self, packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub async fn process_video(&self, mut packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub async fn process_metadata(&self, packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub async fn add_subscriber( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub async fn remove_subscriber(&self, id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | async fn send_initial_packets(&self, sender: &mpsc::Sender, stream_id: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | async fn distribute_packet(&self, packet: RtmpPacket) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub async fn subscriber_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_keyframe` is never used [INFO] [stdout] --> src/stream/publisher.rs:228:4 [INFO] [stdout] | [INFO] [stdout] 228 | fn is_keyframe(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_aac_sequence_header` is never used [INFO] [stdout] --> src/stream/publisher.rs:238:4 [INFO] [stdout] | [INFO] [stdout] 238 | fn is_aac_sequence_header(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_avc_sequence_header` is never used [INFO] [stdout] --> src/stream/publisher.rs:248:4 [INFO] [stdout] | [INFO] [stdout] 248 | fn is_avc_sequence_header(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Player` is never constructed [INFO] [stdout] --> src/stream/player.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct Player { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PlaybackState` is never used [INFO] [stdout] --> src/stream/player.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum PlaybackState { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/stream/player.rs:35:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl Player { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 34 | /// Create new player [INFO] [stdout] 35 | pub fn new(stream: Arc, stream_name: String, buffer_time: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub async fn start(&mut self, publisher: Arc) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub async fn stop(&mut self, publisher: Arc) -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub async fn pause(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub async fn resume(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub async fn next_packet(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub async fn state(&self) -> PlaybackState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `clear` is never used [INFO] [stdout] --> src/stream/gop_cache.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl GopCache { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SoundRate` is never used [INFO] [stdout] --> src/processing/audio.rs:80:10 [INFO] [stdout] | [INFO] [stdout] 80 | pub enum SoundRate { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_bits` and `as_hz` are never used [INFO] [stdout] --> src/processing/audio.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 87 | impl SoundRate { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 88 | pub fn from_bits(bits: u8) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn as_hz(&self) -> u32 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SoundSize` is never used [INFO] [stdout] --> src/processing/audio.rs:109:10 [INFO] [stdout] | [INFO] [stdout] 109 | pub enum SoundSize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SoundType` is never used [INFO] [stdout] --> src/processing/audio.rs:115:10 [INFO] [stdout] | [INFO] [stdout] 115 | pub enum SoundType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AudioProcessor` is never constructed [INFO] [stdout] --> src/processing/audio.rs:120:12 [INFO] [stdout] | [INFO] [stdout] 120 | pub struct AudioProcessor { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AACAudioConfig` is never constructed [INFO] [stdout] --> src/processing/audio.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct AACAudioConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process`, `parse_aac_config`, `codec`, and `sample_rate` are never used [INFO] [stdout] --> src/processing/audio.rs:151:12 [INFO] [stdout] | [INFO] [stdout] 149 | impl AudioProcessor { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 150 | /// Create new audio processor [INFO] [stdout] 151 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn process(&mut self, packet: &RtmpPacket) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | fn parse_aac_config(&mut self, data: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub fn codec(&self) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 236 | pub fn sample_rate(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AudioInfo` is never constructed [INFO] [stdout] --> src/processing/audio.rs:241:12 [INFO] [stdout] | [INFO] [stdout] 241 | pub struct AudioInfo { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FrameType` is never used [INFO] [stdout] --> src/processing/video.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | pub enum FrameType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_bits` and `is_keyframe` are never used [INFO] [stdout] --> src/processing/video.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl FrameType { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 73 | pub fn from_bits(bits: u8) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn is_keyframe(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VideoProcessor` is never constructed [INFO] [stdout] --> src/processing/video.rs:89:12 [INFO] [stdout] | [INFO] [stdout] 89 | pub struct VideoProcessor { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AVCVideoConfig` is never constructed [INFO] [stdout] --> src/processing/video.rs:104:12 [INFO] [stdout] | [INFO] [stdout] 104 | pub struct AVCVideoConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process`, `parse_avc_config`, `gop_too_large`, and `codec` are never used [INFO] [stdout] --> src/processing/video.rs:126:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl VideoProcessor { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 125 | /// Create new video processor [INFO] [stdout] 126 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn process(&mut self, packet: &RtmpPacket) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | fn parse_avc_config(&mut self, data: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | pub fn gop_too_large(&self, max_gop_size: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn codec(&self) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VideoInfo` is never constructed [INFO] [stdout] --> src/processing/video.rs:255:12 [INFO] [stdout] | [INFO] [stdout] 255 | pub struct VideoInfo { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MetadataProcessor` is never constructed [INFO] [stdout] --> src/processing/metadata.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct MetadataProcessor { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process`, `parse_metadata`, `get_cached`, and `clear_cache` are never used [INFO] [stdout] --> src/processing/metadata.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl MetadataProcessor { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 15 | /// Create new metadata processor [INFO] [stdout] 16 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn process(&mut self, data: &RtmpData, timestamp: u32) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn parse_metadata(&self, obj: &HashMap) -> Metadata { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn get_cached(&self) -> &HashMap { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn clear_cache(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Metadata` is never constructed [INFO] [stdout] --> src/processing/metadata.rs:103:12 [INFO] [stdout] | [INFO] [stdout] 103 | pub struct Metadata { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_video`, `has_audio`, `resolution`, and `to_amf` are never used [INFO] [stdout] --> src/processing/metadata.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 130 | impl Metadata { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 131 | /// Check if has video [INFO] [stdout] 132 | pub fn has_video(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn has_audio(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn resolution(&self) -> Option<(u32, u32)> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn to_amf(&self) -> HashMap { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_SET_CHUNK_SIZE` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | MSG_TYPE_SET_CHUNK_SIZE => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_set_chunk_size` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_ABORT` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | MSG_TYPE_ABORT => { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_abort` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_ACK` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | MSG_TYPE_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_ack` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_WINDOW_ACK` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | MSG_TYPE_WINDOW_ACK => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_window_ack` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MSG_TYPE_SET_PEER_BW` should have a snake case name [INFO] [stdout] --> src/connection/mod.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | MSG_TYPE_SET_PEER_BW => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_set_peer_bw` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 54.74s [INFO] running `Command { std: "docker" "inspect" "6ca59920269044bfd0fc0f735688b0f12a06021648ea5fb58ec0fc507f5334ae", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6ca59920269044bfd0fc0f735688b0f12a06021648ea5fb58ec0fc507f5334ae", kill_on_drop: false }` [INFO] [stdout] 6ca59920269044bfd0fc0f735688b0f12a06021648ea5fb58ec0fc507f5334ae