[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] checking lizhiyong2000/vcp-media-server against try#bac5816c5f3d02cebd0599070af62d1782530294 for pr-150408
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flizhiyong2000%2Fvcp-media-server" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-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-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/lizhiyong2000/vcp-media-server on toolchain bac5816c5f3d02cebd0599070af62d1782530294
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bac5816c5f3d02cebd0599070af62d1782530294" "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" "+bac5816c5f3d02cebd0599070af62d1782530294" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking lizhiyong2000/vcp-media-server against try#bac5816c5f3d02cebd0599070af62d1782530294 for pr-150408
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flizhiyong2000%2Fvcp-media-server" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-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-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/lizhiyong2000/vcp-media-server on toolchain bac5816c5f3d02cebd0599070af62d1782530294
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bac5816c5f3d02cebd0599070af62d1782530294" "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" "+bac5816c5f3d02cebd0599070af62d1782530294" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded thiserror-impl v2.0.3
[INFO] [stderr]   Downloaded test-case-core v3.3.1
[INFO] [stderr]   Downloaded mpeg4-audio-const v0.2.0
[INFO] [stderr]   Downloaded test-case-macros v3.3.1
[INFO] [stderr]   Downloaded thiserror v2.0.3
[INFO] [stderr]   Downloaded hex-slice v0.1.4
[INFO] [stderr]   Downloaded mp4ra-rust v0.3.0
[INFO] [stderr]   Downloaded four-cc v0.4.0
[INFO] [stderr]   Downloaded rfc6381-codec v0.2.0
[INFO] [stderr]   Downloaded test-case v3.3.1
[INFO] [stderr]   Downloaded tokio v1.41.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+bac5816c5f3d02cebd0599070af62d1782530294" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1c957c55ebdd1aa4295a7f7455935d9d54fc8550b52d295b4efa04ee105efdad
[INFO] running `Command { std: "docker" "start" "-a" "1c957c55ebdd1aa4295a7f7455935d9d54fc8550b52d295b4efa04ee105efdad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1c957c55ebdd1aa4295a7f7455935d9d54fc8550b52d295b4efa04ee105efdad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1c957c55ebdd1aa4295a7f7455935d9d54fc8550b52d295b4efa04ee105efdad", kill_on_drop: false }`
[INFO] [stdout] 1c957c55ebdd1aa4295a7f7455935d9d54fc8550b52d295b4efa04ee105efdad
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+bac5816c5f3d02cebd0599070af62d1782530294" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9713c7cffa6e49f8f4c4048fa80ff1d1f18d8a902dba9159e4ce1fdca1a4a0b0
[INFO] running `Command { std: "docker" "start" "-a" "9713c7cffa6e49f8f4c4048fa80ff1d1f18d8a902dba9159e4ce1fdca1a4a0b0", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.164
[INFO] [stderr]     Checking itoa v1.0.13
[INFO] [stderr]    Compiling syn v2.0.89
[INFO] [stderr]     Checking tracing-core v0.1.32
[INFO] [stderr]    Compiling thiserror v2.0.3
[INFO] [stderr]     Checking hashbrown v0.15.1
[INFO] [stderr]    Compiling radium v0.7.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.13
[INFO] [stderr]     Checking four-cc v0.4.0
[INFO] [stderr]     Checking funty v2.0.0
[INFO] [stderr]     Checking mpeg4-audio-const v0.2.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking wyz v0.5.1
[INFO] [stderr]     Checking hex-slice v0.1.4
[INFO] [stderr]     Checking bitstream-io v2.6.0
[INFO] [stderr]     Checking subtle v2.4.1
[INFO] [stderr]     Checking time v0.3.36
[INFO] [stderr]     Checking http v1.1.0
[INFO] [stderr]    Compiling serde_json v1.0.133
[INFO] [stderr]     Checking mp4ra-rust v0.3.0
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking hex-literal v0.4.1
[INFO] [stderr]     Checking md5 v0.7.0
[INFO] [stderr]     Checking vcp_media_h265 v0.1.0 (/opt/rustwide/workdir/lib/codec/h265)
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.18
[INFO] [stderr]     Checking rfc6381-codec v0.2.0
[INFO] [stderr]     Checking bitvec v1.0.1
[INFO] [stderr]     Checking indexmap v2.6.0
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]     Checking crypto-mac v0.11.1
[INFO] [stderr]     Checking hmac v0.11.0
[INFO] [stderr]     Checking sha2 v0.9.9
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking socket2 v0.5.7
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking mio v1.0.2
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]    Compiling test-case-core v3.3.1
[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 thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.83
[INFO] [stderr]    Compiling thiserror-impl v2.0.3
[INFO] [stderr]    Compiling test-case-macros v3.3.1
[INFO] [stderr]     Checking tokio v1.41.1
[INFO] [stderr]     Checking test-case v3.3.1
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tracing-appender v0.2.3
[INFO] [stderr]     Checking tracing v0.1.40
[INFO] [stderr]     Checking ppv-lite86 v0.2.20
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking serde v1.0.215
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking http-body-util v0.1.2
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking tokio-util v0.7.12
[INFO] [stderr]     Checking hyper v1.5.1
[INFO] [stderr]     Checking tower v0.5.1
[INFO] [stderr]     Checking hyper-util v0.1.10
[INFO] [stderr]     Checking vcp_media_common v0.1.0 (/opt/rustwide/workdir/lib/common)
[INFO] [stderr]     Checking serde_path_to_error v0.1.16
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[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: 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]     Checking vcp_media_h264 v0.1.0 (/opt/rustwide/workdir/lib/codec/h264)
[INFO] [stderr]     Checking vcp_media_rtp v0.1.0 (/opt/rustwide/workdir/lib/protocol/rtp)
[INFO] [stderr]     Checking vcp_media_sdp v0.1.0 (/opt/rustwide/workdir/lib/protocol/sdp)
[INFO] [stderr]     Checking vcp_media_mpegts v0.2.0 (/opt/rustwide/workdir/lib/format/mpegts)
[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] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]    --> lib/codec/h264/src/encoder/mod.rs:780:9
[INFO] [stdout]     |
[INFO] [stdout] 780 |     use h264_reader::{
[INFO] [stdout]     |         ^^^^^^^^^^^ use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `h264_reader`, use `cargo add h264_reader` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]    --> lib/codec/h264/src/encoder/mod.rs:797:13
[INFO] [stdout]     |
[INFO] [stdout] 797 |         use h264_reader::rbsp::decode_nal;
[INFO] [stdout]     |             ^^^^^^^^^^^ use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `h264_reader`, use `cargo add h264_reader` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `h264_reader`
[INFO] [stdout]    --> lib/codec/h264/src/encoder/mod.rs:780:9
[INFO] [stdout]     |
[INFO] [stdout] 780 |     use h264_reader::{
[INFO] [stdout]     |         ^^^^^^^^^^^ use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `h264_reader`, use `cargo add h264_reader` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]    --> lib/codec/h264/src/encoder/mod.rs:899:38
[INFO] [stdout]     |
[INFO] [stdout] 899 |             let hello_slice_header = h264_reader::nal::slice::SliceHeader::from_bits(
[INFO] [stdout]     |                                      ^^^^^^^^^^^ use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `h264_reader`, use `cargo add h264_reader` to add it to your `Cargo.toml`
[INFO] [stdout] help: consider importing one of these structs
[INFO] [stdout]     |
[INFO] [stdout] 766 +     use crate::decoder::nal::slice::SliceHeader;
[INFO] [stdout]     |
[INFO] [stdout] 766 +     use crate::encoder::SliceHeader;
[INFO] [stdout]     |
[INFO] [stdout] help: if you import `SliceHeader`, refer to it directly
[INFO] [stdout]     |
[INFO] [stdout] 899 -             let hello_slice_header = h264_reader::nal::slice::SliceHeader::from_bits(
[INFO] [stdout] 899 +             let hello_slice_header = SliceHeader::from_bits(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]    --> lib/codec/h264/src/encoder/mod.rs:910:28
[INFO] [stdout]     |
[INFO] [stdout] 910 |         let slice_header = h264_reader::nal::slice::SliceHeader::from_bits(
[INFO] [stdout]     |                            ^^^^^^^^^^^ use of unresolved module or unlinked crate `h264_reader`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `h264_reader`, use `cargo add h264_reader` to add it to your `Cargo.toml`
[INFO] [stdout] help: consider importing one of these structs
[INFO] [stdout]     |
[INFO] [stdout] 766 +     use crate::decoder::nal::slice::SliceHeader;
[INFO] [stdout]     |
[INFO] [stdout] 766 +     use crate::encoder::SliceHeader;
[INFO] [stdout]     |
[INFO] [stdout] help: if you import `SliceHeader`, refer to it directly
[INFO] [stdout]     |
[INFO] [stdout] 910 -         let slice_header = h264_reader::nal::slice::SliceHeader::from_bits(
[INFO] [stdout] 910 +         let slice_header = SliceHeader::from_bits(
[INFO] [stdout]     |
[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: 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 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] [stderr]     Checking axum v0.7.9
[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 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]     Checking vcp_media_rtsp v0.1.0 (/opt/rustwide/workdir/lib/protocol/rtsp)
[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] [stderr]     Checking vcp_media_flv v0.3.0 (/opt/rustwide/workdir/lib/format/flv)
[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: 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: unused import: `hex_slice::AsHex`
[INFO] [stdout]   --> lib/codec/h264/examples/decoder/dump.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use hex_slice::AsHex;
[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 variable: `header`
[INFO] [stdout]   --> lib/codec/h264/examples/decoder/dump.rs:72:21
[INFO] [stdout]    |
[INFO] [stdout] 72 |                     header,      // The header of the slice
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bp`
[INFO] [stdout]   --> lib/codec/h264/examples/decoder/dump.rs:91:41
[INFO] [stdout]    |
[INFO] [stdout] 91 | ...                   let bp = BufferingPeriod::read(&ctx, &sei);
[INFO] [stdout]    |                           ^^ help: if this is intentional, prefix it with an underscore: `_bp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pt`
[INFO] [stdout]   --> lib/codec/h264/examples/decoder/dump.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 | ...                   let pt =
[INFO] [stdout]    |                           ^^ help: if this is intentional, prefix it with an underscore: `_pt`
[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: 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: 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: 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: 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 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 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 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: `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]     Checking vcp_media_rtmp v0.1.0 (/opt/rustwide/workdir/lib/protocol/rtmp)
[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: 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 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] Some errors have detailed explanations: E0432, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `vcp_media_h264` (lib test) due to 5 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[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 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: 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] [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] running `Command { std: "docker" "inspect" "9713c7cffa6e49f8f4c4048fa80ff1d1f18d8a902dba9159e4ce1fdca1a4a0b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9713c7cffa6e49f8f4c4048fa80ff1d1f18d8a902dba9159e4ce1fdca1a4a0b0", kill_on_drop: false }`
[INFO] [stdout] 9713c7cffa6e49f8f4c4048fa80ff1d1f18d8a902dba9159e4ce1fdca1a4a0b0
