[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] testing Khanh-21522203/RustRTMP against master#2fd6efc32704647e64d3d646d21c4c68eae100e4 for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKhanh-21522203%2FRustRTMP" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-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-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Khanh-21522203/RustRTMP on toolchain 2fd6efc32704647e64d3d646d21c4c68eae100e4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/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" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded crypto-common v0.2.0-rc.5
[INFO] [stderr]   Downloaded windows-result v0.4.1
[INFO] [stderr]   Downloaded digest v0.11.0-rc.4
[INFO] [stderr]   Downloaded tempfile v3.23.0
[INFO] [stderr]   Downloaded windows-strings v0.5.1
[INFO] [stderr]   Downloaded env_filter v0.1.4
[INFO] [stderr]   Downloaded sha2 v0.11.0-rc.3
[INFO] [stderr]   Downloaded windows-interface v0.59.3
[INFO] [stderr]   Downloaded uuid v1.18.1
[INFO] [stderr]   Downloaded async-trait v0.1.89
[INFO] [stderr]   Downloaded windows-core v0.62.2
[INFO] [stderr]   Downloaded hmac v0.13.0-rc.3
[INFO] [stderr]   Downloaded jiff-static v0.2.15
[INFO] [stderr]   Downloaded const-oid v0.10.1
[INFO] [stderr]   Downloaded cc v1.2.44
[INFO] [stderr]   Downloaded rand v0.10.0-rc.1
[INFO] [stderr]   Downloaded openssl-sys v0.9.110
[INFO] [stderr]   Downloaded chacha20 v0.10.0-rc.3
[INFO] [stderr]   Downloaded aho-corasick v1.1.4
[INFO] [stderr]   Downloaded regex v1.12.2
[INFO] [stderr]   Downloaded rand_core v0.10.0-rc-2
[INFO] [stderr]   Downloaded openssl v0.10.74
[INFO] [stderr]   Downloaded chrono v0.4.42
[INFO] [stderr]   Downloaded block-buffer v0.11.0-rc.5
[INFO] [stderr]   Downloaded hybrid-array v0.4.5
[INFO] [stderr]   Downloaded syn v2.0.109
[INFO] [stderr]   Downloaded windows-implement v0.60.2
[INFO] [stderr]   Downloaded iana-time-zone v0.1.64
[INFO] [stderr]   Downloaded regex-syntax v0.8.8
[INFO] [stderr]   Downloaded once_cell_polyfill v1.70.2
[INFO] [stderr]   Downloaded jiff v0.2.15
[INFO] [stderr]   Downloaded regex-automata v0.4.13
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1a4b5e1799748200bae76ecaebd573ad93176bb0e2392c42e9c57b189777125b
[INFO] running `Command { std: "docker" "start" "-a" "1a4b5e1799748200bae76ecaebd573ad93176bb0e2392c42e9c57b189777125b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1a4b5e1799748200bae76ecaebd573ad93176bb0e2392c42e9c57b189777125b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1a4b5e1799748200bae76ecaebd573ad93176bb0e2392c42e9c57b189777125b", kill_on_drop: false }`
[INFO] [stdout] 1a4b5e1799748200bae76ecaebd573ad93176bb0e2392c42e9c57b189777125b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8b9a5d0f561f0d0f05f4daeeadb246400e56b05eb511257d936a9aae6bb12e43
[INFO] running `Command { std: "docker" "start" "-a" "8b9a5d0f561f0d0f05f4daeeadb246400e56b05eb511257d936a9aae6bb12e43", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.4
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]    Compiling cc v1.2.44
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling openssl v0.10.74
[INFO] [stderr]    Compiling syn v2.0.109
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling const-oid v0.10.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling hybrid-array v0.4.5
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling openssl-sys v0.9.110
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling crypto-common v0.2.0-rc.5
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling block-buffer v0.11.0-rc.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling digest v0.11.0-rc.4
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling anstyle-query v1.1.4
[INFO] [stderr]    Compiling rand_core v0.10.0-rc-2
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling chacha20 v0.10.0-rc.3
[INFO] [stderr]    Compiling jiff v0.2.15
[INFO] [stderr]    Compiling rand v0.10.0-rc.1
[INFO] [stderr]    Compiling uuid v1.18.1
[INFO] [stderr]    Compiling sha2 v0.11.0-rc.3
[INFO] [stderr]    Compiling hmac v0.13.0-rc.3
[INFO] [stderr]    Compiling ipnet v2.11.0
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling env_filter v0.1.4
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[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 tokio v1.48.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling env_logger v0.11.8
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling 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: 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<u8> {
[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<W>(&self, mut writer: W) -> tokio::task::JoinHandle<Result<()>>
[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<W>(&self, mut writer: W) -> tokio::task::JoinHandle<Result<()>>
[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<Amf0Value>,
[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<u8>,
[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<RwLock<BinaryHeap<PriorityPacket>>>,
[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<RwLock<ChunkWriter>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     stream_manager: Arc<RwLock<StreamManager>>,
[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<TcpListener> {
[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<TcpStream> {
[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<ClientConfig>,
[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<dyn CommandHandler>) {
[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<ConnectParams> {
[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<ConnectionContext>) -> 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<RtmpPacket> {
[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<String, Amf0Value>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn to_amf(&self) -> HashMap<String, Amf0Value> {
[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<F>(&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<Stream>, 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<RtmpPacket>, 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>, stream_name: String, buffer_time: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub async fn start(&mut self, publisher: Arc<Publisher>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub async fn stop(&mut self, publisher: Arc<Publisher>) -> 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<RtmpPacket> {
[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<RtmpPacket> {
[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<AudioInfo> {
[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<AudioCodec> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn sample_rate(&self) -> Option<u32> {
[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<VideoInfo> {
[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<VideoCodec> {
[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<Metadata> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn parse_metadata(&self, obj: &HashMap<String, Amf0Value>) -> Metadata {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn get_cached(&self) -> &HashMap<String, Amf0Value> {
[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<String, Amf0Value> {
[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 1m 23s
[INFO] running `Command { std: "docker" "inspect" "8b9a5d0f561f0d0f05f4daeeadb246400e56b05eb511257d936a9aae6bb12e43", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8b9a5d0f561f0d0f05f4daeeadb246400e56b05eb511257d936a9aae6bb12e43", kill_on_drop: false }`
[INFO] [stdout] 8b9a5d0f561f0d0f05f4daeeadb246400e56b05eb511257d936a9aae6bb12e43
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 05d1bbb839558a90189881907491180e9f59d7f3fafd705eaef7c1160b9c13ef
[INFO] running `Command { std: "docker" "start" "-a" "05d1bbb839558a90189881907491180e9f59d7f3fafd705eaef7c1160b9c13ef", kill_on_drop: false }`
[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: 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<u8> {
[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<W>(&self, mut writer: W) -> tokio::task::JoinHandle<Result<()>>
[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<W>(&self, mut writer: W) -> tokio::task::JoinHandle<Result<()>>
[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<Amf0Value>,
[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<u8>,
[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<RwLock<BinaryHeap<PriorityPacket>>>,
[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<RwLock<ChunkWriter>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     stream_manager: Arc<RwLock<StreamManager>>,
[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<TcpListener> {
[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<TcpStream> {
[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<ClientConfig>,
[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<dyn CommandHandler>) {
[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<ConnectParams> {
[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<ConnectionContext>) -> 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<RtmpPacket> {
[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<String, Amf0Value>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn to_amf(&self) -> HashMap<String, Amf0Value> {
[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<F>(&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<Stream>, 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<RtmpPacket>, 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>, stream_name: String, buffer_time: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub async fn start(&mut self, publisher: Arc<Publisher>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub async fn stop(&mut self, publisher: Arc<Publisher>) -> 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<RtmpPacket> {
[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<RtmpPacket> {
[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<AudioInfo> {
[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<AudioCodec> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn sample_rate(&self) -> Option<u32> {
[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<VideoInfo> {
[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<VideoCodec> {
[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<Metadata> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn parse_metadata(&self, obj: &HashMap<String, Amf0Value>) -> Metadata {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn get_cached(&self) -> &HashMap<String, Amf0Value> {
[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<String, Amf0Value> {
[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]    Compiling RustRTMP v0.1.0 (/opt/rustwide/workdir)
[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: 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: 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: 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<u8> {
[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<W>(&self, mut writer: W) -> tokio::task::JoinHandle<Result<()>>
[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<W>(&self, mut writer: W) -> tokio::task::JoinHandle<Result<()>>
[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<Amf0Value>,
[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<u8>,
[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<RwLock<BinaryHeap<PriorityPacket>>>,
[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<RwLock<ChunkWriter>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     stream_manager: Arc<RwLock<StreamManager>>,
[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<TcpListener> {
[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<TcpStream> {
[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<ClientConfig>,
[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<dyn CommandHandler>) {
[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<ConnectParams> {
[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<ConnectionContext>) -> 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<RtmpPacket> {
[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<String, Amf0Value>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn to_amf(&self) -> HashMap<String, Amf0Value> {
[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<F>(&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<Stream>, 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<RtmpPacket>, 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>, stream_name: String, buffer_time: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub async fn start(&mut self, publisher: Arc<Publisher>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub async fn stop(&mut self, publisher: Arc<Publisher>) -> 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<RtmpPacket> {
[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<AudioInfo> {
[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<AudioCodec> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn sample_rate(&self) -> Option<u32> {
[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<VideoInfo> {
[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<VideoCodec> {
[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<Metadata> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn parse_metadata(&self, obj: &HashMap<String, Amf0Value>) -> Metadata {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn get_cached(&self) -> &HashMap<String, Amf0Value> {
[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<String, Amf0Value> {
[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 `test` profile [unoptimized + debuginfo] target(s) in 10.39s
[INFO] running `Command { std: "docker" "inspect" "05d1bbb839558a90189881907491180e9f59d7f3fafd705eaef7c1160b9c13ef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "05d1bbb839558a90189881907491180e9f59d7f3fafd705eaef7c1160b9c13ef", kill_on_drop: false }`
[INFO] [stdout] 05d1bbb839558a90189881907491180e9f59d7f3fafd705eaef7c1160b9c13ef
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] ab4b56bae66319ffeb762e0db078fafc77fed3ebe15b8066e595c71a9117ab3e
[INFO] running `Command { std: "docker" "start" "-a" "ab4b56bae66319ffeb762e0db078fafc77fed3ebe15b8066e595c71a9117ab3e", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::fmt`
[INFO] [stderr]  --> src/utils/error.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::fmt;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::error::Error as StdError`
[INFO] [stderr]  --> src/utils/error.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::error::Error as StdError;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `calculate_hmac_sha256`
[INFO] [stderr]  --> src/handshake/c0c1.rs:3:43
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::utils::{generate_random_bytes, calculate_hmac_sha256, current_timestamp};
[INFO] [stderr]   |                                           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Error`
[INFO] [stderr]  --> src/handshake/mod.rs:9:13
[INFO] [stderr]   |
[INFO] [stderr] 9 | use crate::{Error, Result};
[INFO] [stderr]   |             ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Error`
[INFO] [stderr]  --> src/chunk/stream.rs:1:13
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::{Error, Result};
[INFO] [stderr]   |             ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ByteBuffer`
[INFO] [stderr]  --> src/chunk/reader.rs:1:13
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::{ByteBuffer, Error, Result, DEFAULT_CHUNK_SIZE};
[INFO] [stderr]   |             ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ChunkStream`
[INFO] [stderr]  --> src/chunk/reader.rs:3:28
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::chunk::stream::{ChunkStream, ChunkStreamContext};
[INFO] [stderr]   |                            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `stream::*`
[INFO] [stderr]  --> src/chunk/mod.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use stream::*;
[INFO] [stderr]   |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: private item shadows public glob re-export
[INFO] [stderr]   --> src/message/mod.rs:1:5
[INFO] [stderr]    |
[INFO] [stderr]  1 | use crate::message::types::MessageType;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] note: the name `MessageType` in the type namespace is supposed to be publicly re-exported here
[INFO] [stderr]   --> src/message/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use types::*;
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] note: but the private item here shadows it
[INFO] [stderr]   --> src/message/mod.rs:1:5
[INFO] [stderr]    |
[INFO] [stderr]  1 | use crate::message::types::MessageType;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    = note: `#[warn(hidden_glob_reexports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RtmpData`
[INFO] [stderr]  --> src/message/dispatcher.rs:2:48
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::protocol::{RtmpPacket, RtmpCommand, RtmpData};
[INFO] [stderr]   |                                                ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `C0C1`
[INFO] [stderr]  --> src/connection/connection.rs:2:40
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::handshake::{HandshakeState, C0C1, S0S1S2, validate_c0c1, generate_s0s1s2, validate_c2};
[INFO] [stderr]   |                                        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::net::TcpStream`
[INFO] [stderr]  --> src/connection/connection.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use tokio::net::TcpStream;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Error` and `Result`
[INFO] [stderr]  --> src/server/context.rs:1:13
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::{Error, Result};
[INFO] [stderr]   |             ^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ServerConfigBuilder`
[INFO] [stderr]   --> src/server/mod.rs:10:32
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use config::{ServerConfig, ServerConfigBuilder};
[INFO] [stderr]    |                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ClientConfigBuilder`
[INFO] [stderr]  --> src/client/mod.rs:6:32
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub use config::{ClientConfig, ClientConfigBuilder};
[INFO] [stderr]   |                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `async_trait::async_trait`
[INFO] [stderr]  --> src/handlers/delete_stream.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use async_trait::async_trait;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Error` and `Result`
[INFO] [stderr]  --> src/stream/stream.rs:1:13
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::{Error, Result};
[INFO] [stderr]   |             ^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `RtmpData` and `RtmpPacket`
[INFO] [stderr]  --> src/stream/stream.rs:2:23
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::protocol::{RtmpPacket, RtmpData};
[INFO] [stderr]   |                       ^^^^^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Amf0Decoder`
[INFO] [stderr]  --> src/processing/metadata.rs:2:29
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::amf::{Amf0Value, Amf0Decoder};
[INFO] [stderr]   |                             ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: ambiguous glob re-exports
[INFO] [stderr]   --> src/lib.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub use protocol::*;
[INFO] [stderr]    |         ^^^^^^^^^^^ the name `constants` in the type namespace is first re-exported here
[INFO] [stderr] 18 | pub use message::*;
[INFO] [stderr]    |         ---------- but the name `constants` in the type namespace is also re-exported here
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(ambiguous_glob_reexports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/stream/publisher.rs:75:39
[INFO] [stderr]    |
[INFO] [stderr] 75 |     pub async fn process_video(&self, mut packet: RtmpPacket) -> Result<()> {
[INFO] [stderr]    |                                       ----^^^^^^
[INFO] [stderr]    |                                       |
[INFO] [stderr]    |                                       help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `chunk_size`
[INFO] [stderr]   --> src/protocol/packet.rs:63:33
[INFO] [stderr]    |
[INFO] [stderr] 63 |     pub fn create_chunks(&self, chunk_size: usize) -> Vec<u8> {
[INFO] [stderr]    |                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk_size`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num_chunks`
[INFO] [stderr]   --> src/chunk/writer.rs:59:13
[INFO] [stderr]    |
[INFO] [stderr] 59 |         let num_chunks = (payload_len + self.chunk_size_out - 1) / self.chunk_size_out;
[INFO] [stderr]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_chunks`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/connection/connection.rs:253:35
[INFO] [stderr]     |
[INFO] [stderr] 253 |     fn start_write_loop<W>(&self, mut writer: W) -> tokio::task::JoinHandle<Result<()>>
[INFO] [stderr]     |                                   ----^^^^^^
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `writer`
[INFO] [stderr]    --> src/connection/connection.rs:253:35
[INFO] [stderr]     |
[INFO] [stderr] 253 |     fn start_write_loop<W>(&self, mut writer: W) -> tokio::task::JoinHandle<Result<()>>
[INFO] [stderr]     |                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `packet`
[INFO] [stderr]    --> src/connection/connection.rs:300:37
[INFO] [stderr]     |
[INFO] [stderr] 300 |     pub async fn send_packet(&self, packet: RtmpPacket) -> Result<()> {
[INFO] [stderr]     |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]   --> src/connection/mod.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 15 |         MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         ----------------------- matches any value
[INFO] [stderr] ...
[INFO] [stderr] 34 |         MSG_TYPE_ABORT => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 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] [stderr]    |
[INFO] [stderr] 15 |         protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]   --> src/connection/mod.rs:49:9
[INFO] [stderr]    |
[INFO] [stderr] 15 |         MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         ----------------------- matches any value
[INFO] [stderr] ...
[INFO] [stderr] 49 |         MSG_TYPE_ACK => {
[INFO] [stderr]    |         ^^^^^^^^^^^^ no value can reach this
[INFO] [stderr]    |
[INFO] [stderr] 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] [stderr]    |
[INFO] [stderr] 15 |         protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]   --> src/connection/mod.rs:53:9
[INFO] [stderr]    |
[INFO] [stderr] 15 |         MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         ----------------------- matches any value
[INFO] [stderr] ...
[INFO] [stderr] 53 |         MSG_TYPE_WINDOW_ACK => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr]    |
[INFO] [stderr] 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] [stderr]    |
[INFO] [stderr] 15 |         protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]   --> src/connection/mod.rs:57:9
[INFO] [stderr]    |
[INFO] [stderr] 15 |         MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         ----------------------- matches any value
[INFO] [stderr] ...
[INFO] [stderr] 57 |         MSG_TYPE_SET_PEER_BW => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr]    |
[INFO] [stderr] 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] [stderr]    |
[INFO] [stderr] 15 |         protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]   --> src/connection/mod.rs:61:9
[INFO] [stderr]    |
[INFO] [stderr] 15 |         MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         ----------------------- matches any value
[INFO] [stderr] ...
[INFO] [stderr] 61 |         _ => Err(Error::protocol("Unknown control message type")),
[INFO] [stderr]    |         ^ no value can reach this
[INFO] [stderr]    |
[INFO] [stderr] 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] [stderr]    |
[INFO] [stderr] 15 |         protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `MSG_TYPE_SET_CHUNK_SIZE`
[INFO] [stderr]   --> src/connection/mod.rs:15:9
[INFO] [stderr]    |
[INFO] [stderr] 15 |         MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_SET_CHUNK_SIZE`
[INFO] [stderr]    |
[INFO] [stderr] 15 |         protocol::constants::MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 15 |         _MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         +
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `MSG_TYPE_ABORT`
[INFO] [stderr]   --> src/connection/mod.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 34 |         MSG_TYPE_ABORT => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_ABORT`
[INFO] [stderr]    |
[INFO] [stderr] 34 |         protocol::constants::MSG_TYPE_ABORT => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 34 |         _MSG_TYPE_ABORT => {
[INFO] [stderr]    |         +
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `chunk_stream_id`
[INFO] [stderr]   --> src/connection/mod.rs:39:17
[INFO] [stderr]    |
[INFO] [stderr] 39 |             let chunk_stream_id = u32::from_be_bytes([
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk_stream_id`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `MSG_TYPE_ACK`
[INFO] [stderr]   --> src/connection/mod.rs:49:9
[INFO] [stderr]    |
[INFO] [stderr] 49 |         MSG_TYPE_ACK => {
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_ACK`
[INFO] [stderr]    |
[INFO] [stderr] 49 |         protocol::constants::MSG_TYPE_ACK => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 49 |         _MSG_TYPE_ACK => {
[INFO] [stderr]    |         +
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `MSG_TYPE_WINDOW_ACK`
[INFO] [stderr]   --> src/connection/mod.rs:53:9
[INFO] [stderr]    |
[INFO] [stderr] 53 |         MSG_TYPE_WINDOW_ACK => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_WINDOW_ACK`
[INFO] [stderr]    |
[INFO] [stderr] 53 |         protocol::constants::MSG_TYPE_WINDOW_ACK => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 53 |         _MSG_TYPE_WINDOW_ACK => {
[INFO] [stderr]    |         +
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `MSG_TYPE_SET_PEER_BW`
[INFO] [stderr]   --> src/connection/mod.rs:57:9
[INFO] [stderr]    |
[INFO] [stderr] 57 |         MSG_TYPE_SET_PEER_BW => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MSG_TYPE_SET_PEER_BW`
[INFO] [stderr]    |
[INFO] [stderr] 57 |         protocol::constants::MSG_TYPE_SET_PEER_BW => {
[INFO] [stderr]    |         +++++++++++++++++++++
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 57 |         _MSG_TYPE_SET_PEER_BW => {
[INFO] [stderr]    |         +
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `packet_rx`
[INFO] [stderr]    --> src/server/server.rs:114:25
[INFO] [stderr]     |
[INFO] [stderr] 114 |         let (packet_tx, packet_rx) = tokio::sync::mpsc::channel(100);
[INFO] [stderr]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet_rx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `packet_rx`
[INFO] [stderr]    --> src/client/client.rs:106:25
[INFO] [stderr]     |
[INFO] [stderr] 106 |         let (packet_tx, packet_rx) = mpsc::channel(100);
[INFO] [stderr]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_packet_rx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `reset`
[INFO] [stderr]   --> src/handlers/play.rs:93:13
[INFO] [stderr]    |
[INFO] [stderr] 93 |         let reset = command.arguments.get(3)
[INFO] [stderr]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_reset`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `publisher`
[INFO] [stderr]    --> src/handlers/play.rs:103:13
[INFO] [stderr]     |
[INFO] [stderr] 103 |         let publisher = self.find_publisher(&stream_name, context.clone()).await?;
[INFO] [stderr]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_publisher`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `stream_id`
[INFO] [stderr]   --> src/handlers/delete_stream.rs:26:13
[INFO] [stderr]    |
[INFO] [stderr] 26 |         let stream_id = command.arguments.first()
[INFO] [stderr]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream_id`
[INFO] [stderr] 
[INFO] [stderr] warning: field `references` is never read
[INFO] [stderr]  --> src/amf/decoder.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub struct Amf0Decoder<'a> {
[INFO] [stderr]   |            ----------- field in this struct
[INFO] [stderr] 6 |     buffer: &'a mut ByteBuffer,
[INFO] [stderr] 7 |     references: Vec<Amf0Value>,
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `read_buffer` is never read
[INFO] [stderr]   --> src/chunk/reader.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub struct ChunkReader {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 15 |     read_buffer: Vec<u8>,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `priority_queue` is never read
[INFO] [stderr]   --> src/message/queue.rs:44:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub struct MessageQueue {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 44 |     priority_queue: Arc<RwLock<BinaryHeap<PriorityPacket>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MSG_TYPE_AGGREGATE` is never used
[INFO] [stderr]   --> src/message/types.rs:88:15
[INFO] [stderr]    |
[INFO] [stderr] 88 |     pub const MSG_TYPE_AGGREGATE: u8 = 22;
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MSG_TYPE_SHARED_OBJECT_AMF0` is never used
[INFO] [stderr]   --> src/message/types.rs:89:15
[INFO] [stderr]    |
[INFO] [stderr] 89 |     pub const MSG_TYPE_SHARED_OBJECT_AMF0: u8 = 19;
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MSG_TYPE_SHARED_OBJECT_AMF3` is never used
[INFO] [stderr]   --> src/message/types.rs:90:15
[INFO] [stderr]    |
[INFO] [stderr] 90 |     pub const MSG_TYPE_SHARED_OBJECT_AMF3: u8 = 16;
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `chunk_writer` and `stream_manager` are never read
[INFO] [stderr]   --> src/connection/connection.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub struct Connection {
[INFO] [stderr]    |            ---------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 28 |     chunk_writer: Arc<RwLock<ChunkWriter>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 37 |     stream_manager: Arc<RwLock<StreamManager>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `bind_server` is never used
[INFO] [stderr]   --> src/server/mod.rs:15:14
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub async fn bind_server(config: &config::ServerConfig) -> Result<TcpListener> {
[INFO] [stderr]    |              ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `connect_to_server` is never used
[INFO] [stderr]   --> src/client/mod.rs:13:14
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub async fn connect_to_server(url: &str, connect_timeout: Duration) -> Result<TcpStream> {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `config` is never read
[INFO] [stderr]   --> src/client/client.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct RtmpClient {
[INFO] [stderr]    |            ---------- field in this struct
[INFO] [stderr] 16 |     /// Client configuration
[INFO] [stderr] 17 |     config: Arc<ClientConfig>,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `CommandHandler` is never used
[INFO] [stderr]   --> src/handlers/mod.rs:19:11
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub trait CommandHandler: Send + Sync {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CommandHandlerRegistry` is never constructed
[INFO] [stderr]   --> src/handlers/mod.rs:37:12
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub struct CommandHandlerRegistry {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `register`, and `handle` are never used
[INFO] [stderr]   --> src/handlers/mod.rs:42:12
[INFO] [stderr]    |
[INFO] [stderr] 41 | impl CommandHandlerRegistry {
[INFO] [stderr]    | --------------------------- associated items in this implementation
[INFO] [stderr] 42 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub fn register(&mut self, handler: Arc<dyn CommandHandler>) {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 64 |     pub async fn handle(
[INFO] [stderr]    |                  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `validate_connect_params` is never used
[INFO] [stderr]   --> src/handlers/mod.rs:77:8
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub fn validate_connect_params(params: &Amf0Value) -> Result<()> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `generate_connect_response` is never used
[INFO] [stderr]   --> src/handlers/mod.rs:93:8
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub fn generate_connect_response(success: bool, transaction_id: f64) -> RtmpCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ConnectHandler` is never constructed
[INFO] [stderr]  --> src/handlers/connect.rs:9:12
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub struct ConnectHandler {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `validate_connect_params`, `create_connect_result`, and `send_server_bandwidth` are never used
[INFO] [stderr]   --> src/handlers/connect.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl ConnectHandler {
[INFO] [stderr]    | ------------------- associated items in this implementation
[INFO] [stderr] 15 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 21 |     fn validate_connect_params(&self, command: &RtmpCommand) -> Result<ConnectParams> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 53 |     fn create_connect_result(&self, transaction_id: f64) -> RtmpCommand {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 74 |     async fn send_server_bandwidth(&self, context: Arc<ConnectionContext>) -> Result<()> {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ConnectParams` is never constructed
[INFO] [stderr]    --> src/handlers/connect.rs:123:8
[INFO] [stderr]     |
[INFO] [stderr] 123 | struct ConnectParams {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_window_ack_packet` is never used
[INFO] [stderr]    --> src/handlers/connect.rs:131:4
[INFO] [stderr]     |
[INFO] [stderr] 131 | fn create_window_ack_packet(size: u32) -> RtmpPacket {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_peer_bandwidth_packet` is never used
[INFO] [stderr]    --> src/handlers/connect.rs:146:4
[INFO] [stderr]     |
[INFO] [stderr] 146 | fn create_peer_bandwidth_packet(size: u32, limit_type: u8) -> RtmpPacket {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_chunk_size_packet` is never used
[INFO] [stderr]    --> src/handlers/connect.rs:162:4
[INFO] [stderr]     |
[INFO] [stderr] 162 | fn create_chunk_size_packet(size: u32) -> RtmpPacket {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CreateStreamHandler` is never constructed
[INFO] [stderr]  --> src/handlers/create_stream.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct CreateStreamHandler {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `allocate_stream_id` are never used
[INFO] [stderr]   --> src/handlers/create_stream.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl CreateStreamHandler {
[INFO] [stderr]    | ------------------------ associated items in this implementation
[INFO] [stderr] 12 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 18 |     fn allocate_stream_id(&self) -> u32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PublishHandler` is never constructed
[INFO] [stderr]  --> src/handlers/publish.rs:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub struct PublishHandler;
[INFO] [stderr]   |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `validate_publish`, and `create_publish_status` are never used
[INFO] [stderr]   --> src/handlers/publish.rs:8:12
[INFO] [stderr]    |
[INFO] [stderr]  7 | impl PublishHandler {
[INFO] [stderr]    | ------------------- associated items in this implementation
[INFO] [stderr]  8 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 12 |     async fn validate_publish(
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 30 |     fn create_publish_status(&self, stream_name: &str, stream_id: u32) -> RtmpPacket {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_stream_begin_packet` is never used
[INFO] [stderr]   --> src/handlers/publish.rs:99:8
[INFO] [stderr]    |
[INFO] [stderr] 99 | pub fn create_stream_begin_packet(stream_id: u32) -> RtmpPacket {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PlayHandler` is never constructed
[INFO] [stderr]  --> src/handlers/play.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct PlayHandler;
[INFO] [stderr]   |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `find_publisher`, and `create_play_status_messages` are never used
[INFO] [stderr]   --> src/handlers/play.rs:9:12
[INFO] [stderr]    |
[INFO] [stderr]  8 | impl PlayHandler {
[INFO] [stderr]    | ---------------- associated items in this implementation
[INFO] [stderr]  9 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 13 |     async fn find_publisher(
[INFO] [stderr]    |              ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     fn create_play_status_messages(&self, stream_name: &str, stream_id: u32) -> Vec<RtmpPacket> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_sample_access_packet` is never used
[INFO] [stderr]    --> src/handlers/play.rs:128:4
[INFO] [stderr]     |
[INFO] [stderr] 128 | fn create_sample_access_packet(stream_id: u32) -> RtmpPacket {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DeleteStreamHandler` is never constructed
[INFO] [stderr]  --> src/handlers/delete_stream.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct DeleteStreamHandler;
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]  --> src/handlers/delete_stream.rs:9:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | impl DeleteStreamHandler {
[INFO] [stderr]   | ------------------------ associated function in this implementation
[INFO] [stderr] 9 |     pub fn new() -> Self {
[INFO] [stderr]   |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StreamInfo` is never constructed
[INFO] [stderr]  --> src/stream/stream.rs:9:12
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub struct StreamInfo {
[INFO] [stderr]   |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `StreamType` is never used
[INFO] [stderr]   --> src/stream/stream.rs:27:10
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub enum StreamType {
[INFO] [stderr]    |          ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StreamMetadata` is never constructed
[INFO] [stderr]   --> src/stream/stream.rs:35:12
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub struct StreamMetadata {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from_amf` and `to_amf` are never used
[INFO] [stderr]   --> src/stream/stream.rs:72:12
[INFO] [stderr]    |
[INFO] [stderr] 70 | impl StreamMetadata {
[INFO] [stderr]    | ------------------- associated items in this implementation
[INFO] [stderr] 71 |     /// Create from AMF metadata
[INFO] [stderr] 72 |     pub fn from_amf(data: &HashMap<String, Amf0Value>) -> Self {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 98 |     pub fn to_amf(&self) -> HashMap<String, Amf0Value> {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_standard_metadata_key` is never used
[INFO] [stderr]    --> src/stream/stream.rs:141:4
[INFO] [stderr]     |
[INFO] [stderr] 141 | fn is_standard_metadata_key(key: &str) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Stream` is never constructed
[INFO] [stderr]    --> src/stream/stream.rs:148:12
[INFO] [stderr]     |
[INFO] [stderr] 148 | pub struct Stream {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StreamStats` is never constructed
[INFO] [stderr]    --> src/stream/stream.rs:157:12
[INFO] [stderr]     |
[INFO] [stderr] 157 | pub struct StreamStats {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `info`, `set_metadata`, `update_stats`, and `stats` are never used
[INFO] [stderr]    --> src/stream/stream.rs:182:12
[INFO] [stderr]     |
[INFO] [stderr] 180 | impl Stream {
[INFO] [stderr]     | ----------- associated items in this implementation
[INFO] [stderr] 181 |     /// Create new stream
[INFO] [stderr] 182 |     pub fn new(id: u32, name: String, stream_type: StreamType) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 198 |     pub async fn info(&self) -> StreamInfo {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 203 |     pub async fn set_metadata(&self, metadata: StreamMetadata) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 209 |     pub async fn update_stats<F>(&self, updater: F)
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 218 |     pub async fn stats(&self) -> StreamStats {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Publisher` is never constructed
[INFO] [stderr]  --> src/stream/publisher.rs:9:12
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub struct Publisher {
[INFO] [stderr]   |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SubscriberHandle` is never constructed
[INFO] [stderr]   --> src/stream/publisher.rs:29:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct SubscriberHandle {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/stream/publisher.rs:42:12
[INFO] [stderr]     |
[INFO] [stderr]  40 | impl Publisher {
[INFO] [stderr]     | -------------- associated items in this implementation
[INFO] [stderr]  41 |     /// Create new publisher
[INFO] [stderr]  42 |     pub fn new(stream: Arc<Stream>, gop_cache_size: usize) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  54 |     pub async fn process_audio(&self, packet: RtmpPacket) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  75 |     pub async fn process_video(&self, mut packet: RtmpPacket) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 105 |     pub async fn process_metadata(&self, packet: RtmpPacket) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 130 |     pub async fn add_subscriber(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 152 |     pub async fn remove_subscriber(&self, id: &str) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 158 |     async fn send_initial_packets(&self, sender: &mpsc::Sender<RtmpPacket>, stream_id: u32) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 196 |     async fn distribute_packet(&self, packet: RtmpPacket) -> Result<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     pub async fn subscriber_count(&self) -> usize {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_keyframe` is never used
[INFO] [stderr]    --> src/stream/publisher.rs:228:4
[INFO] [stderr]     |
[INFO] [stderr] 228 | fn is_keyframe(data: &[u8]) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_aac_sequence_header` is never used
[INFO] [stderr]    --> src/stream/publisher.rs:238:4
[INFO] [stderr]     |
[INFO] [stderr] 238 | fn is_aac_sequence_header(data: &[u8]) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_avc_sequence_header` is never used
[INFO] [stderr]    --> src/stream/publisher.rs:248:4
[INFO] [stderr]     |
[INFO] [stderr] 248 | fn is_avc_sequence_header(data: &[u8]) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Player` is never constructed
[INFO] [stderr]  --> src/stream/player.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct Player {
[INFO] [stderr]   |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `PlaybackState` is never used
[INFO] [stderr]   --> src/stream/player.rs:25:10
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub enum PlaybackState {
[INFO] [stderr]    |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/stream/player.rs:35:12
[INFO] [stderr]     |
[INFO] [stderr]  33 | impl Player {
[INFO] [stderr]     | ----------- associated items in this implementation
[INFO] [stderr]  34 |     /// Create new player
[INFO] [stderr]  35 |     pub fn new(stream: Arc<Stream>, stream_name: String, buffer_time: u32) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  46 |     pub async fn start(&mut self, publisher: Arc<Publisher>) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  66 |     pub async fn stop(&mut self, publisher: Arc<Publisher>) -> Result<()> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  79 |     pub async fn pause(&mut self) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  88 |     pub async fn resume(&mut self) -> Result<()> {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  97 |     pub async fn next_packet(&mut self) -> Option<RtmpPacket> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 112 |     pub async fn state(&self) -> PlaybackState {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GopCache` is never constructed
[INFO] [stderr]  --> src/stream/gop_cache.rs:4:12
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub struct GopCache {
[INFO] [stderr]   |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]   --> src/stream/gop_cache.rs:20:12
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl GopCache {
[INFO] [stderr]    | ------------- associated items in this implementation
[INFO] [stderr] 19 |     /// Create new GOP cache
[INFO] [stderr] 20 |     pub fn new(max_gops: usize) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 30 |     pub fn add_keyframe(&mut self, packet: RtmpPacket) {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub fn add_frame(&mut self, packet: RtmpPacket) {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 51 |     fn finish_current_gop(&mut self) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 68 |     pub fn get_gop(&self) -> Vec<RtmpPacket> {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 85 |     pub fn clear(&mut self) {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 92 |     pub fn size(&self) -> usize {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 97 |     pub fn gop_count(&self) -> usize {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SoundRate` is never used
[INFO] [stderr]   --> src/processing/audio.rs:80:10
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub enum SoundRate {
[INFO] [stderr]    |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from_bits` and `as_hz` are never used
[INFO] [stderr]   --> src/processing/audio.rs:88:12
[INFO] [stderr]    |
[INFO] [stderr] 87 | impl SoundRate {
[INFO] [stderr]    | -------------- associated items in this implementation
[INFO] [stderr] 88 |     pub fn from_bits(bits: u8) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 98 |     pub fn as_hz(&self) -> u32 {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SoundSize` is never used
[INFO] [stderr]    --> src/processing/audio.rs:109:10
[INFO] [stderr]     |
[INFO] [stderr] 109 | pub enum SoundSize {
[INFO] [stderr]     |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SoundType` is never used
[INFO] [stderr]    --> src/processing/audio.rs:115:10
[INFO] [stderr]     |
[INFO] [stderr] 115 | pub enum SoundType {
[INFO] [stderr]     |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AudioProcessor` is never constructed
[INFO] [stderr]    --> src/processing/audio.rs:120:12
[INFO] [stderr]     |
[INFO] [stderr] 120 | pub struct AudioProcessor {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AACAudioConfig` is never constructed
[INFO] [stderr]    --> src/processing/audio.rs:138:12
[INFO] [stderr]     |
[INFO] [stderr] 138 | pub struct AACAudioConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `process`, `parse_aac_config`, `codec`, and `sample_rate` are never used
[INFO] [stderr]    --> src/processing/audio.rs:151:12
[INFO] [stderr]     |
[INFO] [stderr] 149 | impl AudioProcessor {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr] 150 |     /// Create new audio processor
[INFO] [stderr] 151 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 162 |     pub fn process(&mut self, packet: &RtmpPacket) -> Result<AudioInfo> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 208 |     fn parse_aac_config(&mut self, data: &[u8]) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 231 |     pub fn codec(&self) -> Option<AudioCodec> {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 236 |     pub fn sample_rate(&self) -> Option<u32> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AudioInfo` is never constructed
[INFO] [stderr]    --> src/processing/audio.rs:241:12
[INFO] [stderr]     |
[INFO] [stderr] 241 | pub struct AudioInfo {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `FrameType` is never used
[INFO] [stderr]   --> src/processing/video.rs:59:10
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub enum FrameType {
[INFO] [stderr]    |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from_bits` and `is_keyframe` are never used
[INFO] [stderr]   --> src/processing/video.rs:73:12
[INFO] [stderr]    |
[INFO] [stderr] 72 | impl FrameType {
[INFO] [stderr]    | -------------- associated items in this implementation
[INFO] [stderr] 73 |     pub fn from_bits(bits: u8) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 84 |     pub fn is_keyframe(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `VideoProcessor` is never constructed
[INFO] [stderr]   --> src/processing/video.rs:89:12
[INFO] [stderr]    |
[INFO] [stderr] 89 | pub struct VideoProcessor {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AVCVideoConfig` is never constructed
[INFO] [stderr]    --> src/processing/video.rs:104:12
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub struct AVCVideoConfig {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `process`, `parse_avc_config`, `gop_too_large`, and `codec` are never used
[INFO] [stderr]    --> src/processing/video.rs:126:12
[INFO] [stderr]     |
[INFO] [stderr] 124 | impl VideoProcessor {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr] 125 |     /// Create new video processor
[INFO] [stderr] 126 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 136 |     pub fn process(&mut self, packet: &RtmpPacket) -> Result<VideoInfo> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 182 |     fn parse_avc_config(&mut self, data: &[u8]) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 245 |     pub fn gop_too_large(&self, max_gop_size: u32) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 250 |     pub fn codec(&self) -> Option<VideoCodec> {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `VideoInfo` is never constructed
[INFO] [stderr]    --> src/processing/video.rs:255:12
[INFO] [stderr]     |
[INFO] [stderr] 255 | pub struct VideoInfo {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MetadataProcessor` is never constructed
[INFO] [stderr]  --> src/processing/metadata.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct MetadataProcessor {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `process`, `parse_metadata`, `get_cached`, and `clear_cache` are never used
[INFO] [stderr]   --> src/processing/metadata.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl MetadataProcessor {
[INFO] [stderr]    | ---------------------- associated items in this implementation
[INFO] [stderr] 15 |     /// Create new metadata processor
[INFO] [stderr] 16 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 24 |     pub fn process(&mut self, data: &RtmpData, timestamp: u32) -> Result<Metadata> {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     fn parse_metadata(&self, obj: &HashMap<String, Amf0Value>) -> Metadata {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 91 |     pub fn get_cached(&self) -> &HashMap<String, Amf0Value> {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 96 |     pub fn clear_cache(&mut self) {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Metadata` is never constructed
[INFO] [stderr]    --> src/processing/metadata.rs:103:12
[INFO] [stderr]     |
[INFO] [stderr] 103 | pub struct Metadata {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `has_video`, `has_audio`, `resolution`, and `to_amf` are never used
[INFO] [stderr]    --> src/processing/metadata.rs:132:12
[INFO] [stderr]     |
[INFO] [stderr] 130 | impl Metadata {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] 131 |     /// Check if has video
[INFO] [stderr] 132 |     pub fn has_video(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 137 |     pub fn has_audio(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 142 |     pub fn resolution(&self) -> Option<(u32, u32)> {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 150 |     pub fn to_amf(&self) -> HashMap<String, Amf0Value> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable `MSG_TYPE_SET_CHUNK_SIZE` should have a snake case name
[INFO] [stderr]   --> src/connection/mod.rs:15:9
[INFO] [stderr]    |
[INFO] [stderr] 15 |         MSG_TYPE_SET_CHUNK_SIZE => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_set_chunk_size`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable `MSG_TYPE_ABORT` should have a snake case name
[INFO] [stderr]   --> src/connection/mod.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 34 |         MSG_TYPE_ABORT => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_abort`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `MSG_TYPE_ACK` should have a snake case name
[INFO] [stderr]   --> src/connection/mod.rs:49:9
[INFO] [stderr]    |
[INFO] [stderr] 49 |         MSG_TYPE_ACK => {
[INFO] [stderr]    |         ^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_ack`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `MSG_TYPE_WINDOW_ACK` should have a snake case name
[INFO] [stderr]   --> src/connection/mod.rs:53:9
[INFO] [stderr]    |
[INFO] [stderr] 53 |         MSG_TYPE_WINDOW_ACK => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_window_ack`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `MSG_TYPE_SET_PEER_BW` should have a snake case name
[INFO] [stderr]   --> src/connection/mod.rs:57:9
[INFO] [stderr]    |
[INFO] [stderr] 57 |         MSG_TYPE_SET_PEER_BW => {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `msg_type_set_peer_bw`
[INFO] [stderr] 
[INFO] [stderr] warning: method `clear` is never used
[INFO] [stderr]   --> src/stream/gop_cache.rs:85:12
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl GopCache {
[INFO] [stderr]    | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 85 |     pub fn clear(&mut self) {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `RustRTMP` (lib) generated 115 warnings (run `cargo fix --lib -p RustRTMP` to apply 40 suggestions)
[INFO] [stderr] warning: `RustRTMP` (lib test) generated 114 warnings (113 duplicates)
[INFO] [stderr] warning: function `wait_for_server` is never used
[INFO] [stderr]   --> tests/integration_test.rs:23:10
[INFO] [stderr]    |
[INFO] [stderr] 23 | async fn wait_for_server(port: u16, max_attempts: u32) -> bool {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `upstream_clone`
[INFO] [stderr]   --> examples/relay_server.rs:82:13
[INFO] [stderr]    |
[INFO] [stderr] 82 |         let upstream_clone = upstream.clone();
[INFO] [stderr]    |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upstream_clone`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `RustRTMP` (test "integration_test") generated 1 warning
[INFO] [stderr] warning: `RustRTMP` (example "relay_server") generated 1 warning (run `cargo fix --example "relay_server" -p RustRTMP` to apply 1 suggestion)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.31s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rtmp-8b9376bd792d3bf0)
[INFO] [stdout] 
[INFO] [stdout] running 21 tests
[INFO] [stdout] test handshake::c0c1::tests::test_c0c1_creation ... ok
[INFO] [stdout] test handshake::c0c1::tests::test_c0c1_round_trip ... ok
[INFO] [stdout] test handshake::s0s1s2::tests::test_handshake_flow ... ok
[INFO] [stdout] test message::dispatcher::tests::test_dispatcher ... ok
[INFO] [stdout] test protocol::command::tests::test_command_round_trip ... ok
[INFO] [stdout] test protocol::packet::tests::test_packet_creation ... ok
[INFO] [stdout] test utils::buffer::tests::test_remaining_bytes ... ok
[INFO] [stdout] test utils::crypto::hmac_tests::test_hmac_sha256 ... ok
[INFO] [stdout] test stream::gop_cache::tests::test_gop_cache ... ok
[INFO] [stdout] test utils::crypto::tests::test_random_bytes_length ... ok
[INFO] [stdout] test utils::buffer::tests::test_boundary_checks ... ok
[INFO] [stdout] test utils::error::tests::test_error_conversion ... ok
[INFO] [stdout] test utils::error::tests::test_error_creation ... ok
[INFO] [stdout] test utils::time::tests::test_time_delta ... ok
[INFO] [stdout] test utils::crypto::tests::test_random_bytes_uniqueness ... ok
[INFO] [stdout] test protocol::command::tests::test_connect_command ... ok
[INFO] [stdout] test utils::buffer::tests::test_read_write_u16 ... ok
[INFO] [stdout] test message::queue::tests::test_queue_size_limit ... ok
[INFO] [stdout] test utils::time::tests::test_timestamp_increasing ... ok
[INFO] [stdout] test utils::buffer::tests::test_read_write_u8 ... ok
[INFO] [stdout] test message::queue::tests::test_queue_priority ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- message::queue::tests::test_queue_priority stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'message::queue::tests::test_queue_priority' (20) panicked at src/message/queue.rs:199:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: 9
[INFO] [stdout]  right: 8
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x58b63b68a1a2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x58b63b68a1a2 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x58b63b68a1a2 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x58b63b68a1a2 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x58b63b69f00a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x58b63b69f00a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x58b63b68f0f6 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x58b63b68f0f6 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x58b63b66827f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x58b63b66827f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x58b63b6822b9 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x58b63b5678fe - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x58b63b5678fe - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x58b63b682522 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x58b63b682522 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x58b63b668338 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x58b63b65fd09 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x58b63b66918d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x58b63b69f74c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x58b63b69f603 - core[c5ed12ab89cc536a]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x58b63b59ad1a - core[c5ed12ab89cc536a]::panicking::assert_failed::<u8, u8>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x58b63b553012 - rtmp[e48eca01c54a21e5]::message::queue::tests::test_queue_priority::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/message/queue.rs:199:9
[INFO] [stdout]   22:     0x58b63b539442 - <core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>> as core[c5ed12ab89cc536a]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x58b63b5394bd - <core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>> as core[c5ed12ab89cc536a]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x58b63b52f79d - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:742:70
[INFO] [stdout]   25:     0x58b63b52f69b - tokio[8dd7ad719bb86274]::task::coop::with_budget::<core[c5ed12ab89cc536a]::task::poll::Poll<()>, <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x58b63b52f69b - tokio[8dd7ad719bb86274]::task::coop::budget::<core[c5ed12ab89cc536a]::task::poll::Poll<()>, <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x58b63b52f69b - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:742:25
[INFO] [stdout]   28:     0x58b63b52ae30 - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::Context>::enter::<core[c5ed12ab89cc536a]::task::poll::Poll<()>, <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:432:19
[INFO] [stdout]   29:     0x58b63b52e2bd - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:741:44
[INFO] [stdout]   30:     0x58b63b52d5b4 - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}, core[c5ed12ab89cc536a]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:829:68
[INFO] [stdout]   31:     0x58b63b550b1b - <tokio[8dd7ad719bb86274]::runtime::context::scoped::Scoped<tokio[8dd7ad719bb86274]::runtime::scheduler::Context>>::set::<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}, core[c5ed12ab89cc536a]::option::Option<()>>::{closure#0}, (alloc[9c68fdf4f4f29218]::boxed::Box<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::Core>, core[c5ed12ab89cc536a]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x58b63b542d49 - tokio[8dd7ad719bb86274]::runtime::context::set_scheduler::<(alloc[9c68fdf4f4f29218]::boxed::Box<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::Core>, core[c5ed12ab89cc536a]::option::Option<()>), <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}, core[c5ed12ab89cc536a]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context.rs:176:38
[INFO] [stdout]   33:     0x58b63b541c02 - <std[716c9a7a72e5c14e]::thread::local::LocalKey<tokio[8dd7ad719bb86274]::runtime::context::Context>>::try_with::<tokio[8dd7ad719bb86274]::runtime::context::set_scheduler<(alloc[9c68fdf4f4f29218]::boxed::Box<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::Core>, core[c5ed12ab89cc536a]::option::Option<()>), <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}, core[c5ed12ab89cc536a]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[9c68fdf4f4f29218]::boxed::Box<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::Core>, core[c5ed12ab89cc536a]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x58b63b54178e - <std[716c9a7a72e5c14e]::thread::local::LocalKey<tokio[8dd7ad719bb86274]::runtime::context::Context>>::with::<tokio[8dd7ad719bb86274]::runtime::context::set_scheduler<(alloc[9c68fdf4f4f29218]::boxed::Box<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::Core>, core[c5ed12ab89cc536a]::option::Option<()>), <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}, core[c5ed12ab89cc536a]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[9c68fdf4f4f29218]::boxed::Box<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::Core>, core[c5ed12ab89cc536a]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x58b63b542a9d - tokio[8dd7ad719bb86274]::runtime::context::set_scheduler::<(alloc[9c68fdf4f4f29218]::boxed::Box<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::Core>, core[c5ed12ab89cc536a]::option::Option<()>), <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}, core[c5ed12ab89cc536a]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context.rs:176:17
[INFO] [stdout]   36:     0x58b63b52bed0 - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>::{closure#0}, core[c5ed12ab89cc536a]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:829:27
[INFO] [stdout]   37:     0x58b63b52c1c6 - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[c5ed12ab89cc536a]::pin::Pin<&mut core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:729:24
[INFO] [stdout]   38:     0x58b63b52d1c0 - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   39:     0x58b63b52c9a3 - tokio[8dd7ad719bb86274]::runtime::context::runtime::enter_runtime::<<tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x58b63b52a961 - <tokio[8dd7ad719bb86274]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   41:     0x58b63b547f64 - <tokio[8dd7ad719bb86274]::runtime::runtime::Runtime>::block_on_inner::<core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   42:     0x58b63b54812c - <tokio[8dd7ad719bb86274]::runtime::runtime::Runtime>::block_on::<core[c5ed12ab89cc536a]::pin::Pin<&mut dyn core[c5ed12ab89cc536a]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   43:     0x58b63b557543 - rtmp[e48eca01c54a21e5]::message::queue::tests::test_queue_priority
[INFO] [stdout]                                at /opt/rustwide/workdir/src/message/queue.rs:199:57
[INFO] [stdout]   44:     0x58b63b5525c7 - rtmp[e48eca01c54a21e5]::message::queue::tests::test_queue_priority::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/message/queue.rs:187:35
[INFO] [stdout]   45:     0x58b63b55ba16 - <rtmp[e48eca01c54a21e5]::message::queue::tests::test_queue_priority::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x58b63b55bcab - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x58b63b55bcab - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x58b63b56850a - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x58b63b56850a - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x58b63b56850a - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x58b63b56850a - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x58b63b56850a - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x58b63b56850a - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x58b63b56850a - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x58b63b5629d4 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x58b63b5629d4 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x58b63b56b002 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x58b63b56b002 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x58b63b56b002 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x58b63b56b002 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x58b63b56b002 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x58b63b56b002 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x58b63b56b002 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x58b63b689a3f - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x58b63b689a3f - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   66:     0x76ad4b212aa4 - <unknown>
[INFO] [stdout]   67:     0x76ad4b29fa64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     message::queue::tests::test_queue_priority
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 20 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "ab4b56bae66319ffeb762e0db078fafc77fed3ebe15b8066e595c71a9117ab3e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ab4b56bae66319ffeb762e0db078fafc77fed3ebe15b8066e595c71a9117ab3e", kill_on_drop: false }`
[INFO] [stdout] ab4b56bae66319ffeb762e0db078fafc77fed3ebe15b8066e595c71a9117ab3e
