[INFO] crate NeteaseCloudMusicRustApi 0.1.1 is already in cache
[INFO] checking NeteaseCloudMusicRustApi-0.1.1 against master#209b2be09fcaff937480d1fbbe8b31646e361c7a for pr-70917
[INFO] extracting crate NeteaseCloudMusicRustApi 0.1.1 into /workspace/builds/worker-0/source
[INFO] validating manifest of crates.io crate NeteaseCloudMusicRustApi 0.1.1 on toolchain 209b2be09fcaff937480d1fbbe8b31646e361c7a
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "read-manifest" "--manifest-path" "Cargo.toml"`
[INFO] started tweaking crates.io crate NeteaseCloudMusicRustApi 0.1.1
[INFO] finished tweaking crates.io crate NeteaseCloudMusicRustApi 0.1.1
[INFO] tweaked toml for crates.io crate NeteaseCloudMusicRustApi 0.1.1 written to /workspace/builds/worker-0/source/Cargo.toml
[INFO] crate crates.io crate NeteaseCloudMusicRustApi 0.1.1 already has a lockfile, it will not be regenerated
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] 776211d51dd6fb07e87b8a3013ef1b1fc081daddb856ae1b0c44ec5b0209757c
[INFO] running `"docker" "start" "-a" "776211d51dd6fb07e87b8a3013ef1b1fc081daddb856ae1b0c44ec5b0209757c"`
[INFO] [stderr]    Compiling syn v1.0.11
[INFO] [stderr]     Checking smallvec v1.0.0
[INFO] [stderr]    Compiling getrandom v0.1.13
[INFO] [stderr]    Compiling serde v1.0.103
[INFO] [stderr]    Compiling ppv-lite86 v0.2.6
[INFO] [stderr]    Compiling regex-syntax v0.6.12
[INFO] [stderr]    Compiling encoding_rs v0.8.20
[INFO] [stderr]     Checking mime v0.3.14
[INFO] [stderr]    Compiling native-tls v0.2.3
[INFO] [stderr]     Checking futures-core-preview v0.3.0-alpha.19
[INFO] [stderr]     Checking urlqstring v0.3.1
[INFO] [stderr]     Checking hex v0.4.0
[INFO] [stderr]     Checking lock_api v0.3.2
[INFO] [stderr]    Compiling hashbrown v0.6.3
[INFO] [stderr]     Checking tokio-sync v0.1.7
[INFO] [stderr]    Compiling backtrace-sys v0.1.32
[INFO] [stderr]    Compiling miniz-sys v0.1.12
[INFO] [stderr]    Compiling brotli-sys v0.3.2
[INFO] [stderr]    Compiling error-chain v0.12.1
[INFO] [stderr]    Compiling libc v0.2.66
[INFO] [stderr]     Checking tokio-executor v0.1.9
[INFO] [stderr]    Compiling memchr v2.2.1
[INFO] [stderr]     Checking rand_os v0.1.3
[INFO] [stderr]     Checking listenfd v0.3.3
[INFO] [stderr]     Checking futures-channel-preview v0.3.0-alpha.19
[INFO] [stderr]     Checking want v0.3.0
[INFO] [stderr]     Checking unicode-normalization v0.1.11
[INFO] [stderr]     Checking parking_lot_core v0.7.0
[INFO] [stderr]     Checking bytes v0.4.12
[INFO] [stderr]     Checking threadpool v1.7.1
[INFO] [stderr]     Checking signal-hook v0.1.12
[INFO] [stderr]     Checking resolv-conf v0.6.2
[INFO] [stderr]     Checking tokio-timer v0.2.12
[INFO] [stderr]     Checking tokio-current-thread v0.1.6
[INFO] [stderr]    Compiling mime_guess v2.0.1
[INFO] [stderr]     Checking rand v0.6.5
[INFO] [stderr]    Compiling aho-corasick v0.7.6
[INFO] [stderr]     Checking parking_lot_core v0.6.2
[INFO] [stderr]    Compiling enum-as-inner v0.2.1
[INFO] [stderr]     Checking parking_lot v0.10.0
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking tokio v0.2.6
[INFO] [stderr]     Checking parking_lot v0.9.0
[INFO] [stderr]    Compiling c2-chacha v0.2.3
[INFO] [stderr]     Checking tokio-io v0.1.12
[INFO] [stderr]     Checking http v0.1.21
[INFO] [stderr]     Checking string v0.2.1
[INFO] [stderr]     Checking flate2 v1.0.13
[INFO] [stderr]     Checking backtrace v0.3.40
[INFO] [stderr]     Checking rand_chacha v0.2.1
[INFO] [stderr]     Checking idna v0.2.0
[INFO] [stderr]     Checking idna v0.1.5
[INFO] [stderr]     Checking rand v0.7.2
[INFO] [stderr]     Checking tokio-reactor v0.1.11
[INFO] [stderr]     Checking tokio-codec v0.1.1
[INFO] [stderr]     Checking actix-codec v0.1.2
[INFO] [stderr]     Checking tokio-tcp v0.1.3
[INFO] [stderr]     Checking tokio-udp v0.1.5
[INFO] [stderr]     Checking tokio-signal v0.2.7
[INFO] [stderr]     Checking url v2.1.0
[INFO] [stderr]     Checking actix-utils v0.4.7
[INFO] [stderr]     Checking actix-server-config v0.1.2
[INFO] [stderr]     Checking url v1.7.2
[INFO] [stderr]    Compiling regex v1.3.1
[INFO] [stderr]     Checking publicsuffix v1.5.4
[INFO] [stderr]     Checking cookie v0.12.0
[INFO] [stderr]     Checking h2 v0.1.26
[INFO] [stderr]     Checking tokio-util v0.2.0
[INFO] [stderr]     Checking tokio-tls v0.3.0
[INFO] [stderr]     Checking brotli2 v0.3.2
[INFO] [stderr]     Checking actix-codec v0.2.0
[INFO] [stderr]    Compiling derive_more v0.15.0
[INFO] [stderr]    Compiling synstructure v0.12.3
[INFO] [stderr]     Checking actix-threadpool v0.1.2
[INFO] [stderr]     Checking actix-rt v0.2.6
[INFO] [stderr]     Checking actix-server v0.6.1
[INFO] [stderr]    Compiling proc-macro-hack v0.5.11
[INFO] [stderr]    Compiling failure_derive v0.1.6
[INFO] [stderr]    Compiling serde_derive v1.0.103
[INFO] [stderr]    Compiling pin-project-internal v0.4.6
[INFO] [stderr]    Compiling derive_more v0.99.2
[INFO] [stderr]    Compiling enum-as-inner v0.3.0
[INFO] [stderr]    Compiling actix-macros v0.1.1
[INFO] [stderr]    Compiling async-trait v0.1.22
[INFO] [stderr]    Compiling actix-web-codegen v0.1.3
[INFO] [stderr]     Checking actix-testing v0.1.0
[INFO] [stderr]     Checking failure v0.1.6
[INFO] [stderr]     Checking trust-dns-proto v0.7.4
[INFO] [stderr]    Compiling futures-macro v0.3.1
[INFO] [stderr]    Compiling const-random-macro v0.1.6
[INFO] [stderr]     Checking const-random v0.1.6
[INFO] [stderr]     Checking ahash v0.2.18
[INFO] [stderr]     Checking pin-project v0.4.6
[INFO] [stderr]     Checking futures-util v0.3.1
[INFO] [stderr]     Checking trust-dns-resolver v0.11.1
[INFO] [stderr]     Checking actix-connect v0.2.5
[INFO] [stderr]     Checking actix-threadpool v0.3.1
[INFO] [stderr]     Checking futures-executor v0.3.1
[INFO] [stderr]     Checking h2 v0.2.1
[INFO] [stderr]     Checking actix-service v1.0.1
[INFO] [stderr]     Checking futures v0.3.1
[INFO] [stderr]     Checking actix-rt v1.0.0
[INFO] [stderr]     Checking trust-dns-proto v0.18.0-alpha.2
[INFO] [stderr]     Checking actix-utils v1.0.4
[INFO] [stderr]     Checking trust-dns-resolver v0.18.0-alpha.2
[INFO] [stderr]     Checking hyper v0.13.1
[INFO] [stderr]     Checking actix-connect v1.0.1
[INFO] [stderr]     Checking hyper-tls v0.4.0
[INFO] [stderr]     Checking serde_json v1.0.44
[INFO] [stderr]     Checking serde_urlencoded v0.6.1
[INFO] [stderr]     Checking actix-router v0.1.5
[INFO] [stderr]     Checking actix-http v0.2.11
[INFO] [stderr]     Checking cookie_store v0.10.0
[INFO] [stderr]     Checking actix-http v1.0.1
[INFO] [stderr]     Checking reqwest v0.10.0
[INFO] [stderr]     Checking awc v0.2.8
[INFO] [stderr]     Checking actix-web v1.0.9
[INFO] [stderr]     Checking NeteaseCloudMusicRustApi v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused imports: `FromRequest`, `error`
[INFO] [stderr]  --> src/app.rs:4:21
[INFO] [stderr]   |
[INFO] [stderr] 4 |     Responder, App, FromRequest,
[INFO] [stderr]   |                     ^^^^^^^^^^^
[INFO] [stderr] 5 |     web, error, middleware, get,
[INFO] [stderr]   |          ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Uri`
[INFO] [stderr]  --> src/app.rs:7:24
[INFO] [stderr]   |
[INFO] [stderr] 7 | use actix_web::http::{ Uri, };
[INFO] [stderr]   |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `CONTENT_TYPE`, `HOST`, `HeaderMap`, `REFERER`, `USER_AGENT`
[INFO] [stderr]   --> src/app.rs:9:5
[INFO] [stderr]    |
[INFO] [stderr] 9  |     HOST, CONTENT_TYPE, USER_AGENT, REFERER,
[INFO] [stderr]    |     ^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^
[INFO] [stderr] 10 |     HeaderMap
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde::Deserialize`
[INFO] [stderr]   --> src/app.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use serde::Deserialize;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `service`, `to`
[INFO] [stderr]   --> src/app.rs:24:22
[INFO] [stderr]    |
[INFO] [stderr] 24 | use actix_web::web::{service, to};
[INFO] [stderr]    |                      ^^^^^^^  ^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_http::error::PayloadError::Http2Payload`
[INFO] [stderr]   --> src/app.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use actix_http::error::PayloadError::Http2Payload;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_http::http::HeaderValue`
[INFO] [stderr]   --> src/app.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 | use actix_http::http::HeaderValue;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `lazy_static::lazy_static`
[INFO] [stderr]   --> src/app.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | use lazy_static::lazy_static;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_http::cookie::Cookie`
[INFO] [stderr]   --> src/app.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 | use actix_http::cookie::Cookie;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_web::dev::RequestHead`
[INFO] [stderr]   --> src/app.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | use actix_web::dev::RequestHead;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ops::Deref`
[INFO] [stderr]   --> src/app.rs:30:5
[INFO] [stderr]    |
[INFO] [stderr] 30 | use std::ops::Deref;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_web::error::UrlencodedError::ContentType`
[INFO] [stderr]   --> src/app.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 | use actix_web::error::UrlencodedError::ContentType;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `base64::CharacterSet::Crypt`
[INFO] [stderr]   --> src/app.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 | use base64::CharacterSet::Crypt;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `md5` should have an upper camel case name
[INFO] [stderr]   --> src/crypto.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 |     md5
[INFO] [stderr]    |     ^^^ help: convert the identifier to upper camel case: `Md5`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variant `cbc` should have an upper camel case name
[INFO] [stderr]   --> src/crypto.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 |     cbc,
[INFO] [stderr]    |     ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Cbc`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `ecb` should have an upper camel case name
[INFO] [stderr]   --> src/crypto.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 |     ecb,
[INFO] [stderr]    |     ^^^ help: convert the identifier to upper camel case: `Ecb`
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `App`, `FromRequest`, `HttpRequest`, `HttpResponse`, `HttpServer`, `Responder`, `cookie`, `error`, `web`
[INFO] [stderr]  --> src/api.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 |     App, HttpRequest, FromRequest, HttpResponse,
[INFO] [stderr]   |     ^^^  ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 3 |     HttpServer, Responder, web, error,
[INFO] [stderr]   |     ^^^^^^^^^^  ^^^^^^^^^  ^^^  ^^^^^
[INFO] [stderr] 4 |     cookie,
[INFO] [stderr]   |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Uri`
[INFO] [stderr]  --> src/api.rs:6:24
[INFO] [stderr]   |
[INFO] [stderr] 6 | use actix_web::http::{ Uri, };
[INFO] [stderr]   |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `COOKIE`, `HOST`, `ToStrError`
[INFO] [stderr]  --> src/api.rs:7:23
[INFO] [stderr]   |
[INFO] [stderr] 7 | use reqwest::header::{HOST, CONTENT_TYPE, USER_AGENT, REFERER, HeaderMap, ToStrError, CONTENT_ENCODING, COOKIE};
[INFO] [stderr]   |                       ^^^^                                                ^^^^^^^^^^                    ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Client`
[INFO] [stderr]   --> src/api.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 |     Client,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde::Deserialize`
[INFO] [stderr]   --> src/api.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use serde::Deserialize;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_web::error::UrlencodedError::ContentType`
[INFO] [stderr]   --> src/api.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use actix_web::error::UrlencodedError::ContentType;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::crypto::HashType`
[INFO] [stderr]   --> src/api.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | use crate::crypto::HashType;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `base64::CharacterSet::Crypt`
[INFO] [stderr]   --> src/api.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | use base64::CharacterSet::Crypt;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rand::rngs::OsRng`
[INFO] [stderr]   --> src/api.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 | use rand::rngs::OsRng;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `FromRequest`, `error`
[INFO] [stderr]  --> src/app.rs:4:21
[INFO] [stderr]   |
[INFO] [stderr] 4 |     Responder, App, FromRequest,
[INFO] [stderr]   |                     ^^^^^^^^^^^
[INFO] [stderr] 5 |     web, error, middleware, get,
[INFO] [stderr]   |          ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Uri`
[INFO] [stderr]  --> src/app.rs:7:24
[INFO] [stderr]   |
[INFO] [stderr] 7 | use actix_web::http::{ Uri, };
[INFO] [stderr]   |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `CONTENT_TYPE`, `HOST`, `HeaderMap`, `REFERER`, `USER_AGENT`
[INFO] [stderr]   --> src/app.rs:9:5
[INFO] [stderr]    |
[INFO] [stderr] 9  |     HOST, CONTENT_TYPE, USER_AGENT, REFERER,
[INFO] [stderr]    |     ^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^
[INFO] [stderr] 10 |     HeaderMap
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde::Deserialize`
[INFO] [stderr]   --> src/app.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use serde::Deserialize;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `service`, `to`
[INFO] [stderr]   --> src/app.rs:24:22
[INFO] [stderr]    |
[INFO] [stderr] 24 | use actix_web::web::{service, to};
[INFO] [stderr]    |                      ^^^^^^^  ^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_http::error::PayloadError::Http2Payload`
[INFO] [stderr]   --> src/app.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use actix_http::error::PayloadError::Http2Payload;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_http::http::HeaderValue`
[INFO] [stderr]   --> src/app.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 | use actix_http::http::HeaderValue;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `lazy_static::lazy_static`
[INFO] [stderr]   --> src/app.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | use lazy_static::lazy_static;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_http::cookie::Cookie`
[INFO] [stderr]   --> src/app.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 | use actix_http::cookie::Cookie;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_web::dev::RequestHead`
[INFO] [stderr]   --> src/app.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | use actix_web::dev::RequestHead;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ops::Deref`
[INFO] [stderr]   --> src/app.rs:30:5
[INFO] [stderr]    |
[INFO] [stderr] 30 | use std::ops::Deref;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_web::error::UrlencodedError::ContentType`
[INFO] [stderr]   --> src/app.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 | use actix_web::error::UrlencodedError::ContentType;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `base64::CharacterSet::Crypt`
[INFO] [stderr]   --> src/app.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 | use base64::CharacterSet::Crypt;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde_json::Serializer`
[INFO] [stderr]     --> src/app.rs:3462:9
[INFO] [stderr]      |
[INFO] [stderr] 3462 |     use serde_json::Serializer;
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `md5` should have an upper camel case name
[INFO] [stderr]   --> src/crypto.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 |     md5
[INFO] [stderr]    |     ^^^ help: convert the identifier to upper camel case: `Md5`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variant `cbc` should have an upper camel case name
[INFO] [stderr]   --> src/crypto.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 |     cbc,
[INFO] [stderr]    |     ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Cbc`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `ecb` should have an upper camel case name
[INFO] [stderr]   --> src/crypto.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 |     ecb,
[INFO] [stderr]    |     ^^^ help: convert the identifier to upper camel case: `Ecb`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `base64::CharacterSet::Crypt`
[INFO] [stderr]    --> src/crypto.rs:168:9
[INFO] [stderr]     |
[INFO] [stderr] 168 |     use base64::CharacterSet::Crypt;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `openssl::hash::DigestBytes`
[INFO] [stderr]    --> src/crypto.rs:169:9
[INFO] [stderr]     |
[INFO] [stderr] 169 |     use openssl::hash::DigestBytes;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rand::seq::index::IndexVec`
[INFO] [stderr]    --> src/crypto.rs:170:9
[INFO] [stderr]     |
[INFO] [stderr] 170 |     use rand::seq::index::IndexVec;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `App`, `FromRequest`, `HttpRequest`, `HttpResponse`, `HttpServer`, `Responder`, `cookie`, `error`, `web`
[INFO] [stderr]  --> src/api.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 |     App, HttpRequest, FromRequest, HttpResponse,
[INFO] [stderr]   |     ^^^  ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 3 |     HttpServer, Responder, web, error,
[INFO] [stderr]   |     ^^^^^^^^^^  ^^^^^^^^^  ^^^  ^^^^^
[INFO] [stderr] 4 |     cookie,
[INFO] [stderr]   |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Uri`
[INFO] [stderr]  --> src/api.rs:6:24
[INFO] [stderr]   |
[INFO] [stderr] 6 | use actix_web::http::{ Uri, };
[INFO] [stderr]   |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `COOKIE`, `HOST`, `ToStrError`
[INFO] [stderr]  --> src/api.rs:7:23
[INFO] [stderr]   |
[INFO] [stderr] 7 | use reqwest::header::{HOST, CONTENT_TYPE, USER_AGENT, REFERER, HeaderMap, ToStrError, CONTENT_ENCODING, COOKIE};
[INFO] [stderr]   |                       ^^^^                                                ^^^^^^^^^^                    ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Client`
[INFO] [stderr]   --> src/api.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 |     Client,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `serde::Deserialize`
[INFO] [stderr]   --> src/api.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use serde::Deserialize;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `actix_web::error::UrlencodedError::ContentType`
[INFO] [stderr]   --> src/api.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use actix_web::error::UrlencodedError::ContentType;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::crypto::HashType`
[INFO] [stderr]   --> src/api.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | use crate::crypto::HashType;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `base64::CharacterSet::Crypt`
[INFO] [stderr]   --> src/api.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | use base64::CharacterSet::Crypt;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rand::rngs::OsRng`
[INFO] [stderr]   --> src/api.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 | use rand::rngs::OsRng;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/crypto.rs:155:13
[INFO] [stderr]     |
[INFO] [stderr] 155 |             _ => { "error".to_string() }
[INFO] [stderr]     |             ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `msg`
[INFO] [stderr]   --> src/app.rs:76:23
[INFO] [stderr]    |
[INFO] [stderr] 76 | fn index_album_newest(msg: HttpRequest) -> impl Responder {
[INFO] [stderr]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `url`
[INFO] [stderr]    --> src/app.rs:370:9
[INFO] [stderr]     |
[INFO] [stderr] 370 |     let url = "http://music.163.com/eapi/batch";
[INFO] [stderr]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_url`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]    --> src/app.rs:369:16
[INFO] [stderr]     |
[INFO] [stderr] 369 | fn index_batch(req: HttpRequest) -> impl Responder {
[INFO] [stderr]     |                ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:1472:23
[INFO] [stderr]      |
[INFO] [stderr] 1472 | fn index_login_status(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                       ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:1488:17
[INFO] [stderr]      |
[INFO] [stderr] 1488 | fn index_logout(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                 ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:1775:22
[INFO] [stderr]      |
[INFO] [stderr] 1775 | fn index_personal_fm(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                      ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:1808:33
[INFO] [stderr]      |
[INFO] [stderr] 1808 | fn index_personalized_djprogram(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:1824:26
[INFO] [stderr]      |
[INFO] [stderr] 1824 | fn index_personalized_mv(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                          ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:1840:31
[INFO] [stderr]      |
[INFO] [stderr] 1840 | fn index_personalized_newsong(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                               ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:1859:38
[INFO] [stderr]      |
[INFO] [stderr] 1859 | fn index_personalized_privatecontent(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                                      ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:2183:29
[INFO] [stderr]      |
[INFO] [stderr] 2183 | fn index_recommend_resource(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                             ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:2373:25
[INFO] [stderr]      |
[INFO] [stderr] 2373 | fn index_search_default(req: HttpRequest) -> impl Responder{
[INFO] [stderr]      |                         ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:2406:28
[INFO] [stderr]      |
[INFO] [stderr] 2406 | fn index_search_hot_detail(req: HttpRequest) -> impl Responder{
[INFO] [stderr]      |                            ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:2519:18
[INFO] [stderr]      |
[INFO] [stderr] 2519 | fn index_setting(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                  ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `query`
[INFO] [stderr]     --> src/app.rs:2647:9
[INFO] [stderr]      |
[INFO] [stderr] 2647 |     let query = QueryParams::from(req.query_string());
[INFO] [stderr]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `br`
[INFO] [stderr]     --> src/app.rs:2681:9
[INFO] [stderr]      |
[INFO] [stderr] 2681 |     let br = query.value("br").unwrap_or("&br=999000");
[INFO] [stderr]      |         ^^ help: if this is intentional, prefix it with an underscore: `_br`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:3142:24
[INFO] [stderr]      |
[INFO] [stderr] 3142 | fn index_user_subcount(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                        ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `req`
[INFO] [stderr]     --> src/app.rs:3224:27
[INFO] [stderr]      |
[INFO] [stderr] 3224 | fn index_video_group_list(req: HttpRequest) -> impl Responder {
[INFO] [stderr]      |                           ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `encrypted_len`
[INFO] [stderr]    --> src/crypto.rs:145:13
[INFO] [stderr]     |
[INFO] [stderr] 145 |         let encrypted_len = rsa.public_encrypt(&data, &mut buf, Padding::NONE).unwrap();
[INFO] [stderr]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encrypted_len`
[INFO] [stderr] 
[INFO] [stderr] warning: crate `NeteaseCloudMusicRustApi` should have a snake case name
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(non_snake_case)]` on by default
[INFO] [stderr]   = help: convert the identifier to snake case: `netease_cloud_music_rust_api`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `categoryCode` should have a snake case name
[INFO] [stderr]    --> src/app.rs:203:9
[INFO] [stderr]     |
[INFO] [stderr] 203 |     let categoryCode = query.value("cat").unwrap_or("1001");
[INFO] [stderr]     |         ^^^^^^^^^^^^ help: convert the identifier to snake case: `category_code`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `artistId` should have a snake case name
[INFO] [stderr]    --> src/app.rs:233:9
[INFO] [stderr]     |
[INFO] [stderr] 233 |     let artistId = query.value("id").unwrap_or("6452");
[INFO] [stderr]     |         ^^^^^^^^ help: convert the identifier to snake case: `artist_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `artistId` should have a snake case name
[INFO] [stderr]    --> src/app.rs:259:9
[INFO] [stderr]     |
[INFO] [stderr] 259 |     let artistId = query.value("id").unwrap_or("6452");
[INFO] [stderr]     |         ^^^^^^^^ help: convert the identifier to snake case: `artist_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `threadId` should have a snake case name
[INFO] [stderr]    --> src/app.rs:509:9
[INFO] [stderr]     |
[INFO] [stderr] 509 |     let threadId:String = if rtype == "A_EV_2_" {
[INFO] [stderr]     |         ^^^^^^^^ help: convert the identifier to snake case: `thread_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `beforeTime` should have a snake case name
[INFO] [stderr]    --> src/app.rs:624:9
[INFO] [stderr]     |
[INFO] [stderr] 624 |     let beforeTime = query.value("beforeTime").unwrap_or("0");
[INFO] [stderr]     |         ^^^^^^^^^^ help: convert the identifier to snake case: `before_time`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `threadId` should have a snake case name
[INFO] [stderr]    --> src/app.rs:667:9
[INFO] [stderr]     |
[INFO] [stderr] 667 |     let threadId: String = if _type == "A_EV_2" {
[INFO] [stderr]     |         ^^^^^^^^ help: convert the identifier to snake case: `thread_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `commentId` should have a snake case name
[INFO] [stderr]    --> src/app.rs:672:9
[INFO] [stderr]     |
[INFO] [stderr] 672 |     let commentId = query.value("cid").unwrap();
[INFO] [stderr]     |         ^^^^^^^^^ help: convert the identifier to snake case: `comment_id`
[INFO] [stderr] 
[INFO] [stderr] warning: function `index_digitalAlbum_purchased` should have a snake case name
[INFO] [stderr]    --> src/app.rs:791:4
[INFO] [stderr]     |
[INFO] [stderr] 791 | fn index_digitalAlbum_purchased(req: HttpRequest) -> impl Responder {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `index_digital_album_purchased`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `radioId` should have a snake case name
[INFO] [stderr]    --> src/app.rs:987:9
[INFO] [stderr]     |
[INFO] [stderr] 987 |     let radioId = query.value("rid").unwrap();
[INFO] [stderr]     |         ^^^^^^^ help: convert the identifier to snake case: `radio_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `cateId` should have a snake case name
[INFO] [stderr]     --> src/app.rs:1048:9
[INFO] [stderr]      |
[INFO] [stderr] 1048 |     let cateId = query.value("type").unwrap_or("10001");
[INFO] [stderr]      |         ^^^^^^ help: convert the identifier to snake case: `cate_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `rememberLogin` should have a snake case name
[INFO] [stderr]     --> src/app.rs:1402:9
[INFO] [stderr]      |
[INFO] [stderr] 1402 |     let rememberLogin = query.value("rememberLogin").unwrap_or("true");
[INFO] [stderr]      |         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `remember_login`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `rememberLogin` should have a snake case name
[INFO] [stderr]     --> src/app.rs:1434:9
[INFO] [stderr]      |
[INFO] [stderr] 1434 |     let rememberLogin = query.value("rememberLogin").unwrap_or("true");
[INFO] [stderr]      |         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `remember_login`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `beforeTime` should have a snake case name
[INFO] [stderr]     --> src/app.rs:1525:9
[INFO] [stderr]      |
[INFO] [stderr] 1525 |     let beforeTime = query.value("before").unwrap_or("-1");
[INFO] [stderr]      |         ^^^^^^^^^^ help: convert the identifier to snake case: `before_time`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `songId` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2120:9
[INFO] [stderr]      |
[INFO] [stderr] 2120 |     let songId = query.value("id").unwrap();
[INFO] [stderr]      |         ^^^^^^ help: convert the identifier to snake case: `song_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `playlistId` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2122:9
[INFO] [stderr]      |
[INFO] [stderr] 2122 |     let playlistId = query.value("pid").unwrap();
[INFO] [stderr]      |         ^^^^^^^^^^ help: convert the identifier to snake case: `playlist_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `sId` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2123:36
[INFO] [stderr]      |
[INFO] [stderr] 2123 |     let startMusicId = if let Some(sId) = query.value("sid") {
[INFO] [stderr]      |                                    ^^^ help: convert the identifier to snake case: `s_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `startMusicId` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2123:9
[INFO] [stderr]      |
[INFO] [stderr] 2123 |     let startMusicId = if let Some(sId) = query.value("sid") {
[INFO] [stderr]      |         ^^^^^^^^^^^^ help: convert the identifier to snake case: `start_music_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `threadId` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2288:9
[INFO] [stderr]      |
[INFO] [stderr] 2288 |     let threadId = if rtype == "A_EV_2_" {
[INFO] [stderr]      |         ^^^^^^^^ help: convert the identifier to snake case: `thread_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `sourceId` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2317:9
[INFO] [stderr]      |
[INFO] [stderr] 2317 |     let sourceId = query.value("sourceid").unwrap();
[INFO] [stderr]      |         ^^^^^^^^ help: convert the identifier to snake case: `source_id`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `userIds` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2475:9
[INFO] [stderr]      |
[INFO] [stderr] 2475 |     let userIds = query.value("user_ids").unwrap();
[INFO] [stderr]      |         ^^^^^^^ help: convert the identifier to snake case: `user_ids`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `userIds` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2500:9
[INFO] [stderr]      |
[INFO] [stderr] 2500 |     let userIds = query.value("user_ids").unwrap();
[INFO] [stderr]      |         ^^^^^^^ help: convert the identifier to snake case: `user_ids`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `songIds` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2940:9
[INFO] [stderr]      |
[INFO] [stderr] 2940 |     let songIds = query.value("songIds").unwrap();
[INFO] [stderr]      |         ^^^^^^^ help: convert the identifier to snake case: `song_ids`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `queryValue` should have a snake case name
[INFO] [stderr]     --> src/app.rs:2960:9
[INFO] [stderr]      |
[INFO] [stderr] 2960 |     let queryValue = query.value("id").unwrap();
[INFO] [stderr]      |         ^^^^^^^^^^ help: convert the identifier to snake case: `query_value`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `banner_type` should have an upper case name
[INFO] [stderr]   --> src/api.rs:21:11
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub const banner_type: [&str; 4] = [
[INFO] [stderr]    |           ^^^^^^^^^^^ help: convert the identifier to upper case: `BANNER_TYPE`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `resource_type` should have an upper case name
[INFO] [stderr]   --> src/api.rs:25:11
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub const resource_type: [&str; 7] = [
[INFO] [stderr]    |           ^^^^^^^^^^^^^ help: convert the identifier to upper case: `RESOURCE_TYPE`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `operator` should have an upper case name
[INFO] [stderr]   --> src/api.rs:35:11
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub const operator: [&str; 3] = [
[INFO] [stderr]    |           ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `linux_user_agent` should have an upper case name
[INFO] [stderr]   --> src/api.rs:39:7
[INFO] [stderr]    |
[INFO] [stderr] 39 | const linux_user_agent: &str = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36";
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `LINUX_USER_AGENT`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `user_agent_list` should have an upper case name
[INFO] [stderr]   --> src/api.rs:41:7
[INFO] [stderr]    |
[INFO] [stderr] 41 | const user_agent_list: [&str; 14] = [
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `USER_AGENT_LIST`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `topList` should have an upper case name
[INFO] [stderr]   --> src/api.rs:58:11
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub const topList: [&str; 37] = [
[INFO] [stderr]    |           ^^^^^^^ help: convert the identifier to upper case: `TOP_LIST`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the trait bound `urlqstring::querystring::QueryParams<'_>: std::convert::From<std::vec::Vec<(&str, &std::string::String)>>` is not satisfied
[INFO] [stderr]    --> src/crypto.rs:267:19
[INFO] [stderr]     |
[INFO] [stderr] 267 |         let res = QueryParams::from(vec![
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^ the trait `std::convert::From<std::vec::Vec<(&str, &std::string::String)>>` is not implemented for `urlqstring::querystring::QueryParams<'_>`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the following implementations were found:
[INFO] [stderr]               <urlqstring::querystring::QueryParams<'a> as std::convert::From<&'a std::string::String>>
[INFO] [stderr]               <urlqstring::querystring::QueryParams<'a> as std::convert::From<&'a str>>
[INFO] [stderr]               <urlqstring::querystring::QueryParams<'a> as std::convert::From<std::vec::Vec<(&'a str, &'a str)>>>
[INFO] [stderr]     = note: required by `std::convert::From::from`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: `urlqstring::querystring::QueryParams<'_>` doesn't implement `std::fmt::Display`
[INFO] [stderr]    --> src/crypto.rs:271:28
[INFO] [stderr]     |
[INFO] [stderr] 271 |         println!("res={}", res);
[INFO] [stderr]     |                            ^^^ `urlqstring::querystring::QueryParams<'_>` cannot be formatted with the default formatter
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::fmt::Display` is not implemented for `urlqstring::querystring::QueryParams<'_>`
[INFO] [stderr]     = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
[INFO] [stderr]     = note: required by `std::fmt::Display::fmt`
[INFO] [stderr]     = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 2 previous errors
[INFO] [stderr] 
[INFO] [stderr] For more information about this error, try `rustc --explain E0277`.
[INFO] [stderr] error: could not compile `NeteaseCloudMusicRustApi`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `"docker" "inspect" "776211d51dd6fb07e87b8a3013ef1b1fc081daddb856ae1b0c44ec5b0209757c"`
[INFO] running `"docker" "rm" "-f" "776211d51dd6fb07e87b8a3013ef1b1fc081daddb856ae1b0c44ec5b0209757c"`
[INFO] [stdout] 776211d51dd6fb07e87b8a3013ef1b1fc081daddb856ae1b0c44ec5b0209757c
