[INFO] cloning repository https://github.com/lizhiyong2000/vcp-media-server
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lizhiyong2000/vcp-media-server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flizhiyong2000%2Fvcp-media-server", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flizhiyong2000%2Fvcp-media-server'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4a1bd4008ec7032ea9a9d65ab85fa75d8e8f091c
[INFO] testing lizhiyong2000/vcp-media-server against try#c2e32f1c9652b13ed99608599c1e855462f421f3 for pr-146098-7
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flizhiyong2000%2Fvcp-media-server" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/lizhiyong2000/vcp-media-server
[INFO] finished tweaking git repo https://github.com/lizhiyong2000/vcp-media-server
[INFO] tweaked toml for git repo https://github.com/lizhiyong2000/vcp-media-server written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/lizhiyong2000/vcp-media-server on toolchain c2e32f1c9652b13ed99608599c1e855462f421f3
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/lizhiyong2000/vcp-media-server 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" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e92a4e5e187084ffe29204b0c2238ddcb29a19fdcb9e0ee73fbe70ee104b51d5
[INFO] running `Command { std: "docker" "start" "-a" "e92a4e5e187084ffe29204b0c2238ddcb29a19fdcb9e0ee73fbe70ee104b51d5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e92a4e5e187084ffe29204b0c2238ddcb29a19fdcb9e0ee73fbe70ee104b51d5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e92a4e5e187084ffe29204b0c2238ddcb29a19fdcb9e0ee73fbe70ee104b51d5", kill_on_drop: false }`
[INFO] [stdout] e92a4e5e187084ffe29204b0c2238ddcb29a19fdcb9e0ee73fbe70ee104b51d5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5324dd025685272164973ef3e2a8f47e3668a1a1790fa689986b2a354b8e2be6
[INFO] running `Command { std: "docker" "start" "-a" "5324dd025685272164973ef3e2a8f47e3668a1a1790fa689986b2a354b8e2be6", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.92
[INFO] [stderr]    Compiling unicode-ident v1.0.14
[INFO] [stderr]    Compiling autocfg v1.4.0
[INFO] [stderr]    Compiling libc v0.2.164
[INFO] [stderr]    Compiling itoa v1.0.13
[INFO] [stderr]    Compiling pin-project-lite v0.2.15
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling smallvec v1.13.2
[INFO] [stderr]    Compiling bytes v1.8.0
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling once_cell v1.20.2
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling tracing-core v0.1.32
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling log v0.4.22
[INFO] [stderr]    Compiling mio v1.0.2
[INFO] [stderr]    Compiling socket2 v0.5.7
[INFO] [stderr]    Compiling signal-hook-registry v1.4.2
[INFO] [stderr]    Compiling serde v1.0.215
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling crossbeam-utils v0.8.20
[INFO] [stderr]    Compiling syn v2.0.89
[INFO] [stderr]    Compiling getrandom v0.2.15
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling overload v0.1.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling nu-ansi-term v0.46.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling deranged v0.3.11
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.8
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling thiserror v2.0.3
[INFO] [stderr]    Compiling time-core v0.1.2
[INFO] [stderr]    Compiling typenum v1.17.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling equivalent v1.0.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.61
[INFO] [stderr]    Compiling hashbrown v0.15.1
[INFO] [stderr]    Compiling crossbeam-channel v0.5.13
[INFO] [stderr]    Compiling tracing-subscriber v0.3.18
[INFO] [stderr]    Compiling http v1.1.0
[INFO] [stderr]    Compiling time v0.3.36
[INFO] [stderr]    Compiling indexmap v2.6.0
[INFO] [stderr]    Compiling chrono v0.4.38
[INFO] [stderr]    Compiling radium v0.7.0
[INFO] [stderr]    Compiling four-cc v0.4.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling httparse v1.9.5
[INFO] [stderr]    Compiling tap v1.0.1
[INFO] [stderr]    Compiling wyz v0.5.1
[INFO] [stderr]    Compiling mp4ra-rust v0.3.0
[INFO] [stderr]    Compiling mpeg4-audio-const v0.2.0
[INFO] [stderr]    Compiling rustversion v1.0.18
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling funty v2.0.0
[INFO] [stderr]    Compiling anyhow v1.0.93
[INFO] [stderr]    Compiling rfc6381-codec v0.2.0
[INFO] [stderr]    Compiling digest v0.9.0
[INFO] [stderr]    Compiling percent-encoding v2.3.1
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling hex-slice v0.1.4
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling bitstream-io v2.6.0
[INFO] [stderr]    Compiling serde_json v1.0.133
[INFO] [stderr]    Compiling bitvec v1.0.1
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling subtle v2.4.1
[INFO] [stderr]    Compiling crypto-mac v0.11.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]    Compiling block-buffer v0.9.0
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling opaque-debug v0.3.1
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling sync_wrapper v0.1.2
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling cpufeatures v0.2.16
[INFO] [stderr]    Compiling sha2 v0.9.9
[INFO] [stderr]    Compiling hmac v0.11.0
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling md5 v0.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio-macros v2.4.0
[INFO] [stderr]    Compiling serde_derive v1.0.215
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling tracing-attributes v0.1.27
[INFO] [stderr]    Compiling async-trait v0.1.83
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio v1.41.1
[INFO] [stderr]    Compiling zerocopy v0.7.35
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.3
[INFO] [stderr]    Compiling tracing v0.1.40
[INFO] [stderr]    Compiling tracing-appender v0.2.3
[INFO] [stderr]    Compiling ppv-lite86 v0.2.20
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling http-body-util v0.1.2
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling tokio-util v0.7.12
[INFO] [stderr]    Compiling hyper v1.5.1
[INFO] [stderr]    Compiling tower v0.5.1
[INFO] [stderr]    Compiling serde_path_to_error v0.1.16
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling vcp_media_common v0.1.0 (/opt/rustwide/workdir/lib/common)
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/common/src/http/mod.rs:193:24
[INFO] [stdout]     |
[INFO] [stdout] 193 |                     if let uri = Uri::unmarshal(url)? {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling hyper-util v0.1.10
[INFO] [stdout] warning: field `sessions` is never read
[INFO] [stdout]   --> lib/common/src/server/tcp_server.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TcpServer<T>
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     sessions: HashMap<String, Arc<Box<T>>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling vcp_media_h264 v0.1.0 (/opt/rustwide/workdir/lib/codec/h264)
[INFO] [stderr]    Compiling vcp_media_sdp v0.1.0 (/opt/rustwide/workdir/lib/protocol/sdp)
[INFO] [stderr]    Compiling vcp_media_rtp v0.1.0 (/opt/rustwide/workdir/lib/protocol/rtp)
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:547:24
[INFO] [stdout]     |
[INFO] [stdout] 547 |                     if let origin = SessionOrigin::unmarshal(kv[1])?{
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:556:24
[INFO] [stdout]     |
[INFO] [stdout] 556 |                     if let connection= SessionConnection::unmarshal(kv[1])?{
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:567:24
[INFO] [stdout]     |
[INFO] [stdout] 567 |                     if let bandwith = SessionBandwidth::unmarshal(kv[1])?{
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:588:24
[INFO] [stdout]     |
[INFO] [stdout] 588 |                     if let timing = SessionTiming::unmarshal(kv[1])? {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:598:24
[INFO] [stdout]     |
[INFO] [stdout] 598 |                     if let repeat = SessionRepeat::unmarshal(kv[1])? {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:608:24
[INFO] [stdout]     |
[INFO] [stdout] 608 |                     if let sdp_media = SessionMediaInfo::unmarshal(kv[1])?{
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timing` is never read
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct SessionTimeDescription {
[INFO] [stdout]     |            ---------------------- field in this struct
[INFO] [stdout] 155 |     timing: SessionTiming,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SessionTimeDescription` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `raw_string`, `uri`, `email`, and `phone_number` are never read
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:463:5
[INFO] [stdout]     |
[INFO] [stdout] 462 | pub struct SessionDescription {
[INFO] [stdout]     |            ------------------ fields in this struct
[INFO] [stdout] 463 |     raw_string: String,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     uri: String,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 475 |     // e=<email-address>
[INFO] [stdout] 476 |     email: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 477 |     // p=<phone-number>
[INFO] [stdout] 478 |     phone_number: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SessionDescription` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h265.rs:347:25
[INFO] [stdout]     |
[INFO] [stdout] 347 |             if let Some(f) = &self.on_frame_handler {
[INFO] [stdout]     |                         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]   --> lib/protocol/rtp/src/rtp_aac.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             f(packet.clone());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_aac.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |             f(rtp_packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]   --> lib/protocol/rtp/src/rtp_h264.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |                 f(packet.clone());
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h264.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |             f(packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h264.rs:167:13
[INFO] [stdout]     |
[INFO] [stdout] 167 |             f(rtp_packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h265.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |                 f(packet.clone());
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h265.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |             f(packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h265.rs:186:13
[INFO] [stdout]     |
[INFO] [stdout] 186 |             f(rtp_packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling vcp_media_rtsp v0.1.0 (/opt/rustwide/workdir/lib/protocol/rtsp)
[INFO] [stdout] warning: unused import: `oneshot`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:24:25
[INFO] [stdout]    |
[INFO] [stdout] 24 | use tokio::sync::{mpsc, oneshot, Mutex};
[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: `vcp_media_common::bytesio::bytes_errors::BytesWriteError`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use vcp_media_common::bytesio::bytes_errors::BytesWriteError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesWriter`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:27:65
[INFO] [stdout]    |
[INFO] [stdout] 27 | use vcp_media_common::bytesio::bytes_writer::{AsyncBytesWriter, BytesWriter};
[INFO] [stdout]    |                                                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HttpResponse`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:31:58
[INFO] [stdout]    |
[INFO] [stdout] 31 | use vcp_media_common::http::{HttpRequest as RtspRequest, HttpResponse};
[INFO] [stdout]    |                                                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ServerSessionHandler`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:33:48
[INFO] [stdout]    |
[INFO] [stdout] 33 | use vcp_media_common::server::{NetworkSession, ServerSessionHandler, ServerSessionType};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:518:16
[INFO] [stdout]     |
[INFO] [stdout] 518 |             if let sdp = SessionDescription::unmarshal(request_body)? {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:819:9
[INFO] [stdout]     |
[INFO] [stdout] 775 | /             loop {
[INFO] [stdout] 776 | |                 if let Some(frame_data) = receiver.recv().await {
[INFO] [stdout] 777 | |                     match frame_data {
[INFO] [stdout] 778 | |                         FrameData::Audio {
[INFO] [stdout] ...   |
[INFO] [stdout] 817 | |             }
[INFO] [stdout]     | |_____________- any code following this expression is unreachable
[INFO] [stdout] 818 |
[INFO] [stdout] 819 |           Ok(())
[INFO] [stdout]     |           ^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:707:13
[INFO] [stdout]     |
[INFO] [stdout] 707 |         let mut response =  {
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:831:13
[INFO] [stdout]     |
[INFO] [stdout] 831 |         let mut response =  {
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:871:13
[INFO] [stdout]     |
[INFO] [stdout] 871 |         let mut response =  {
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `top_left` and `bottom_right` are never read
[INFO] [stdout]   --> lib/codec/h264/src/decoder/nal/pps.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct SliceRect {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 44 |     top_left: u32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 45 |     bottom_right: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SliceRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDateTime::timestamp`: use `.and_utc().timestamp()` instead
[INFO] [stdout]   --> lib/protocol/rtsp/src/message/range.rs:44:30
[INFO] [stdout]    |
[INFO] [stdout] 44 |                     datetime.timestamp()
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vcp_media_common::Marshal`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | use vcp_media_common::Marshal as RtpMarshal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::SinkExt`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use futures::SinkExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:57:38
[INFO] [stdout]    |
[INFO] [stdout] 57 |     async fn handle_close(&mut self, context: &mut RtspServerSessionContext) -> Result<(), RtspSessionError>{
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `channel_identifier`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:61:94
[INFO] [stdout]    |
[INFO] [stdout] 61 | ...ssionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSessionError>{
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `length`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:61:118
[INFO] [stdout]    |
[INFO] [stdout] 61 | ..., channel_identifier: u8, length: usize) -> Result<(), RtspSessionError>{
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:61:54
[INFO] [stdout]    |
[INFO] [stdout] 61 | ..._rtsp_message(&mut self, context: &mut RtspServerSessionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSession...
[INFO] [stdout]    |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:65:40
[INFO] [stdout]    |
[INFO] [stdout] 65 |     async fn handle_options(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResp...
[INFO] [stdout]    |                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:65:80
[INFO] [stdout]    |
[INFO] [stdout] 65 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:69:41
[INFO] [stdout]    |
[INFO] [stdout] 69 |     async fn handle_describe(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescrip...
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:69:81
[INFO] [stdout]    |
[INFO] [stdout] 69 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescription, RtspSessionError> {
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame_receiver`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:73:109
[INFO] [stdout]    |
[INFO] [stdout] 73 | ...st: &RtspRequest, frame_receiver: FrameDataReceiver) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:73:41
[INFO] [stdout]    |
[INFO] [stdout] 73 |     async fn handle_announce(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest, frame_receiver: FrameDat...
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:73:81
[INFO] [stdout]    |
[INFO] [stdout] 73 | ...rverSessionContext, rtsp_request: &RtspRequest, frame_receiver: FrameDataReceiver) -> Result<Option<RtspResponse>, RtspSessionErr...
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:77:38
[INFO] [stdout]    |
[INFO] [stdout] 77 |     async fn handle_setup(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespon...
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:77:78
[INFO] [stdout]    |
[INFO] [stdout] 77 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame_sender`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:81:105
[INFO] [stdout]    |
[INFO] [stdout] 81 | ...uest: &RtspRequest, frame_sender: FrameDataSender) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:81:37
[INFO] [stdout]    |
[INFO] [stdout] 81 |     async fn handle_play(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest, frame_sender: FrameDataSende...
[INFO] [stdout]    |                                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:81:77
[INFO] [stdout]    |
[INFO] [stdout] 81 | ...rverSessionContext, rtsp_request: &RtspRequest, frame_sender: FrameDataSender) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:85:39
[INFO] [stdout]    |
[INFO] [stdout] 85 |     async fn handle_record(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespo...
[INFO] [stdout]    |                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:85:79
[INFO] [stdout]    |
[INFO] [stdout] 85 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:89:41
[INFO] [stdout]    |
[INFO] [stdout] 89 |     async fn handle_teardown(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRes...
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:89:81
[INFO] [stdout]    |
[INFO] [stdout] 89 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling vcp_media_flv v0.3.0 (/opt/rustwide/workdir/lib/format/flv)
[INFO] [stdout] warning: field `remote_addr` is never read
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub struct RtspServerSession {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 167 |     id: String,
[INFO] [stdout] 168 |     remote_addr: SocketAddr,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print` is never used
[INFO] [stdout]   --> lib/protocol/rtsp/src/utils.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn print(title: &str, data: BytesMut) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |             h.handle_close(&mut self.context).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 202 |             let _ = h.handle_close(&mut self.context).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:362:13
[INFO] [stdout]     |
[INFO] [stdout] 362 |             self.reader.read_bytes(rtsp_request.origin_length);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 362 |             let _ = self.reader.read_bytes(rtsp_request.origin_length);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling vcp_media_rtmp v0.1.0 (/opt/rustwide/workdir/lib/protocol/rtmp)
[INFO] [stdout] warning: unused import: `crate::session::cache::Cache`
[INFO] [stdout]   --> lib/protocol/rtmp/src/session/server_session.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::session::cache::Cache;
[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::fmt`
[INFO] [stdout]  --> lib/protocol/rtmp/src/session/cache/errors.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     std::fmt,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mpeg4_aac::Mpeg4AacProcessor` and `mpeg4_avc::Mpeg4AvcProcessor`
[INFO] [stdout]   --> lib/protocol/rtmp/src/session/cache/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |         mpeg4_aac::Mpeg4AacProcessor,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 16 |         mpeg4_avc::Mpeg4AvcProcessor,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_size`
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:329:29
[INFO] [stdout]     |
[INFO] [stdout] 329 |                         let data_size = data.len();
[INFO] [stdout]     |                             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_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: `data_size`
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:345:29
[INFO] [stdout]     |
[INFO] [stdout] 345 |                         let data_size = data.len();
[INFO] [stdout]     |                             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `remote_addr` and `gop_num` are never read
[INFO] [stdout]   --> lib/protocol/rtmp/src/session/server_session.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct RtmpServerSession {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 82 |     id: String,
[INFO] [stdout] 83 |     remote_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     gop_num: usize,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `append_port` is never used
[INFO] [stdout]   --> lib/protocol/rtmp/src/utils/mod.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl RtmpUrlParser {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn append_port(&mut self, port: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print` is never used
[INFO] [stdout]  --> lib/protocol/rtmp/src/utils/print.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub fn print(data: BytesMut) {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print2` is never used
[INFO] [stdout]   --> lib/protocol/rtmp/src/utils/print.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn print2(title: &str, data: BytesMut) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `printu8` is never used
[INFO] [stdout]   --> lib/protocol/rtmp/src/utils/print.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn printu8(data: BytesMut) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_array` is never used
[INFO] [stdout]   --> lib/protocol/rtmp/src/utils/print.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn print_array(data: &[u8], len: usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:582:13
[INFO] [stdout]     |
[INFO] [stdout] 582 |             h.save_video_data(data, *timestamp).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 582 |             let _ = h.save_video_data(data, *timestamp).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:607:13
[INFO] [stdout]     |
[INFO] [stdout] 607 |             h.save_audio_data(data, *timestamp).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 607 |             let _ = h.save_audio_data(data, *timestamp).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:636:13
[INFO] [stdout]     |
[INFO] [stdout] 636 |             h.save_metadata(data, *timestamp).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 636 |             let _ = h.save_metadata(data, *timestamp).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:783:9
[INFO] [stdout]     |
[INFO] [stdout] 783 |         self.notify_session_end();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling vcp_media_server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `vcp_media_common::server::tcp_server::TcpServer`
[INFO] [stdout]  --> src/manager/service.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use vcp_media_common::server::tcp_server::TcpServer;
[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: `vcp_media_rtmp::session::server_session::RtmpServerSession`
[INFO] [stdout]  --> src/manager/service.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use vcp_media_rtmp::session::server_session::RtmpServerSession;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/manager/message.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vcp_media_common::Marshal`
[INFO] [stdout]   --> src/transmitter/source/rtmp_push_source.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use vcp_media_common::Marshal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StreamInformation`
[INFO] [stdout]   --> src/transmitter/source/rtmp_push_source.rs:11:78
[INFO] [stdout]    |
[INFO] [stdout] 11 | use vcp_media_common::media::{FrameData, FrameDataReceiver, FrameDataSender, StreamInformation};
[INFO] [stdout]    |                                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NetworkSession`
[INFO] [stdout]   --> src/server/rtsp_server.rs:15:47
[INFO] [stdout]    |
[INFO] [stdout] 15 | use vcp_media_common::server::{NetworkServer, NetworkSession, ServerSessionType, SessionError, TcpServerHandler};
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vcp_media_common::server::NetworkServer`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use vcp_media_common::server::NetworkServer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vcp_media_common::server::NetworkServer`
[INFO] [stdout]  --> src/manager/service.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use vcp_media_common::server::NetworkServer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/manager/message.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Debug, Write};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]   --> src/server/rtsp_server.rs:32:37
[INFO] [stdout]    |
[INFO] [stdout] 32 |     async fn send_prior_data(&self, sender: FrameDataSender, sub_type: SubscribeType) -> Result<(), StreamHubError> {
[INFO] [stdout]    |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub_type`
[INFO] [stdout]   --> src/server/rtsp_server.rs:32:62
[INFO] [stdout]    |
[INFO] [stdout] 32 |     async fn send_prior_data(&self, sender: FrameDataSender, sub_type: SubscribeType) -> Result<(), StreamHubError> {
[INFO] [stdout]    |                                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `channel_identifier`
[INFO] [stdout]    --> src/server/rtsp_server.rs:134:90
[INFO] [stdout]     |
[INFO] [stdout] 134 | ...ssionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSessionError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `length`
[INFO] [stdout]    --> src/server/rtsp_server.rs:134:114
[INFO] [stdout]     |
[INFO] [stdout] 134 | ..., channel_identifier: u8, length: usize) -> Result<(), RtspSessionError> {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:134:54
[INFO] [stdout]     |
[INFO] [stdout] 134 |     async fn handle_rtp_over_rtsp_message(&mut self, ctx: &mut RtspServerSessionContext, channel_identifier: u8, length: usize) -> ...
[INFO] [stdout]     |                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:152:40
[INFO] [stdout]     |
[INFO] [stdout] 152 |     async fn handle_options(&mut self, ctx: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespons...
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]    --> src/server/rtsp_server.rs:152:76
[INFO] [stdout]     |
[INFO] [stdout] 152 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]     |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:156:41
[INFO] [stdout]     |
[INFO] [stdout] 156 |     async fn handle_describe(&mut self, ctx: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescriptio...
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/server/rtsp_server.rs:187:16
[INFO] [stdout]     |
[INFO] [stdout] 187 |             if let sdp = SessionDescription::unmarshal(request_body)? {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]    --> src/server/rtsp_server.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let sender = match result_receiver.await? {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/server/rtsp_server.rs:216:16
[INFO] [stdout]     |
[INFO] [stdout] 216 |             Ok(x) => {
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:226:38
[INFO] [stdout]     |
[INFO] [stdout] 226 |     async fn handle_setup(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspResponse...
[INFO] [stdout]     |                                      ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_result_receiver`
[INFO] [stdout]    --> src/server/rtsp_server.rs:232:35
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let (event_result_sender, event_result_receiver) = oneshot::channel();
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_result_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:258:39
[INFO] [stdout]     |
[INFO] [stdout] 258 |     async fn handle_record(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspRespons...
[INFO] [stdout]     |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:262:41
[INFO] [stdout]     |
[INFO] [stdout] 262 |     async fn handle_teardown(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspRespo...
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]    --> src/server/rtmp_server.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let sender = match result_receiver.await {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/server/rtmp_server.rs:180:16
[INFO] [stdout]     |
[INFO] [stdout] 180 |             Ok(x) => {
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_result_receiver`
[INFO] [stdout]    --> src/server/rtmp_server.rs:208:35
[INFO] [stdout]     |
[INFO] [stdout] 208 |         let (event_result_sender, event_result_receiver) = oneshot::channel();
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_result_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_path`
[INFO] [stdout]   --> src/manager/service.rs:96:17
[INFO] [stdout]    |
[INFO] [stdout] 96 |     pub fn load(config_path: &str) -> Self {
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio_err`
[INFO] [stdout]    --> src/transmitter/source/rtsp_push_source.rs:194:36
[INFO] [stdout]     |
[INFO] [stdout] 194 |                         if let Err(audio_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendAudioError) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_err`
[INFO] [stdout]    --> src/transmitter/source/rtsp_push_source.rs:206:36
[INFO] [stdout]     |
[INFO] [stdout] 206 |                         if let Err(video_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendVideoError) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/transmitter/source/rtsp_push_source.rs:146:48
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 StreamTransmitEvent::UnPublish{info} => {
[INFO] [stdout]     |                                                ^^^^ help: try ignoring the field: `info: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio_err`
[INFO] [stdout]    --> src/transmitter/source/rtmp_push_source.rs:187:36
[INFO] [stdout]     |
[INFO] [stdout] 187 |                         if let Err(audio_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendAudioError) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_err`
[INFO] [stdout]    --> src/transmitter/source/rtmp_push_source.rs:199:36
[INFO] [stdout]     |
[INFO] [stdout] 199 |                         if let Err(video_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendVideoError) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/transmitter/source/rtmp_push_source.rs:139:48
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 StreamTransmitEvent::UnPublish{info} => {
[INFO] [stdout]     |                                                ^^^^ help: try ignoring the field: `info: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]    --> src/transmitter/source/rtmp_push_source.rs:160:47
[INFO] [stdout]     |
[INFO] [stdout] 160 |                 StreamTransmitEvent::Request{ sender } => {
[INFO] [stdout]     |                                               ^^^^^^ help: try ignoring the field: `sender: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthError` is never used
[INFO] [stdout]  --> src/common/errors.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum AuthError {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthAlgorithm` is never used
[INFO] [stdout]   --> src/common/auth.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum AuthAlgorithm {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthType` is never used
[INFO] [stdout]   --> src/common/auth.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum AuthType {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Auth` is never constructed
[INFO] [stdout]   --> src/common/auth.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Auth {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `authenticate`, and `check` are never used
[INFO] [stdout]   --> src/common/auth.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Auth {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 35 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn authenticate(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     fn check(&self, stream_name: &String, auth_str: &str) -> bool {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OPTIONS` is never used
[INFO] [stdout]  --> src/common/define.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 |     pub const OPTIONS: &str = "OPTIONS";
[INFO] [stdout]   |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PATCH` is never used
[INFO] [stdout]  --> src/common/define.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub const PATCH: &str = "PATCH";
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POST` is never used
[INFO] [stdout]  --> src/common/define.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub const POST: &str = "POST";
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE` is never used
[INFO] [stdout]  --> src/common/define.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub const DELETE: &str = "DELETE";
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET` is never used
[INFO] [stdout]  --> src/common/define.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub const GET: &str = "GET";
[INFO] [stdout]   |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Push` is never constructed
[INFO] [stdout]   --> src/common/stream.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum SubscribeType {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 39 |     Push,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SubscribeType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Pull` is never constructed
[INFO] [stdout]   --> src/common/stream.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum PublishType {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 46 |     Push,
[INFO] [stdout] 47 |     Pull,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PublishType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NotifyInfo` is never constructed
[INFO] [stdout]   --> src/common/stream.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NotifyInfo {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SubDataType` is never used
[INFO] [stdout]   --> src/common/stream.rs:59:10
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub enum SubDataType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PubDataType` is never used
[INFO] [stdout]   --> src/common/stream.rs:65:10
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub enum PubDataType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unsubscribe_from_stream_hub` is never used
[INFO] [stdout]   --> src/server/rtsp_server.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl VcpRtspServerSessionHandler {
[INFO] [stdout]    | -------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn unsubscribe_from_stream_hub(&mut self, _stream_path: String) -> Result<(), RtspSessionError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TStreamPublisher` is never used
[INFO] [stdout]  --> src/manager/mod.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait TStreamPublisher {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TStreamSubscriber` is never used
[INFO] [stdout]   --> src/manager/mod.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait TStreamSubscriber {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TStreamTransmitter` is never used
[INFO] [stdout]   --> src/manager/mod.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub trait TStreamTransmitter {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/manager/service.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ServiceManager {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 11 |     config: Config,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `publish_type` and `publisher_id` are never read
[INFO] [stdout]   --> src/manager/message.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct StreamPublishInfo {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 65 |     pub stream_id: StreamId,
[INFO] [stdout] 66 |     pub publish_type: PublishType,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub publisher_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StreamPublishInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamPullInfo` is never constructed
[INFO] [stdout]   --> src/manager/message.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct StreamPullInfo {}
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `StreamUnSubscribeError` is never constructed
[INFO] [stdout]   --> src/manager/stream_hub.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum StreamHubError {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     StreamUnSubscribeError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StreamHubError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `default_sink` is never read
[INFO] [stdout]   --> src/transmitter/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct StreamTransmitter {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     default_sink: Arc<Box<FakeSink>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StreamSource` is never used
[INFO] [stdout]  --> src/transmitter/traits.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait StreamSource {
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StreamSink` is never used
[INFO] [stdout]   --> src/transmitter/traits.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub trait StreamSink {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StreamFilter` is never used
[INFO] [stdout]   --> src/transmitter/traits.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub trait StreamFilter: StreamSource + StreamSink {}
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream_id` is never read
[INFO] [stdout]   --> src/transmitter/source/rtsp_push_source.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RtspPushSource {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 16 |     stream_id: StreamId,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream_id` is never read
[INFO] [stdout]   --> src/transmitter/source/rtmp_push_source.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct RtmpPushSource {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 15 |     stream_id: StreamId,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtsp_server.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |                     self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 117 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtsp_server.rs:126:21
[INFO] [stdout]     |
[INFO] [stdout] 126 |                     self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 126 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtsp_server.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         self.event_producer.send(request_event);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let _ = self.event_producer.send(request_event);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtsp_server.rs:213:9
[INFO] [stdout]     |
[INFO] [stdout] 213 |         self.event_producer.send(publish_event);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 213 |         let _ = self.event_producer.send(publish_event);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtmp_server.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |         self.transmit_handler.save_metadata(chunk_body, timestamp).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let _ = self.transmit_handler.save_metadata(chunk_body, timestamp).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtmp_server.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 175 |         self.event_producer.send(publish_event);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 175 |         let _ = self.event_producer.send(publish_event);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtmp_server.rs:240:21
[INFO] [stdout]     |
[INFO] [stdout] 240 |                     self.event_producer.send(unsubscribe_event);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 240 |                     let _ = self.event_producer.send(unsubscribe_event);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtmp_server.rs:249:21
[INFO] [stdout]     |
[INFO] [stdout] 249 |                     self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 249 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/manager/stream_hub.rs:68:21
[INFO] [stdout]    |
[INFO] [stdout] 68 |                     self.handle_publish(info, sdp, receiver, stream_handler).await;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 68 |                     let _ = self.handle_publish(info, sdp, receiver, stream_handler).await;
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/manager/stream_hub.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 79 |                     self.handle_unpublish(info);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 79 |                     let _ = self.handle_unpublish(info);
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/manager/stream_hub.rs:86:21
[INFO] [stdout]    |
[INFO] [stdout] 86 |                     self.handle_subscribe(info, sender);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 86 |                     let _ = self.handle_subscribe(info, sender);
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/manager/stream_hub.rs:98:21
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     self.handle_unsubscribe(info);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     let _ = self.handle_unsubscribe(info);
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 36s
[INFO] running `Command { std: "docker" "inspect" "5324dd025685272164973ef3e2a8f47e3668a1a1790fa689986b2a354b8e2be6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5324dd025685272164973ef3e2a8f47e3668a1a1790fa689986b2a354b8e2be6", kill_on_drop: false }`
[INFO] [stdout] 5324dd025685272164973ef3e2a8f47e3668a1a1790fa689986b2a354b8e2be6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 21d573d735a106f5d920f86a678d7c9848cb0f207ce080e9ed8019fc8d49d2c6
[INFO] running `Command { std: "docker" "start" "-a" "21d573d735a106f5d920f86a678d7c9848cb0f207ce080e9ed8019fc8d49d2c6", kill_on_drop: false }`
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/common/src/http/mod.rs:193:24
[INFO] [stdout]     |
[INFO] [stdout] 193 |                     if let uri = Uri::unmarshal(url)? {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sessions` is never read
[INFO] [stdout]   --> lib/common/src/server/tcp_server.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TcpServer<T>
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     sessions: HashMap<String, Arc<Box<T>>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `top_left` and `bottom_right` are never read
[INFO] [stdout]   --> lib/codec/h264/src/decoder/nal/pps.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct SliceRect {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 44 |     top_left: u32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 45 |     bottom_right: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SliceRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:547:24
[INFO] [stdout]     |
[INFO] [stdout] 547 |                     if let origin = SessionOrigin::unmarshal(kv[1])?{
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:556:24
[INFO] [stdout]     |
[INFO] [stdout] 556 |                     if let connection= SessionConnection::unmarshal(kv[1])?{
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:567:24
[INFO] [stdout]     |
[INFO] [stdout] 567 |                     if let bandwith = SessionBandwidth::unmarshal(kv[1])?{
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:588:24
[INFO] [stdout]     |
[INFO] [stdout] 588 |                     if let timing = SessionTiming::unmarshal(kv[1])? {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:598:24
[INFO] [stdout]     |
[INFO] [stdout] 598 |                     if let repeat = SessionRepeat::unmarshal(kv[1])? {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:608:24
[INFO] [stdout]     |
[INFO] [stdout] 608 |                     if let sdp_media = SessionMediaInfo::unmarshal(kv[1])?{
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timing` is never read
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct SessionTimeDescription {
[INFO] [stdout]     |            ---------------------- field in this struct
[INFO] [stdout] 155 |     timing: SessionTiming,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SessionTimeDescription` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `raw_string`, `uri`, `email`, and `phone_number` are never read
[INFO] [stdout]    --> lib/protocol/sdp/src/lib.rs:463:5
[INFO] [stdout]     |
[INFO] [stdout] 462 | pub struct SessionDescription {
[INFO] [stdout]     |            ------------------ fields in this struct
[INFO] [stdout] 463 |     raw_string: String,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     uri: String,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 475 |     // e=<email-address>
[INFO] [stdout] 476 |     email: String,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 477 |     // p=<phone-number>
[INFO] [stdout] 478 |     phone_number: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SessionDescription` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h265.rs:347:25
[INFO] [stdout]     |
[INFO] [stdout] 347 |             if let Some(f) = &self.on_frame_handler {
[INFO] [stdout]     |                         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]   --> lib/protocol/rtp/src/rtp_aac.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             f(packet.clone());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_aac.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |             f(rtp_packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]   --> lib/protocol/rtp/src/rtp_h264.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |                 f(packet.clone());
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h264.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |             f(packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h264.rs:167:13
[INFO] [stdout]     |
[INFO] [stdout] 167 |             f(rtp_packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h265.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |                 f(packet.clone());
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h265.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |             f(packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stdout]    --> lib/protocol/rtp/src/rtp_h265.rs:186:13
[INFO] [stdout]     |
[INFO] [stdout] 186 |             f(rtp_packet.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `oneshot`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:24:25
[INFO] [stdout]    |
[INFO] [stdout] 24 | use tokio::sync::{mpsc, oneshot, Mutex};
[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: `vcp_media_common::bytesio::bytes_errors::BytesWriteError`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use vcp_media_common::bytesio::bytes_errors::BytesWriteError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesWriter`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:27:65
[INFO] [stdout]    |
[INFO] [stdout] 27 | use vcp_media_common::bytesio::bytes_writer::{AsyncBytesWriter, BytesWriter};
[INFO] [stdout]    |                                                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HttpResponse`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:31:58
[INFO] [stdout]    |
[INFO] [stdout] 31 | use vcp_media_common::http::{HttpRequest as RtspRequest, HttpResponse};
[INFO] [stdout]    |                                                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ServerSessionHandler`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:33:48
[INFO] [stdout]    |
[INFO] [stdout] 33 | use vcp_media_common::server::{NetworkSession, ServerSessionHandler, ServerSessionType};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:518:16
[INFO] [stdout]     |
[INFO] [stdout] 518 |             if let sdp = SessionDescription::unmarshal(request_body)? {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:819:9
[INFO] [stdout]     |
[INFO] [stdout] 775 | /             loop {
[INFO] [stdout] 776 | |                 if let Some(frame_data) = receiver.recv().await {
[INFO] [stdout] 777 | |                     match frame_data {
[INFO] [stdout] 778 | |                         FrameData::Audio {
[INFO] [stdout] ...   |
[INFO] [stdout] 817 | |             }
[INFO] [stdout]     | |_____________- any code following this expression is unreachable
[INFO] [stdout] 818 |
[INFO] [stdout] 819 |           Ok(())
[INFO] [stdout]     |           ^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:707:13
[INFO] [stdout]     |
[INFO] [stdout] 707 |         let mut response =  {
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:831:13
[INFO] [stdout]     |
[INFO] [stdout] 831 |         let mut response =  {
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:871:13
[INFO] [stdout]     |
[INFO] [stdout] 871 |         let mut response =  {
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDateTime::timestamp`: use `.and_utc().timestamp()` instead
[INFO] [stdout]   --> lib/protocol/rtsp/src/message/range.rs:44:30
[INFO] [stdout]    |
[INFO] [stdout] 44 |                     datetime.timestamp()
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vcp_media_common::Marshal`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | use vcp_media_common::Marshal as RtpMarshal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::SinkExt`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use futures::SinkExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:57:38
[INFO] [stdout]    |
[INFO] [stdout] 57 |     async fn handle_close(&mut self, context: &mut RtspServerSessionContext) -> Result<(), RtspSessionError>{
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `channel_identifier`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:61:94
[INFO] [stdout]    |
[INFO] [stdout] 61 | ...ssionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSessionError>{
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `length`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:61:118
[INFO] [stdout]    |
[INFO] [stdout] 61 | ..., channel_identifier: u8, length: usize) -> Result<(), RtspSessionError>{
[INFO] [stdout]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:61:54
[INFO] [stdout]    |
[INFO] [stdout] 61 | ..._rtsp_message(&mut self, context: &mut RtspServerSessionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSession...
[INFO] [stdout]    |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:65:40
[INFO] [stdout]    |
[INFO] [stdout] 65 |     async fn handle_options(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResp...
[INFO] [stdout]    |                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:65:80
[INFO] [stdout]    |
[INFO] [stdout] 65 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:69:41
[INFO] [stdout]    |
[INFO] [stdout] 69 |     async fn handle_describe(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescrip...
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:69:81
[INFO] [stdout]    |
[INFO] [stdout] 69 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescription, RtspSessionError> {
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame_receiver`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:73:109
[INFO] [stdout]    |
[INFO] [stdout] 73 | ...st: &RtspRequest, frame_receiver: FrameDataReceiver) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:73:41
[INFO] [stdout]    |
[INFO] [stdout] 73 |     async fn handle_announce(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest, frame_receiver: FrameDat...
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:73:81
[INFO] [stdout]    |
[INFO] [stdout] 73 | ...rverSessionContext, rtsp_request: &RtspRequest, frame_receiver: FrameDataReceiver) -> Result<Option<RtspResponse>, RtspSessionErr...
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:77:38
[INFO] [stdout]    |
[INFO] [stdout] 77 |     async fn handle_setup(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespon...
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:77:78
[INFO] [stdout]    |
[INFO] [stdout] 77 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame_sender`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:81:105
[INFO] [stdout]    |
[INFO] [stdout] 81 | ...uest: &RtspRequest, frame_sender: FrameDataSender) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:81:37
[INFO] [stdout]    |
[INFO] [stdout] 81 |     async fn handle_play(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest, frame_sender: FrameDataSende...
[INFO] [stdout]    |                                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:81:77
[INFO] [stdout]    |
[INFO] [stdout] 81 | ...rverSessionContext, rtsp_request: &RtspRequest, frame_sender: FrameDataSender) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:85:39
[INFO] [stdout]    |
[INFO] [stdout] 85 |     async fn handle_record(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespo...
[INFO] [stdout]    |                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:85:79
[INFO] [stdout]    |
[INFO] [stdout] 85 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:89:41
[INFO] [stdout]    |
[INFO] [stdout] 89 |     async fn handle_teardown(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRes...
[INFO] [stdout]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]   --> lib/protocol/rtsp/src/session/server_session.rs:89:81
[INFO] [stdout]    |
[INFO] [stdout] 89 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `remote_addr` is never read
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub struct RtspServerSession {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 167 |     id: String,
[INFO] [stdout] 168 |     remote_addr: SocketAddr,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print` is never used
[INFO] [stdout]   --> lib/protocol/rtsp/src/utils.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn print(title: &str, data: BytesMut) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |             h.handle_close(&mut self.context).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 202 |             let _ = h.handle_close(&mut self.context).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtsp/src/session/server_session.rs:362:13
[INFO] [stdout]     |
[INFO] [stdout] 362 |             self.reader.read_bytes(rtsp_request.origin_length);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 362 |             let _ = self.reader.read_bytes(rtsp_request.origin_length);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::cache::Cache`
[INFO] [stdout]   --> lib/protocol/rtmp/src/session/server_session.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::session::cache::Cache;
[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::fmt`
[INFO] [stdout]  --> lib/protocol/rtmp/src/session/cache/errors.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     std::fmt,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mpeg4_aac::Mpeg4AacProcessor` and `mpeg4_avc::Mpeg4AvcProcessor`
[INFO] [stdout]   --> lib/protocol/rtmp/src/session/cache/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |         mpeg4_aac::Mpeg4AacProcessor,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 16 |         mpeg4_avc::Mpeg4AvcProcessor,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_size`
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:329:29
[INFO] [stdout]     |
[INFO] [stdout] 329 |                         let data_size = data.len();
[INFO] [stdout]     |                             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_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: `data_size`
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:345:29
[INFO] [stdout]     |
[INFO] [stdout] 345 |                         let data_size = data.len();
[INFO] [stdout]     |                             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `remote_addr` and `gop_num` are never read
[INFO] [stdout]   --> lib/protocol/rtmp/src/session/server_session.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct RtmpServerSession {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 82 |     id: String,
[INFO] [stdout] 83 |     remote_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     gop_num: usize,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `append_port` is never used
[INFO] [stdout]   --> lib/protocol/rtmp/src/utils/mod.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl RtmpUrlParser {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn append_port(&mut self, port: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print` is never used
[INFO] [stdout]  --> lib/protocol/rtmp/src/utils/print.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub fn print(data: BytesMut) {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print2` is never used
[INFO] [stdout]   --> lib/protocol/rtmp/src/utils/print.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn print2(title: &str, data: BytesMut) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `printu8` is never used
[INFO] [stdout]   --> lib/protocol/rtmp/src/utils/print.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn printu8(data: BytesMut) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_array` is never used
[INFO] [stdout]   --> lib/protocol/rtmp/src/utils/print.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn print_array(data: &[u8], len: usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:582:13
[INFO] [stdout]     |
[INFO] [stdout] 582 |             h.save_video_data(data, *timestamp).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 582 |             let _ = h.save_video_data(data, *timestamp).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:607:13
[INFO] [stdout]     |
[INFO] [stdout] 607 |             h.save_audio_data(data, *timestamp).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 607 |             let _ = h.save_audio_data(data, *timestamp).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:636:13
[INFO] [stdout]     |
[INFO] [stdout] 636 |             h.save_metadata(data, *timestamp).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 636 |             let _ = h.save_metadata(data, *timestamp).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]    --> lib/protocol/rtmp/src/session/server_session.rs:783:9
[INFO] [stdout]     |
[INFO] [stdout] 783 |         self.notify_session_end();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling vcp_media_server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `vcp_media_common::server::tcp_server::TcpServer`
[INFO] [stdout]  --> src/manager/service.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use vcp_media_common::server::tcp_server::TcpServer;
[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: `vcp_media_rtmp::session::server_session::RtmpServerSession`
[INFO] [stdout]  --> src/manager/service.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use vcp_media_rtmp::session::server_session::RtmpServerSession;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/manager/message.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vcp_media_common::Marshal`
[INFO] [stdout]   --> src/transmitter/source/rtmp_push_source.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use vcp_media_common::Marshal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StreamInformation`
[INFO] [stdout]   --> src/transmitter/source/rtmp_push_source.rs:11:78
[INFO] [stdout]    |
[INFO] [stdout] 11 | use vcp_media_common::media::{FrameData, FrameDataReceiver, FrameDataSender, StreamInformation};
[INFO] [stdout]    |                                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NetworkSession`
[INFO] [stdout]   --> src/server/rtsp_server.rs:15:47
[INFO] [stdout]    |
[INFO] [stdout] 15 | use vcp_media_common::server::{NetworkServer, NetworkSession, ServerSessionType, SessionError, TcpServerHandler};
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vcp_media_common::server::NetworkServer`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use vcp_media_common::server::NetworkServer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vcp_media_common::server::NetworkServer`
[INFO] [stdout]  --> src/manager/service.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use vcp_media_common::server::NetworkServer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/manager/message.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Debug, Write};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]   --> src/server/rtsp_server.rs:32:37
[INFO] [stdout]    |
[INFO] [stdout] 32 |     async fn send_prior_data(&self, sender: FrameDataSender, sub_type: SubscribeType) -> Result<(), StreamHubError> {
[INFO] [stdout]    |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub_type`
[INFO] [stdout]   --> src/server/rtsp_server.rs:32:62
[INFO] [stdout]    |
[INFO] [stdout] 32 |     async fn send_prior_data(&self, sender: FrameDataSender, sub_type: SubscribeType) -> Result<(), StreamHubError> {
[INFO] [stdout]    |                                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `channel_identifier`
[INFO] [stdout]    --> src/server/rtsp_server.rs:134:90
[INFO] [stdout]     |
[INFO] [stdout] 134 | ...ssionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSessionError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `length`
[INFO] [stdout]    --> src/server/rtsp_server.rs:134:114
[INFO] [stdout]     |
[INFO] [stdout] 134 | ..., channel_identifier: u8, length: usize) -> Result<(), RtspSessionError> {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:134:54
[INFO] [stdout]     |
[INFO] [stdout] 134 |     async fn handle_rtp_over_rtsp_message(&mut self, ctx: &mut RtspServerSessionContext, channel_identifier: u8, length: usize) -> ...
[INFO] [stdout]     |                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:152:40
[INFO] [stdout]     |
[INFO] [stdout] 152 |     async fn handle_options(&mut self, ctx: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespons...
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rtsp_request`
[INFO] [stdout]    --> src/server/rtsp_server.rs:152:76
[INFO] [stdout]     |
[INFO] [stdout] 152 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stdout]     |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:156:41
[INFO] [stdout]     |
[INFO] [stdout] 156 |     async fn handle_describe(&mut self, ctx: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescriptio...
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]    --> src/server/rtsp_server.rs:187:16
[INFO] [stdout]     |
[INFO] [stdout] 187 |             if let sdp = SessionDescription::unmarshal(request_body)? {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]     = help: consider replacing the `if let` with a `let`
[INFO] [stdout]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]    --> src/server/rtsp_server.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let sender = match result_receiver.await? {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/server/rtsp_server.rs:216:16
[INFO] [stdout]     |
[INFO] [stdout] 216 |             Ok(x) => {
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:226:38
[INFO] [stdout]     |
[INFO] [stdout] 226 |     async fn handle_setup(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspResponse...
[INFO] [stdout]     |                                      ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_result_receiver`
[INFO] [stdout]    --> src/server/rtsp_server.rs:232:35
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let (event_result_sender, event_result_receiver) = oneshot::channel();
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_result_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:258:39
[INFO] [stdout]     |
[INFO] [stdout] 258 |     async fn handle_record(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspRespons...
[INFO] [stdout]     |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/server/rtsp_server.rs:262:41
[INFO] [stdout]     |
[INFO] [stdout] 262 |     async fn handle_teardown(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspRespo...
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]    --> src/server/rtmp_server.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let sender = match result_receiver.await {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/server/rtmp_server.rs:180:16
[INFO] [stdout]     |
[INFO] [stdout] 180 |             Ok(x) => {
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_result_receiver`
[INFO] [stdout]    --> src/server/rtmp_server.rs:208:35
[INFO] [stdout]     |
[INFO] [stdout] 208 |         let (event_result_sender, event_result_receiver) = oneshot::channel();
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_result_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_path`
[INFO] [stdout]   --> src/manager/service.rs:96:17
[INFO] [stdout]    |
[INFO] [stdout] 96 |     pub fn load(config_path: &str) -> Self {
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio_err`
[INFO] [stdout]    --> src/transmitter/source/rtsp_push_source.rs:194:36
[INFO] [stdout]     |
[INFO] [stdout] 194 |                         if let Err(audio_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendAudioError) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_err`
[INFO] [stdout]    --> src/transmitter/source/rtsp_push_source.rs:206:36
[INFO] [stdout]     |
[INFO] [stdout] 206 |                         if let Err(video_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendVideoError) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/transmitter/source/rtsp_push_source.rs:146:48
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 StreamTransmitEvent::UnPublish{info} => {
[INFO] [stdout]     |                                                ^^^^ help: try ignoring the field: `info: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio_err`
[INFO] [stdout]    --> src/transmitter/source/rtmp_push_source.rs:187:36
[INFO] [stdout]     |
[INFO] [stdout] 187 |                         if let Err(audio_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendAudioError) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_err`
[INFO] [stdout]    --> src/transmitter/source/rtmp_push_source.rs:199:36
[INFO] [stdout]     |
[INFO] [stdout] 199 |                         if let Err(video_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendVideoError) {
[INFO] [stdout]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/transmitter/source/rtmp_push_source.rs:139:48
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 StreamTransmitEvent::UnPublish{info} => {
[INFO] [stdout]     |                                                ^^^^ help: try ignoring the field: `info: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sender`
[INFO] [stdout]    --> src/transmitter/source/rtmp_push_source.rs:160:47
[INFO] [stdout]     |
[INFO] [stdout] 160 |                 StreamTransmitEvent::Request{ sender } => {
[INFO] [stdout]     |                                               ^^^^^^ help: try ignoring the field: `sender: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthError` is never used
[INFO] [stdout]  --> src/common/errors.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum AuthError {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthAlgorithm` is never used
[INFO] [stdout]   --> src/common/auth.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum AuthAlgorithm {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthType` is never used
[INFO] [stdout]   --> src/common/auth.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum AuthType {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Auth` is never constructed
[INFO] [stdout]   --> src/common/auth.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Auth {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `authenticate`, and `check` are never used
[INFO] [stdout]   --> src/common/auth.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Auth {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 35 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn authenticate(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     fn check(&self, stream_name: &String, auth_str: &str) -> bool {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OPTIONS` is never used
[INFO] [stdout]  --> src/common/define.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 |     pub const OPTIONS: &str = "OPTIONS";
[INFO] [stdout]   |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PATCH` is never used
[INFO] [stdout]  --> src/common/define.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub const PATCH: &str = "PATCH";
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POST` is never used
[INFO] [stdout]  --> src/common/define.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub const POST: &str = "POST";
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE` is never used
[INFO] [stdout]  --> src/common/define.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub const DELETE: &str = "DELETE";
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET` is never used
[INFO] [stdout]  --> src/common/define.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub const GET: &str = "GET";
[INFO] [stdout]   |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Push` is never constructed
[INFO] [stdout]   --> src/common/stream.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum SubscribeType {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 39 |     Push,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SubscribeType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Pull` is never constructed
[INFO] [stdout]   --> src/common/stream.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum PublishType {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 46 |     Push,
[INFO] [stdout] 47 |     Pull,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PublishType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NotifyInfo` is never constructed
[INFO] [stdout]   --> src/common/stream.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NotifyInfo {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SubDataType` is never used
[INFO] [stdout]   --> src/common/stream.rs:59:10
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub enum SubDataType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PubDataType` is never used
[INFO] [stdout]   --> src/common/stream.rs:65:10
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub enum PubDataType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `unsubscribe_from_stream_hub` is never used
[INFO] [stdout]   --> src/server/rtsp_server.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl VcpRtspServerSessionHandler {
[INFO] [stdout]    | -------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn unsubscribe_from_stream_hub(&mut self, _stream_path: String) -> Result<(), RtspSessionError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TStreamPublisher` is never used
[INFO] [stdout]  --> src/manager/mod.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait TStreamPublisher {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TStreamSubscriber` is never used
[INFO] [stdout]   --> src/manager/mod.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait TStreamSubscriber {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TStreamTransmitter` is never used
[INFO] [stdout]   --> src/manager/mod.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub trait TStreamTransmitter {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/manager/service.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ServiceManager {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 11 |     config: Config,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `publish_type` and `publisher_id` are never read
[INFO] [stdout]   --> src/manager/message.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct StreamPublishInfo {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 65 |     pub stream_id: StreamId,
[INFO] [stdout] 66 |     pub publish_type: PublishType,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub publisher_id: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StreamPublishInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamPullInfo` is never constructed
[INFO] [stdout]   --> src/manager/message.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct StreamPullInfo {}
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `StreamUnSubscribeError` is never constructed
[INFO] [stdout]   --> src/manager/stream_hub.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum StreamHubError {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     StreamUnSubscribeError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StreamHubError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `default_sink` is never read
[INFO] [stdout]   --> src/transmitter/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct StreamTransmitter {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     default_sink: Arc<Box<FakeSink>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StreamSource` is never used
[INFO] [stdout]  --> src/transmitter/traits.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait StreamSource {
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StreamSink` is never used
[INFO] [stdout]   --> src/transmitter/traits.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub trait StreamSink {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StreamFilter` is never used
[INFO] [stdout]   --> src/transmitter/traits.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub trait StreamFilter: StreamSource + StreamSink {}
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream_id` is never read
[INFO] [stdout]   --> src/transmitter/source/rtsp_push_source.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RtspPushSource {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 16 |     stream_id: StreamId,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream_id` is never read
[INFO] [stdout]   --> src/transmitter/source/rtmp_push_source.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct RtmpPushSource {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 15 |     stream_id: StreamId,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtsp_server.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |                     self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 117 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtsp_server.rs:126:21
[INFO] [stdout]     |
[INFO] [stdout] 126 |                     self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 126 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtsp_server.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         self.event_producer.send(request_event);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let _ = self.event_producer.send(request_event);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtsp_server.rs:213:9
[INFO] [stdout]     |
[INFO] [stdout] 213 |         self.event_producer.send(publish_event);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 213 |         let _ = self.event_producer.send(publish_event);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtmp_server.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |         self.transmit_handler.save_metadata(chunk_body, timestamp).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 147 |         let _ = self.transmit_handler.save_metadata(chunk_body, timestamp).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtmp_server.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 175 |         self.event_producer.send(publish_event);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 175 |         let _ = self.event_producer.send(publish_event);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtmp_server.rs:240:21
[INFO] [stdout]     |
[INFO] [stdout] 240 |                     self.event_producer.send(unsubscribe_event);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 240 |                     let _ = self.event_producer.send(unsubscribe_event);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/server/rtmp_server.rs:249:21
[INFO] [stdout]     |
[INFO] [stdout] 249 |                     self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 249 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/manager/stream_hub.rs:68:21
[INFO] [stdout]    |
[INFO] [stdout] 68 |                     self.handle_publish(info, sdp, receiver, stream_handler).await;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 68 |                     let _ = self.handle_publish(info, sdp, receiver, stream_handler).await;
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/manager/stream_hub.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 79 |                     self.handle_unpublish(info);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 79 |                     let _ = self.handle_unpublish(info);
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/manager/stream_hub.rs:86:21
[INFO] [stdout]    |
[INFO] [stdout] 86 |                     self.handle_subscribe(info, sender);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 86 |                     let _ = self.handle_subscribe(info, sender);
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/manager/stream_hub.rs:98:21
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     self.handle_unsubscribe(info);
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     let _ = self.handle_unsubscribe(info);
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2.88s
[INFO] running `Command { std: "docker" "inspect" "21d573d735a106f5d920f86a678d7c9848cb0f207ce080e9ed8019fc8d49d2c6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "21d573d735a106f5d920f86a678d7c9848cb0f207ce080e9ed8019fc8d49d2c6", kill_on_drop: false }`
[INFO] [stdout] 21d573d735a106f5d920f86a678d7c9848cb0f207ce080e9ed8019fc8d49d2c6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1da2139f86d8e34ef6c7a7af71f9dcc1bb0db21808d2713d2004af875c74d5f3
[INFO] running `Command { std: "docker" "start" "-a" "1da2139f86d8e34ef6c7a7af71f9dcc1bb0db21808d2713d2004af875c74d5f3", kill_on_drop: false }`
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> lib/common/src/http/mod.rs:193:24
[INFO] [stderr]     |
[INFO] [stderr] 193 |                     if let uri = Uri::unmarshal(url)? {
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `sessions` is never read
[INFO] [stderr]   --> lib/common/src/server/tcp_server.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct TcpServer<T>
[INFO] [stderr]    |            --------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 15 |     sessions: HashMap<String, Arc<Box<T>>>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `vcp_media_common` (lib) generated 2 warnings
[INFO] [stderr] warning: fields `top_left` and `bottom_right` are never read
[INFO] [stderr]   --> lib/codec/h264/src/decoder/nal/pps.rs:44:5
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub struct SliceRect {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] 44 |     top_left: u32,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 45 |     bottom_right: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SliceRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `vcp_media_h264` (lib) generated 1 warning
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> lib/protocol/sdp/src/lib.rs:547:24
[INFO] [stderr]     |
[INFO] [stderr] 547 |                     if let origin = SessionOrigin::unmarshal(kv[1])?{
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> lib/protocol/sdp/src/lib.rs:556:24
[INFO] [stderr]     |
[INFO] [stderr] 556 |                     if let connection= SessionConnection::unmarshal(kv[1])?{
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> lib/protocol/sdp/src/lib.rs:567:24
[INFO] [stderr]     |
[INFO] [stderr] 567 |                     if let bandwith = SessionBandwidth::unmarshal(kv[1])?{
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> lib/protocol/sdp/src/lib.rs:588:24
[INFO] [stderr]     |
[INFO] [stderr] 588 |                     if let timing = SessionTiming::unmarshal(kv[1])? {
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> lib/protocol/sdp/src/lib.rs:598:24
[INFO] [stderr]     |
[INFO] [stderr] 598 |                     if let repeat = SessionRepeat::unmarshal(kv[1])? {
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> lib/protocol/sdp/src/lib.rs:608:24
[INFO] [stderr]     |
[INFO] [stderr] 608 |                     if let sdp_media = SessionMediaInfo::unmarshal(kv[1])?{
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr] 
[INFO] [stderr] warning: field `timing` is never read
[INFO] [stderr]    --> lib/protocol/sdp/src/lib.rs:155:5
[INFO] [stderr]     |
[INFO] [stderr] 154 | pub struct SessionTimeDescription {
[INFO] [stderr]     |            ---------------------- field in this struct
[INFO] [stderr] 155 |     timing: SessionTiming,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `SessionTimeDescription` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `raw_string`, `uri`, `email`, and `phone_number` are never read
[INFO] [stderr]    --> lib/protocol/sdp/src/lib.rs:463:5
[INFO] [stderr]     |
[INFO] [stderr] 462 | pub struct SessionDescription {
[INFO] [stderr]     |            ------------------ fields in this struct
[INFO] [stderr] 463 |     raw_string: String,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 474 |     uri: String,
[INFO] [stderr]     |     ^^^
[INFO] [stderr] 475 |     // e=<email-address>
[INFO] [stderr] 476 |     email: String,
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr] 477 |     // p=<phone-number>
[INFO] [stderr] 478 |     phone_number: String,
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `SessionDescription` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `vcp_media_sdp` (lib) generated 8 warnings
[INFO] [stderr] warning: unused variable: `f`
[INFO] [stderr]    --> lib/protocol/rtp/src/rtp_h265.rs:347:25
[INFO] [stderr]     |
[INFO] [stderr] 347 |             if let Some(f) = &self.on_frame_handler {
[INFO] [stderr]     |                         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stderr]   --> lib/protocol/rtp/src/rtp_aac.rs:67:13
[INFO] [stderr]    |
[INFO] [stderr] 67 |             f(packet.clone());
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stderr]    --> lib/protocol/rtp/src/rtp_aac.rs:122:13
[INFO] [stderr]     |
[INFO] [stderr] 122 |             f(rtp_packet.clone());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stderr]   --> lib/protocol/rtp/src/rtp_h264.rs:87:17
[INFO] [stderr]    |
[INFO] [stderr] 87 |                 f(packet.clone());
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stderr]    --> lib/protocol/rtp/src/rtp_h264.rs:110:13
[INFO] [stderr]     |
[INFO] [stderr] 110 |             f(packet.clone());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stderr]    --> lib/protocol/rtp/src/rtp_h264.rs:167:13
[INFO] [stderr]     |
[INFO] [stderr] 167 |             f(rtp_packet.clone());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stderr]    --> lib/protocol/rtp/src/rtp_h265.rs:111:17
[INFO] [stderr]     |
[INFO] [stderr] 111 |                 f(packet.clone());
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stderr]    --> lib/protocol/rtp/src/rtp_h265.rs:131:13
[INFO] [stderr]     |
[INFO] [stderr] 131 |             f(packet.clone());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: unused pinned boxed `Future` trait object that must be used
[INFO] [stderr]    --> lib/protocol/rtp/src/rtp_h265.rs:186:13
[INFO] [stderr]     |
[INFO] [stderr] 186 |             f(rtp_packet.clone());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: `vcp_media_rtp` (lib) generated 9 warnings (run `cargo fix --lib -p vcp_media_rtp` to apply 1 suggestion)
[INFO] [stderr] warning: unused import: `oneshot`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:24:25
[INFO] [stderr]    |
[INFO] [stderr] 24 | use tokio::sync::{mpsc, oneshot, Mutex};
[INFO] [stderr]    |                         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `vcp_media_common::bytesio::bytes_errors::BytesWriteError`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use vcp_media_common::bytesio::bytes_errors::BytesWriteError;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BytesWriter`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:27:65
[INFO] [stderr]    |
[INFO] [stderr] 27 | use vcp_media_common::bytesio::bytes_writer::{AsyncBytesWriter, BytesWriter};
[INFO] [stderr]    |                                                                 ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `HttpResponse`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:31:58
[INFO] [stderr]    |
[INFO] [stderr] 31 | use vcp_media_common::http::{HttpRequest as RtspRequest, HttpResponse};
[INFO] [stderr]    |                                                          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ServerSessionHandler`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:33:48
[INFO] [stderr]    |
[INFO] [stderr] 33 | use vcp_media_common::server::{NetworkSession, ServerSessionHandler, ServerSessionType};
[INFO] [stderr]    |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> lib/protocol/rtsp/src/session/server_session.rs:518:16
[INFO] [stderr]     |
[INFO] [stderr] 518 |             if let sdp = SessionDescription::unmarshal(request_body)? {
[INFO] [stderr]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable expression
[INFO] [stderr]    --> lib/protocol/rtsp/src/session/server_session.rs:819:9
[INFO] [stderr]     |
[INFO] [stderr] 775 | /             loop {
[INFO] [stderr] 776 | |                 if let Some(frame_data) = receiver.recv().await {
[INFO] [stderr] 777 | |                     match frame_data {
[INFO] [stderr] 778 | |                         FrameData::Audio {
[INFO] [stderr] ...   |
[INFO] [stderr] 817 | |             }
[INFO] [stderr]     | |_____________- any code following this expression is unreachable
[INFO] [stderr] 818 |
[INFO] [stderr] 819 |           Ok(())
[INFO] [stderr]     |           ^^^^^^ unreachable expression
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> lib/protocol/rtsp/src/session/server_session.rs:707:13
[INFO] [stderr]     |
[INFO] [stderr] 707 |         let mut response =  {
[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: variable does not need to be mutable
[INFO] [stderr]    --> lib/protocol/rtsp/src/session/server_session.rs:831:13
[INFO] [stderr]     |
[INFO] [stderr] 831 |         let mut response =  {
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> lib/protocol/rtsp/src/session/server_session.rs:871:13
[INFO] [stderr]     |
[INFO] [stderr] 871 |         let mut response =  {
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `chrono::NaiveDateTime::timestamp`: use `.and_utc().timestamp()` instead
[INFO] [stderr]   --> lib/protocol/rtsp/src/message/range.rs:44:30
[INFO] [stderr]    |
[INFO] [stderr] 44 |                     datetime.timestamp()
[INFO] [stderr]    |                              ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `vcp_media_common::Marshal`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:37:5
[INFO] [stderr]    |
[INFO] [stderr] 37 | use vcp_media_common::Marshal as RtpMarshal;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::SinkExt`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use futures::SinkExt;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:57:38
[INFO] [stderr]    |
[INFO] [stderr] 57 |     async fn handle_close(&mut self, context: &mut RtspServerSessionContext) -> Result<(), RtspSessionError>{
[INFO] [stderr]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `channel_identifier`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:61:94
[INFO] [stderr]    |
[INFO] [stderr] 61 | ...ssionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSessionError>{
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_identifier`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `length`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:61:118
[INFO] [stderr]    |
[INFO] [stderr] 61 | ..., channel_identifier: u8, length: usize) -> Result<(), RtspSessionError>{
[INFO] [stderr]    |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:61:54
[INFO] [stderr]    |
[INFO] [stderr] 61 | ..._rtsp_message(&mut self, context: &mut RtspServerSessionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSession...
[INFO] [stderr]    |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:65:40
[INFO] [stderr]    |
[INFO] [stderr] 65 |     async fn handle_options(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResp...
[INFO] [stderr]    |                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rtsp_request`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:65:80
[INFO] [stderr]    |
[INFO] [stderr] 65 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stderr]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:69:41
[INFO] [stderr]    |
[INFO] [stderr] 69 |     async fn handle_describe(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescrip...
[INFO] [stderr]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rtsp_request`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:69:81
[INFO] [stderr]    |
[INFO] [stderr] 69 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescription, RtspSessionError> {
[INFO] [stderr]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `frame_receiver`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:73:109
[INFO] [stderr]    |
[INFO] [stderr] 73 | ...st: &RtspRequest, frame_receiver: FrameDataReceiver) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stderr]    |                      ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_receiver`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:73:41
[INFO] [stderr]    |
[INFO] [stderr] 73 |     async fn handle_announce(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest, frame_receiver: FrameDat...
[INFO] [stderr]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rtsp_request`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:73:81
[INFO] [stderr]    |
[INFO] [stderr] 73 | ...rverSessionContext, rtsp_request: &RtspRequest, frame_receiver: FrameDataReceiver) -> Result<Option<RtspResponse>, RtspSessionErr...
[INFO] [stderr]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:77:38
[INFO] [stderr]    |
[INFO] [stderr] 77 |     async fn handle_setup(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespon...
[INFO] [stderr]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rtsp_request`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:77:78
[INFO] [stderr]    |
[INFO] [stderr] 77 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stderr]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `frame_sender`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:81:105
[INFO] [stderr]    |
[INFO] [stderr] 81 | ...uest: &RtspRequest, frame_sender: FrameDataSender) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stderr]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_sender`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:81:37
[INFO] [stderr]    |
[INFO] [stderr] 81 |     async fn handle_play(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest, frame_sender: FrameDataSende...
[INFO] [stderr]    |                                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rtsp_request`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:81:77
[INFO] [stderr]    |
[INFO] [stderr] 81 | ...rverSessionContext, rtsp_request: &RtspRequest, frame_sender: FrameDataSender) -> Result<Option<RtspResponse>, RtspSessionError>{
[INFO] [stderr]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:85:39
[INFO] [stderr]    |
[INFO] [stderr] 85 |     async fn handle_record(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespo...
[INFO] [stderr]    |                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rtsp_request`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:85:79
[INFO] [stderr]    |
[INFO] [stderr] 85 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stderr]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `context`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:89:41
[INFO] [stderr]    |
[INFO] [stderr] 89 |     async fn handle_teardown(&mut self, context: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRes...
[INFO] [stderr]    |                                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rtsp_request`
[INFO] [stderr]   --> lib/protocol/rtsp/src/session/server_session.rs:89:81
[INFO] [stderr]    |
[INFO] [stderr] 89 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stderr]    |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stderr] 
[INFO] [stderr] warning: field `remote_addr` is never read
[INFO] [stderr]    --> lib/protocol/rtsp/src/session/server_session.rs:168:5
[INFO] [stderr]     |
[INFO] [stderr] 166 | pub struct RtspServerSession {
[INFO] [stderr]     |            ----------------- field in this struct
[INFO] [stderr] 167 |     id: String,
[INFO] [stderr] 168 |     remote_addr: SocketAddr,
[INFO] [stderr]     |     ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `print` is never used
[INFO] [stderr]   --> lib/protocol/rtsp/src/utils.rs:11:8
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub fn print(title: &str, data: BytesMut) {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> lib/protocol/rtsp/src/session/server_session.rs:202:13
[INFO] [stderr]     |
[INFO] [stderr] 202 |             h.handle_close(&mut self.context).await;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 202 |             let _ = h.handle_close(&mut self.context).await;
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> lib/protocol/rtsp/src/session/server_session.rs:362:13
[INFO] [stderr]     |
[INFO] [stderr] 362 |             self.reader.read_bytes(rtsp_request.origin_length);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 362 |             let _ = self.reader.read_bytes(rtsp_request.origin_length);
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::session::cache::Cache`
[INFO] [stderr]   --> lib/protocol/rtmp/src/session/server_session.rs:36:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | use crate::session::cache::Cache;
[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::fmt`
[INFO] [stderr]  --> lib/protocol/rtmp/src/session/cache/errors.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 |     std::fmt,
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `mpeg4_aac::Mpeg4AacProcessor` and `mpeg4_avc::Mpeg4AvcProcessor`
[INFO] [stderr]   --> lib/protocol/rtmp/src/session/cache/mod.rs:15:9
[INFO] [stderr]    |
[INFO] [stderr] 15 |         mpeg4_aac::Mpeg4AacProcessor,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 16 |         mpeg4_avc::Mpeg4AvcProcessor,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `data_size`
[INFO] [stderr]    --> lib/protocol/rtmp/src/session/server_session.rs:329:29
[INFO] [stderr]     |
[INFO] [stderr] 329 |                         let data_size = data.len();
[INFO] [stderr]     |                             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_size`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `data_size`
[INFO] [stderr]    --> lib/protocol/rtmp/src/session/server_session.rs:345:29
[INFO] [stderr]     |
[INFO] [stderr] 345 |                         let data_size = data.len();
[INFO] [stderr]     |                             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_size`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `remote_addr` and `gop_num` are never read
[INFO] [stderr]   --> lib/protocol/rtmp/src/session/server_session.rs:83:5
[INFO] [stderr]    |
[INFO] [stderr] 81 | pub struct RtmpServerSession {
[INFO] [stderr]    |            ----------------- fields in this struct
[INFO] [stderr] 82 |     id: String,
[INFO] [stderr] 83 |     remote_addr: SocketAddr,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 97 |     gop_num: usize,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `append_port` is never used
[INFO] [stderr]   --> lib/protocol/rtmp/src/utils/mod.rs:93:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | impl RtmpUrlParser {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 93 |     pub fn append_port(&mut self, port: String) {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print` is never used
[INFO] [stderr]  --> lib/protocol/rtmp/src/utils/print.rs:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 | pub fn print(data: BytesMut) {
[INFO] [stderr]   |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print2` is never used
[INFO] [stderr]   --> lib/protocol/rtmp/src/utils/print.rs:16:8
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub fn print2(title: &str, data: BytesMut) {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `printu8` is never used
[INFO] [stderr]   --> lib/protocol/rtmp/src/utils/print.rs:30:8
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub fn printu8(data: BytesMut) {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_array` is never used
[INFO] [stderr]   --> lib/protocol/rtmp/src/utils/print.rs:44:8
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub fn print_array(data: &[u8], len: usize) {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> lib/protocol/rtmp/src/session/server_session.rs:582:13
[INFO] [stderr]     |
[INFO] [stderr] 582 |             h.save_video_data(data, *timestamp).await;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 582 |             let _ = h.save_video_data(data, *timestamp).await;
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> lib/protocol/rtmp/src/session/server_session.rs:607:13
[INFO] [stderr]     |
[INFO] [stderr] 607 |             h.save_audio_data(data, *timestamp).await;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 607 |             let _ = h.save_audio_data(data, *timestamp).await;
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> lib/protocol/rtmp/src/session/server_session.rs:636:13
[INFO] [stderr]     |
[INFO] [stderr] 636 |             h.save_metadata(data, *timestamp).await;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 636 |             let _ = h.save_metadata(data, *timestamp).await;
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused implementer of `Future` that must be used
[INFO] [stderr]    --> lib/protocol/rtmp/src/session/server_session.rs:783:9
[INFO] [stderr]     |
[INFO] [stderr] 783 |         self.notify_session_end();
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: `vcp_media_rtsp` (lib) generated 37 warnings (run `cargo fix --lib -p vcp_media_rtsp` to apply 28 suggestions)
[INFO] [stderr] warning: `vcp_media_rtmp` (lib) generated 15 warnings (run `cargo fix --lib -p vcp_media_rtmp` to apply 5 suggestions)
[INFO] [stderr] warning: unused import: `vcp_media_common::server::tcp_server::TcpServer`
[INFO] [stderr]  --> src/manager/service.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use vcp_media_common::server::tcp_server::TcpServer;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `vcp_media_rtmp::session::server_session::RtmpServerSession`
[INFO] [stderr]  --> src/manager/service.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use vcp_media_rtmp::session::server_session::RtmpServerSession;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `async_trait::async_trait`
[INFO] [stderr]  --> src/manager/message.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use async_trait::async_trait;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `vcp_media_common::Marshal`
[INFO] [stderr]   --> src/transmitter/source/rtmp_push_source.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use vcp_media_common::Marshal;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `StreamInformation`
[INFO] [stderr]   --> src/transmitter/source/rtmp_push_source.rs:11:78
[INFO] [stderr]    |
[INFO] [stderr] 11 | use vcp_media_common::media::{FrameData, FrameDataReceiver, FrameDataSender, StreamInformation};
[INFO] [stderr]    |                                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `NetworkSession`
[INFO] [stderr]   --> src/server/rtsp_server.rs:15:47
[INFO] [stderr]    |
[INFO] [stderr] 15 | use vcp_media_common::server::{NetworkServer, NetworkSession, ServerSessionType, SessionError, TcpServerHandler};
[INFO] [stderr]    |                                               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `vcp_media_common::server::NetworkServer`
[INFO] [stderr]  --> src/main.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use vcp_media_common::server::NetworkServer;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `vcp_media_common::server::NetworkServer`
[INFO] [stderr]  --> src/manager/service.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use vcp_media_common::server::NetworkServer;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Write`
[INFO] [stderr]  --> src/manager/message.rs:1:23
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::fmt::{Debug, Write};
[INFO] [stderr]   |                       ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sender`
[INFO] [stderr]   --> src/server/rtsp_server.rs:32:37
[INFO] [stderr]    |
[INFO] [stderr] 32 |     async fn send_prior_data(&self, sender: FrameDataSender, sub_type: SubscribeType) -> Result<(), StreamHubError> {
[INFO] [stderr]    |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sub_type`
[INFO] [stderr]   --> src/server/rtsp_server.rs:32:62
[INFO] [stderr]    |
[INFO] [stderr] 32 |     async fn send_prior_data(&self, sender: FrameDataSender, sub_type: SubscribeType) -> Result<(), StreamHubError> {
[INFO] [stderr]    |                                                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_type`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `channel_identifier`
[INFO] [stderr]    --> src/server/rtsp_server.rs:134:90
[INFO] [stderr]     |
[INFO] [stderr] 134 | ...ssionContext, channel_identifier: u8, length: usize) -> Result<(), RtspSessionError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_channel_identifier`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `length`
[INFO] [stderr]    --> src/server/rtsp_server.rs:134:114
[INFO] [stderr]     |
[INFO] [stderr] 134 | ..., channel_identifier: u8, length: usize) -> Result<(), RtspSessionError> {
[INFO] [stderr]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]    --> src/server/rtsp_server.rs:134:54
[INFO] [stderr]     |
[INFO] [stderr] 134 |     async fn handle_rtp_over_rtsp_message(&mut self, ctx: &mut RtspServerSessionContext, channel_identifier: u8, length: usize) -> ...
[INFO] [stderr]     |                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]    --> src/server/rtsp_server.rs:152:40
[INFO] [stderr]     |
[INFO] [stderr] 152 |     async fn handle_options(&mut self, ctx: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspRespons...
[INFO] [stderr]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rtsp_request`
[INFO] [stderr]    --> src/server/rtsp_server.rs:152:76
[INFO] [stderr]     |
[INFO] [stderr] 152 | ...rverSessionContext, rtsp_request: &RtspRequest) -> Result<Option<RtspResponse>, RtspSessionError> {
[INFO] [stderr]     |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rtsp_request`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]    --> src/server/rtsp_server.rs:156:41
[INFO] [stderr]     |
[INFO] [stderr] 156 |     async fn handle_describe(&mut self, ctx: &mut RtspServerSessionContext, rtsp_request: &RtspRequest) -> Result<SessionDescriptio...
[INFO] [stderr]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]    --> src/server/rtsp_server.rs:187:16
[INFO] [stderr]     |
[INFO] [stderr] 187 |             if let sdp = SessionDescription::unmarshal(request_body)? {
[INFO] [stderr]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]     = help: consider replacing the `if let` with a `let`
[INFO] [stderr]     = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sender`
[INFO] [stderr]    --> src/server/rtsp_server.rs:215:13
[INFO] [stderr]     |
[INFO] [stderr] 215 |         let sender = match result_receiver.await? {
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `x`
[INFO] [stderr]    --> src/server/rtsp_server.rs:216:16
[INFO] [stderr]     |
[INFO] [stderr] 216 |             Ok(x) => {
[INFO] [stderr]     |                ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]    --> src/server/rtsp_server.rs:226:38
[INFO] [stderr]     |
[INFO] [stderr] 226 |     async fn handle_setup(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspResponse...
[INFO] [stderr]     |                                      ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `event_result_receiver`
[INFO] [stderr]    --> src/server/rtsp_server.rs:232:35
[INFO] [stderr]     |
[INFO] [stderr] 232 |         let (event_result_sender, event_result_receiver) = oneshot::channel();
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_result_receiver`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]    --> src/server/rtsp_server.rs:258:39
[INFO] [stderr]     |
[INFO] [stderr] 258 |     async fn handle_record(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspRespons...
[INFO] [stderr]     |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]    --> src/server/rtsp_server.rs:262:41
[INFO] [stderr]     |
[INFO] [stderr] 262 |     async fn handle_teardown(&mut self, ctx: &mut RtspServerSessionContext, _rtsp_request: &RtspRequest) -> Result<Option<RtspRespo...
[INFO] [stderr]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sender`
[INFO] [stderr]    --> src/server/rtmp_server.rs:179:13
[INFO] [stderr]     |
[INFO] [stderr] 179 |         let sender = match result_receiver.await {
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sender`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `x`
[INFO] [stderr]    --> src/server/rtmp_server.rs:180:16
[INFO] [stderr]     |
[INFO] [stderr] 180 |             Ok(x) => {
[INFO] [stderr]     |                ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `event_result_receiver`
[INFO] [stderr]    --> src/server/rtmp_server.rs:208:35
[INFO] [stderr]     |
[INFO] [stderr] 208 |         let (event_result_sender, event_result_receiver) = oneshot::channel();
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_result_receiver`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `config_path`
[INFO] [stderr]   --> src/manager/service.rs:96:17
[INFO] [stderr]    |
[INFO] [stderr] 96 |     pub fn load(config_path: &str) -> Self {
[INFO] [stderr]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_path`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audio_err`
[INFO] [stderr]    --> src/transmitter/source/rtsp_push_source.rs:194:36
[INFO] [stderr]     |
[INFO] [stderr] 194 |                         if let Err(audio_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendAudioError) {
[INFO] [stderr]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_err`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `video_err`
[INFO] [stderr]    --> src/transmitter/source/rtsp_push_source.rs:206:36
[INFO] [stderr]     |
[INFO] [stderr] 206 |                         if let Err(video_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendVideoError) {
[INFO] [stderr]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_err`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `info`
[INFO] [stderr]    --> src/transmitter/source/rtsp_push_source.rs:146:48
[INFO] [stderr]     |
[INFO] [stderr] 146 |                 StreamTransmitEvent::UnPublish{info} => {
[INFO] [stderr]     |                                                ^^^^ help: try ignoring the field: `info: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audio_err`
[INFO] [stderr]    --> src/transmitter/source/rtmp_push_source.rs:187:36
[INFO] [stderr]     |
[INFO] [stderr] 187 |                         if let Err(audio_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendAudioError) {
[INFO] [stderr]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_err`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `video_err`
[INFO] [stderr]    --> src/transmitter/source/rtmp_push_source.rs:199:36
[INFO] [stderr]     |
[INFO] [stderr] 199 |                         if let Err(video_err) = v.send(data.clone()).map_err(|_| StreamTransmitError::SendVideoError) {
[INFO] [stderr]     |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_err`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `info`
[INFO] [stderr]    --> src/transmitter/source/rtmp_push_source.rs:139:48
[INFO] [stderr]     |
[INFO] [stderr] 139 |                 StreamTransmitEvent::UnPublish{info} => {
[INFO] [stderr]     |                                                ^^^^ help: try ignoring the field: `info: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sender`
[INFO] [stderr]    --> src/transmitter/source/rtmp_push_source.rs:160:47
[INFO] [stderr]     |
[INFO] [stderr] 160 |                 StreamTransmitEvent::Request{ sender } => {
[INFO] [stderr]     |                                               ^^^^^^ help: try ignoring the field: `sender: _`
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AuthError` is never used
[INFO] [stderr]  --> src/common/errors.rs:5:10
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub enum AuthError {
[INFO] [stderr]   |          ^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AuthAlgorithm` is never used
[INFO] [stderr]   --> src/common/auth.rs:10:10
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub enum AuthAlgorithm {
[INFO] [stderr]    |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AuthType` is never used
[INFO] [stderr]   --> src/common/auth.rs:20:10
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub enum AuthType {
[INFO] [stderr]    |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Auth` is never constructed
[INFO] [stderr]   --> src/common/auth.rs:27:12
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub struct Auth {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `authenticate`, and `check` are never used
[INFO] [stderr]   --> src/common/auth.rs:35:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | impl Auth {
[INFO] [stderr]    | --------- associated items in this implementation
[INFO] [stderr] 35 |     pub fn new(
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 |     pub fn authenticate(
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 95 |     fn check(&self, stream_name: &String, auth_str: &str) -> bool {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `OPTIONS` is never used
[INFO] [stderr]  --> src/common/define.rs:4:15
[INFO] [stderr]   |
[INFO] [stderr] 4 |     pub const OPTIONS: &str = "OPTIONS";
[INFO] [stderr]   |               ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PATCH` is never used
[INFO] [stderr]  --> src/common/define.rs:5:15
[INFO] [stderr]   |
[INFO] [stderr] 5 |     pub const PATCH: &str = "PATCH";
[INFO] [stderr]   |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `POST` is never used
[INFO] [stderr]  --> src/common/define.rs:6:15
[INFO] [stderr]   |
[INFO] [stderr] 6 |     pub const POST: &str = "POST";
[INFO] [stderr]   |               ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DELETE` is never used
[INFO] [stderr]  --> src/common/define.rs:7:15
[INFO] [stderr]   |
[INFO] [stderr] 7 |     pub const DELETE: &str = "DELETE";
[INFO] [stderr]   |               ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GET` is never used
[INFO] [stderr]  --> src/common/define.rs:8:15
[INFO] [stderr]   |
[INFO] [stderr] 8 |     pub const GET: &str = "GET";
[INFO] [stderr]   |               ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Push` is never constructed
[INFO] [stderr]   --> src/common/stream.rs:39:5
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub enum SubscribeType {
[INFO] [stderr]    |          ------------- variant in this enum
[INFO] [stderr] 39 |     Push,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SubscribeType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Pull` is never constructed
[INFO] [stderr]   --> src/common/stream.rs:47:5
[INFO] [stderr]    |
[INFO] [stderr] 45 | pub enum PublishType {
[INFO] [stderr]    |          ----------- variant in this enum
[INFO] [stderr] 46 |     Push,
[INFO] [stderr] 47 |     Pull,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PublishType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `NotifyInfo` is never constructed
[INFO] [stderr]   --> src/common/stream.rs:51:12
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub struct NotifyInfo {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SubDataType` is never used
[INFO] [stderr]   --> src/common/stream.rs:59:10
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub enum SubDataType {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `PubDataType` is never used
[INFO] [stderr]   --> src/common/stream.rs:65:10
[INFO] [stderr]    |
[INFO] [stderr] 65 | pub enum PubDataType {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `unsubscribe_from_stream_hub` is never used
[INFO] [stderr]   --> src/server/rtsp_server.rs:76:12
[INFO] [stderr]    |
[INFO] [stderr] 50 | impl VcpRtspServerSessionHandler {
[INFO] [stderr]    | -------------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 76 |     pub fn unsubscribe_from_stream_hub(&mut self, _stream_path: String) -> Result<(), RtspSessionError> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `TStreamPublisher` is never used
[INFO] [stderr]  --> src/manager/mod.rs:5:11
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub trait TStreamPublisher {
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `TStreamSubscriber` is never used
[INFO] [stderr]   --> src/manager/mod.rs:12:11
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub trait TStreamSubscriber {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `TStreamTransmitter` is never used
[INFO] [stderr]   --> src/manager/mod.rs:18:11
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub trait TStreamTransmitter {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `config` is never read
[INFO] [stderr]   --> src/manager/service.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct ServiceManager {
[INFO] [stderr]    |            -------------- field in this struct
[INFO] [stderr] 11 |     config: Config,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `publish_type` and `publisher_id` are never read
[INFO] [stderr]   --> src/manager/message.rs:66:9
[INFO] [stderr]    |
[INFO] [stderr] 64 | pub struct StreamPublishInfo {
[INFO] [stderr]    |            ----------------- fields in this struct
[INFO] [stderr] 65 |     pub stream_id: StreamId,
[INFO] [stderr] 66 |     pub publish_type: PublishType,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 67 |     pub publisher_id: String,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `StreamPublishInfo` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StreamPullInfo` is never constructed
[INFO] [stderr]   --> src/manager/message.rs:78:12
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub struct StreamPullInfo {}
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `StreamUnSubscribeError` is never constructed
[INFO] [stderr]   --> src/manager/stream_hub.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub enum StreamHubError {
[INFO] [stderr]    |          -------------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 18 |     StreamUnSubscribeError,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `StreamHubError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `default_sink` is never read
[INFO] [stderr]   --> src/transmitter/mod.rs:40:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub struct StreamTransmitter {
[INFO] [stderr]    |            ----------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 40 |     default_sink: Arc<Box<FakeSink>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `StreamSource` is never used
[INFO] [stderr]  --> src/transmitter/traits.rs:7:11
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub trait StreamSource {
[INFO] [stderr]   |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `StreamSink` is never used
[INFO] [stderr]   --> src/transmitter/traits.rs:22:11
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub trait StreamSink {
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `StreamFilter` is never used
[INFO] [stderr]   --> src/transmitter/traits.rs:29:11
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub trait StreamFilter: StreamSource + StreamSink {}
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `stream_id` is never read
[INFO] [stderr]   --> src/transmitter/source/rtsp_push_source.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct RtspPushSource {
[INFO] [stderr]    |            -------------- field in this struct
[INFO] [stderr] 16 |     stream_id: StreamId,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `stream_id` is never read
[INFO] [stderr]   --> src/transmitter/source/rtmp_push_source.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub struct RtmpPushSource {
[INFO] [stderr]    |            -------------- field in this struct
[INFO] [stderr] 15 |     stream_id: StreamId,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/server/rtsp_server.rs:117:21
[INFO] [stderr]     |
[INFO] [stderr] 117 |                     self.event_producer.send(unpublish_event);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 117 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/server/rtsp_server.rs:126:21
[INFO] [stderr]     |
[INFO] [stderr] 126 |                     self.event_producer.send(unpublish_event);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 126 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/server/rtsp_server.rs:170:9
[INFO] [stderr]     |
[INFO] [stderr] 170 |         self.event_producer.send(request_event);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 170 |         let _ = self.event_producer.send(request_event);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/server/rtsp_server.rs:213:9
[INFO] [stderr]     |
[INFO] [stderr] 213 |         self.event_producer.send(publish_event);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 213 |         let _ = self.event_producer.send(publish_event);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/server/rtmp_server.rs:147:9
[INFO] [stderr]     |
[INFO] [stderr] 147 |         self.transmit_handler.save_metadata(chunk_body, timestamp).await;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 147 |         let _ = self.transmit_handler.save_metadata(chunk_body, timestamp).await;
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/server/rtmp_server.rs:175:9
[INFO] [stderr]     |
[INFO] [stderr] 175 |         self.event_producer.send(publish_event);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 175 |         let _ = self.event_producer.send(publish_event);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/server/rtmp_server.rs:240:21
[INFO] [stderr]     |
[INFO] [stderr] 240 |                     self.event_producer.send(unsubscribe_event);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 240 |                     let _ = self.event_producer.send(unsubscribe_event);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/server/rtmp_server.rs:249:21
[INFO] [stderr]     |
[INFO] [stderr] 249 |                     self.event_producer.send(unpublish_event);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 249 |                     let _ = self.event_producer.send(unpublish_event);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/manager/stream_hub.rs:68:21
[INFO] [stderr]    |
[INFO] [stderr] 68 |                     self.handle_publish(info, sdp, receiver, stream_handler).await;
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 68 |                     let _ = self.handle_publish(info, sdp, receiver, stream_handler).await;
[INFO] [stderr]    |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/manager/stream_hub.rs:79:21
[INFO] [stderr]    |
[INFO] [stderr] 79 |                     self.handle_unpublish(info);
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 79 |                     let _ = self.handle_unpublish(info);
[INFO] [stderr]    |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/manager/stream_hub.rs:86:21
[INFO] [stderr]    |
[INFO] [stderr] 86 |                     self.handle_subscribe(info, sender);
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 86 |                     let _ = self.handle_subscribe(info, sender);
[INFO] [stderr]    |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/manager/stream_hub.rs:98:21
[INFO] [stderr]    |
[INFO] [stderr] 98 |                     self.handle_unsubscribe(info);
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 98 |                     let _ = self.handle_unsubscribe(info);
[INFO] [stderr]    |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `vcp_media_server` (bin "vcp_media_server" test) generated 76 warnings (run `cargo fix --bin "vcp_media_server" -p vcp_media_server --tests` to apply 30 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/vcp_media_server-5f8aa54be1cf8a1e)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1da2139f86d8e34ef6c7a7af71f9dcc1bb0db21808d2713d2004af875c74d5f3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1da2139f86d8e34ef6c7a7af71f9dcc1bb0db21808d2713d2004af875c74d5f3", kill_on_drop: false }`
[INFO] [stdout] 1da2139f86d8e34ef6c7a7af71f9dcc1bb0db21808d2713d2004af875c74d5f3
