[INFO] cloning repository https://github.com/vagicc/www.xust.net
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/vagicc/www.xust.net" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvagicc%2Fwww.xust.net", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvagicc%2Fwww.xust.net'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f07443416deacb10492b933f4b03974e44d7be66
[INFO] checking vagicc/www.xust.net against master#642c19bfc3a5c1de985bf5d0cc8207ac9d22708a for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvagicc%2Fwww.xust.net" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/vagicc/www.xust.net
[INFO] finished tweaking git repo https://github.com/vagicc/www.xust.net
[INFO] tweaked toml for git repo https://github.com/vagicc/www.xust.net written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/vagicc/www.xust.net on toolchain 642c19bfc3a5c1de985bf5d0cc8207ac9d22708a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/vagicc/www.xust.net 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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded pest_derive v2.7.10
[INFO] [stderr]   Downloaded pest_meta v2.7.10
[INFO] [stderr]   Downloaded dsl_auto_type v0.1.1
[INFO] [stderr]   Downloaded pest_generator v2.7.10
[INFO] [stderr]   Downloaded ipnetwork v0.20.0
[INFO] [stderr]   Downloaded cc v1.0.100
[INFO] [stderr]   Downloaded diesel_derives v2.2.1
[INFO] [stderr]   Downloaded pest v2.7.10
[INFO] [stderr]   Downloaded diesel v2.2.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5f6ad17065505d4e701d71a23a12a6cf91fd99afae35f6e1926059c191558556
[INFO] running `Command { std: "docker" "start" "-a" "5f6ad17065505d4e701d71a23a12a6cf91fd99afae35f6e1926059c191558556", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5f6ad17065505d4e701d71a23a12a6cf91fd99afae35f6e1926059c191558556", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5f6ad17065505d4e701d71a23a12a6cf91fd99afae35f6e1926059c191558556", kill_on_drop: false }`
[INFO] [stdout] 5f6ad17065505d4e701d71a23a12a6cf91fd99afae35f6e1926059c191558556
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c1401148c907b949feab58e3594ffb79b903fd2b4ec4021a1ca35c618f45da5b
[INFO] running `Command { std: "docker" "start" "-a" "c1401148c907b949feab58e3594ffb79b903fd2b4ec4021a1ca35c618f45da5b", kill_on_drop: false }`
[INFO] [stderr]     Checking bytes v1.6.0
[INFO] [stderr]     Checking log v0.4.21
[INFO] [stderr]    Compiling thiserror v1.0.61
[INFO] [stderr]    Compiling serde v1.0.203
[INFO] [stderr]    Compiling syn v2.0.68
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling cc v1.0.100
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking socket2 v0.5.7
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling httparse v1.9.4
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking futures-util v0.3.30
[INFO] [stderr]     Checking unicode-normalization v0.1.23
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling ucd-trie v0.1.6
[INFO] [stderr]     Checking rustls-pki-types v1.7.0
[INFO] [stderr]    Compiling serde_json v1.0.117
[INFO] [stderr]     Checking idna v0.5.0
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]    Compiling mime_guess v2.0.4
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking tracing v0.1.40
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking url v2.5.2
[INFO] [stderr]     Checking http v1.1.0
[INFO] [stderr]    Compiling bigdecimal v0.4.5
[INFO] [stderr]    Compiling multer v2.1.0
[INFO] [stderr]    Compiling pq-sys v0.6.1
[INFO] [stderr]    Compiling ring v0.17.8
[INFO] [stderr]     Checking regex-syntax v0.8.4
[INFO] [stderr]    Compiling either v1.12.0
[INFO] [stderr]    Compiling time-macros v0.2.18
[INFO] [stderr]     Checking num-bigint v0.4.5
[INFO] [stderr]     Checking scheduled-thread-pool v0.2.7
[INFO] [stderr]     Checking headers-core v0.2.0
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking tower-service v0.3.2
[INFO] [stderr]     Checking time v0.3.36
[INFO] [stderr]     Checking rustls-pemfile v2.1.2
[INFO] [stderr]     Checking headers v0.3.9
[INFO] [stderr]     Checking r2d2 v0.8.10
[INFO] [stderr]     Checking is-terminal v0.4.12
[INFO] [stderr]     Checking uuid v1.9.1
[INFO] [stderr]     Checking regex-automata v0.4.7
[INFO] [stderr]    Compiling darling_core v0.20.9
[INFO] [stderr]    Compiling diesel_table_macro_syntax v0.2.0
[INFO] [stderr]     Checking regex v1.10.5
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking rustls-webpki v0.102.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.61
[INFO] [stderr]    Compiling serde_derive v1.0.203
[INFO] [stderr]    Compiling tokio-macros v2.3.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.5
[INFO] [stderr]     Checking tokio v1.38.0
[INFO] [stderr]     Checking pin-project v1.1.5
[INFO] [stderr]    Compiling pest v2.7.10
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]    Compiling darling_macro v0.20.9
[INFO] [stderr]    Compiling darling v0.20.9
[INFO] [stderr]    Compiling dsl_auto_type v0.1.1
[INFO] [stderr]    Compiling diesel_derives v2.2.1
[INFO] [stderr]    Compiling pest_meta v2.7.10
[INFO] [stderr]    Compiling pest_generator v2.7.10
[INFO] [stderr]     Checking tokio-util v0.7.11
[INFO] [stderr]     Checking tokio-rustls v0.25.0
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]    Compiling pest_derive v2.7.10
[INFO] [stderr]     Checking ipnetwork v0.20.0
[INFO] [stderr]     Checking chrono v0.4.38
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking handlebars v5.1.2
[INFO] [stderr]     Checking diesel v2.2.1
[INFO] [stderr]     Checking hyper v0.14.29
[INFO] [stderr]     Checking warp v0.3.7
[INFO] [stderr]     Checking www-xust-net v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: #[table_name] attribute form is deprecated
[INFO] [stderr]   = help: use `#[diesel(table_name = article_content)]` instead
[INFO] [stderr] 
[INFO] [stderr] warning: #[table_name] attribute form is deprecated
[INFO] [stderr]   = help: use `#[diesel(table_name = article_content)]` instead
[INFO] [stderr] 
[INFO] [stderr] warning: #[table_name] attribute form is deprecated
[INFO] [stderr]   = help: use `#[diesel(table_name = article_content)]` instead
[INFO] [stderr] 
[INFO] [stderr] warning: #[table_name] attribute form is deprecated
[INFO] [stderr]   = help: use `#[diesel(table_name = article_content)]` instead
[INFO] [stderr] 
[INFO] [stdout] warning: unused import: `to_html_single`
[INFO] [stdout]  --> src/handlers/home_handler.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::template::{to_html_base, to_html_single};
[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: `Handlebars`
[INFO] [stdout]  --> src/handlers/home_handler.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use handlebars::{to_json, Handlebars};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::schema::article`
[INFO] [stdout]  --> src/models/article_model.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::schema::article;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/models/article_model.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::get_connection`
[INFO] [stdout]  --> src/models/book_category_m.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::db::get_connection;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::schema::book_category`
[INFO] [stdout]  --> src/models/book_category_m.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::schema::book_category;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::schema::book_category::dsl::*`
[INFO] [stdout]  --> src/models/book_category_m.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::schema::book_category::dsl::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDateTime`
[INFO] [stdout]  --> src/models/menus_model.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use chrono::NaiveDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDateTime`
[INFO] [stdout]  --> src/models/rights_model.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use chrono::NaiveDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/models/rights_model.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDateTime`
[INFO] [stdout]  --> src/models/roles_model.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use chrono::NaiveDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/models/roles_model.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `to_html_single`
[INFO] [stdout]  --> src/handlers/home_handler.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::template::{to_html_base, to_html_single};
[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: `Handlebars`
[INFO] [stdout]  --> src/handlers/home_handler.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use handlebars::{to_json, Handlebars};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::schema::article`
[INFO] [stdout]  --> src/models/article_model.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::schema::article;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/models/article_model.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::get_connection`
[INFO] [stdout]  --> src/models/book_category_m.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::db::get_connection;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::schema::book_category`
[INFO] [stdout]  --> src/models/book_category_m.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::schema::book_category;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::schema::book_category::dsl::*`
[INFO] [stdout]  --> src/models/book_category_m.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::schema::book_category::dsl::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDateTime`
[INFO] [stdout]  --> src/models/menus_model.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use chrono::NaiveDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDateTime`
[INFO] [stdout]  --> src/models/rights_model.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use chrono::NaiveDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/models/rights_model.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDateTime`
[INFO] [stdout]  --> src/models/roles_model.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use chrono::NaiveDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/models/roles_model.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/models/admins_model.rs:184:9
[INFO] [stdout]     |
[INFO] [stdout] 184 |     let mut limit: i64 = per as i64; //每页取几条数据
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/models/admins_model.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     let mut pages = String::new();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]   --> src/models/book_chapters_m.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let k = query.execute(&mut conn);
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/models/admins_model.rs:184:9
[INFO] [stdout]     |
[INFO] [stdout] 184 |     let mut limit: i64 = per as i64; //每页取几条数据
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/models/admins_model.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     let mut pages = String::new();
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]   --> src/models/book_chapters_m.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let k = query.execute(&mut conn);
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row`
[INFO] [stdout]   --> src/models/reptile_zhdc_books_m.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 |         Ok(row) => {
[INFO] [stdout]    |            ^^^ help: if this is intentional, prefix it with an underscore: `_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/models/rights_model.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |     let mut limit: i64 = per as i64; //每页取几条数据
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sql`
[INFO] [stdout]    --> src/models/rights_model.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let sql = diesel::debug_query::<diesel::pg::Pg, _>(&query).to_string();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_sql`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row`
[INFO] [stdout]   --> src/models/reptile_zhdc_books_m.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 |         Ok(row) => {
[INFO] [stdout]    |            ^^^ help: if this is intentional, prefix it with an underscore: `_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/models/rights_model.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |     let mut limit: i64 = per as i64; //每页取几条数据
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sql`
[INFO] [stdout]    --> src/models/rights_model.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let sql = diesel::debug_query::<diesel::pg::Pg, _>(&query).to_string();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_sql`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `type_v` is never used
[INFO] [stdout]   --> src/common.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn type_v<T>(t: 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: function `response_json` is never used
[INFO] [stdout]   --> src/common.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn response_json<T>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_key` is never used
[INFO] [stdout]    --> src/common.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn random_key(len: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_naive_date_time` is never used
[INFO] [stdout]    --> src/common.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn now_naive_date_time() -> chrono::NaiveDateTime {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_naive_date` is never used
[INFO] [stdout]    --> src/common.rs:144:8
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub fn now_naive_date() -> chrono::NaiveDate {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Admins` is never constructed
[INFO] [stdout]   --> src/models/admins_model.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Admins {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AdminPost` is never constructed
[INFO] [stdout]   --> src/models/admins_model.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct AdminPost {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate` is never used
[INFO] [stdout]   --> src/models/admins_model.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl AdminPost {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 59 |     pub fn validate(&self) -> Result<Self, &'static str> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `edit` is never used
[INFO] [stdout]   --> src/models/admins_model.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn edit(pky: i32, post: &AdminPost) -> Option<Admins> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub fn modify(pky: i32, data: &NewAdmin) -> Option<Admins> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn delete(pky: i32) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_admin` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub fn find_admin(admin_id: i32) -> Option<Admins> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_admin` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn get_admin(user_name: String) -> Option<Admins> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn list(page: Option<u32>, per: u32) -> (i64, Vec<Admins>, String) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_new_salt` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:224:8
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub fn get_new_salt() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sha1` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:229:8
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub fn get_sha1(passwd: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encryption` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:237:8
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub fn encryption(passwd: &String, new_salt: &String) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_new` is never used
[INFO] [stdout]   --> src/models/article_model.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn get_new(limit: i64) -> Vec<Article> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BookCategory` is never constructed
[INFO] [stdout]   --> src/models/book_category_m.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BookCategory {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_chapters_content` is never used
[INFO] [stdout]   --> src/models/book_chapters_content_m.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn find_chapters_content(chapterid: i32) -> Option<BookChaptersContent> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BookChapters` is never constructed
[INFO] [stdout]   --> src/models/book_chapters_m.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BookChapters {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_next` is never used
[INFO] [stdout]   --> src/models/book_chapters_m.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn update_next(pky: i32, next_id: i32) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_book_all_chapters` is never used
[INFO] [stdout]   --> src/models/book_chapters_m.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn get_book_all_chapters(bookid: i32) -> Option<Vec<BookChapters>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetQuery` is never constructed
[INFO] [stdout]    --> src/models/book_chapters_m.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct GetQuery {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_page` is never used
[INFO] [stdout]    --> src/models/book_chapters_m.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn list_page(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Books` is never constructed
[INFO] [stdout]   --> src/models/books_model.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Books {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetQuery` is never constructed
[INFO] [stdout]    --> src/models/books_model.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct GetQuery {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_page` is never used
[INFO] [stdout]    --> src/models/books_model.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn list_page(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_book` is never used
[INFO] [stdout]    --> src/models/books_model.rs:204:8
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub fn get_book(book_name: String) -> Option<Books> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_book` is never used
[INFO] [stdout]    --> src/models/books_model.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub fn find_book(book_id: i32) -> Option<Books> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Menu` is never constructed
[INFO] [stdout]   --> src/models/menus_model.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Menu {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_current` is never used
[INFO] [stdout]   --> src/models/menus_model.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn get_current(url_path: String) -> Option<Menu> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_parent` is never used
[INFO] [stdout]   --> src/models/menus_model.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn get_parent(parent_id: i32) -> Option<Vec<Menu>> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_menu` is never used
[INFO] [stdout]   --> src/models/menus_model.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn find_menu(pk: i32) -> Option<Menu> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_menu_level` is never used
[INFO] [stdout]   --> src/models/menus_model.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn get_menu_level(lid: i16) -> Option<Vec<Menu>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn modify(pk: i32, data: &NewMenu) -> Option<Menu> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn delete(pky: i32) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeftMenu` is never constructed
[INFO] [stdout]    --> src/models/menus_model.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct LeftMenu {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_left_menus` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub fn get_left_menus() -> Option<Vec<LeftMenu>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_show_parent` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn get_show_parent(parent_id: i32) -> Option<Vec<Menu>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `role_left_menus` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn role_left_menus(role_id: i32) -> Option<Vec<LeftMenu>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_have` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:283:4
[INFO] [stdout]     |
[INFO] [stdout] 283 | fn is_have(url_path: String, roles: &crate::models::roles_model::Role) -> bool {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReptileZhdcBooks` is never constructed
[INFO] [stdout]   --> src/models/reptile_zhdc_books_m.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ReptileZhdcBooks {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `whether_link_exists` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_books_m.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn whether_link_exists(url: String) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetQuery` is never constructed
[INFO] [stdout]   --> src/models/reptile_zhdc_books_m.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct GetQuery {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_page` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn list_page(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_book` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn find_book(book_id: i32) -> Option<ReptileZhdcBooks> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `publish_book` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn publish_book(book_id: i32, publish_all: bool, chapter_id: Option<i32>) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_published` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:284:8
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub fn update_published(pky: i32, published: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:295:8
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub fn delete(pky: i32) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReptileZhdcChapters` is never constructed
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ReptileZhdcChapters {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_book_chapters` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn get_book_chapters(book_id: i32) -> Option<Vec<ReptileZhdcChapters>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_book_publish` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn update_book_publish(book_id: i32, published: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_publish` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn update_publish(pky: i32, published: bool) -> Option<ReptileZhdcChapters> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_book` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn delete_book(book_id: i32)-> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rights` is never constructed
[INFO] [stdout]  --> src/models/rights_model.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Rights {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify` is never used
[INFO] [stdout]   --> src/models/rights_model.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn modify(id: i32, data: &UpdateRights) -> Option<Rights> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]   --> src/models/rights_model.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn delete(id: i32) -> usize {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_right` is never used
[INFO] [stdout]   --> src/models/rights_model.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn find_right(id: i32) -> Option<Rights> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn list(page: Option<u32>, per: u32) -> (i64, Vec<Rights>, String) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_right` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub fn get_all_right() -> Option<Vec<Rights>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_right_id` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:167:8
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub fn get_right_id(url_path: String) -> Option<i32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `permit` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn permit(url_path: String, admin: &crate::models::admins_model::Admins) -> bool {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_in_rights` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:240:8
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub fn is_in_rights(rightid: i32, roles: &crate::models::roles_model::Role) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Role` is never constructed
[INFO] [stdout]  --> src/models/roles_model.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Role {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_role` is never used
[INFO] [stdout]   --> src/models/roles_model.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn get_all_role() -> Option<Vec<Role>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_role` is never used
[INFO] [stdout]   --> src/models/roles_model.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn find_role(role_id: i32) -> Option<Role> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list` is never used
[INFO] [stdout]   --> src/models/roles_model.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn list(page: Option<u32>, per: Option<u32>) -> (i64, Vec<Role>, String) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]    --> src/models/roles_model.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn delete(pk: i32) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify` is never used
[INFO] [stdout]    --> src/models/roles_model.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn modify(pky: i32, data: &NewRole) -> Option<Role> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_html_single` is never used
[INFO] [stdout]   --> src/template.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn to_html_single(tpl_name: &str, mut data: Map<String, Json>) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `type_v` is never used
[INFO] [stdout]   --> src/common.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn type_v<T>(t: 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: function `response_json` is never used
[INFO] [stdout]   --> src/common.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn response_json<T>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_key` is never used
[INFO] [stdout]    --> src/common.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn random_key(len: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_naive_date_time` is never used
[INFO] [stdout]    --> src/common.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn now_naive_date_time() -> chrono::NaiveDateTime {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_naive_date` is never used
[INFO] [stdout]    --> src/common.rs:144:8
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub fn now_naive_date() -> chrono::NaiveDate {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Admins` is never constructed
[INFO] [stdout]   --> src/models/admins_model.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Admins {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AdminPost` is never constructed
[INFO] [stdout]   --> src/models/admins_model.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct AdminPost {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate` is never used
[INFO] [stdout]   --> src/models/admins_model.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl AdminPost {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 59 |     pub fn validate(&self) -> Result<Self, &'static str> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `edit` is never used
[INFO] [stdout]   --> src/models/admins_model.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn edit(pky: i32, post: &AdminPost) -> Option<Admins> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub fn modify(pky: i32, data: &NewAdmin) -> Option<Admins> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn delete(pky: i32) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_admin` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub fn find_admin(admin_id: i32) -> Option<Admins> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_admin` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn get_admin(user_name: String) -> Option<Admins> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn list(page: Option<u32>, per: u32) -> (i64, Vec<Admins>, String) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_new_salt` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:224:8
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub fn get_new_salt() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sha1` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:229:8
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub fn get_sha1(passwd: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encryption` is never used
[INFO] [stdout]    --> src/models/admins_model.rs:237:8
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub fn encryption(passwd: &String, new_salt: &String) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_new` is never used
[INFO] [stdout]   --> src/models/article_model.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn get_new(limit: i64) -> Vec<Article> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BookCategory` is never constructed
[INFO] [stdout]   --> src/models/book_category_m.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BookCategory {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_chapters_content` is never used
[INFO] [stdout]   --> src/models/book_chapters_content_m.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn find_chapters_content(chapterid: i32) -> Option<BookChaptersContent> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BookChapters` is never constructed
[INFO] [stdout]   --> src/models/book_chapters_m.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BookChapters {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_next` is never used
[INFO] [stdout]   --> src/models/book_chapters_m.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn update_next(pky: i32, next_id: i32) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_book_all_chapters` is never used
[INFO] [stdout]   --> src/models/book_chapters_m.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn get_book_all_chapters(bookid: i32) -> Option<Vec<BookChapters>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetQuery` is never constructed
[INFO] [stdout]    --> src/models/book_chapters_m.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct GetQuery {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_page` is never used
[INFO] [stdout]    --> src/models/book_chapters_m.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn list_page(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Books` is never constructed
[INFO] [stdout]   --> src/models/books_model.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Books {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetQuery` is never constructed
[INFO] [stdout]    --> src/models/books_model.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct GetQuery {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_page` is never used
[INFO] [stdout]    --> src/models/books_model.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn list_page(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_book` is never used
[INFO] [stdout]    --> src/models/books_model.rs:204:8
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub fn get_book(book_name: String) -> Option<Books> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_book` is never used
[INFO] [stdout]    --> src/models/books_model.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub fn find_book(book_id: i32) -> Option<Books> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Menu` is never constructed
[INFO] [stdout]   --> src/models/menus_model.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Menu {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_current` is never used
[INFO] [stdout]   --> src/models/menus_model.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn get_current(url_path: String) -> Option<Menu> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_parent` is never used
[INFO] [stdout]   --> src/models/menus_model.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn get_parent(parent_id: i32) -> Option<Vec<Menu>> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_menu` is never used
[INFO] [stdout]   --> src/models/menus_model.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn find_menu(pk: i32) -> Option<Menu> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_menu_level` is never used
[INFO] [stdout]   --> src/models/menus_model.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn get_menu_level(lid: i16) -> Option<Vec<Menu>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn modify(pk: i32, data: &NewMenu) -> Option<Menu> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn delete(pky: i32) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LeftMenu` is never constructed
[INFO] [stdout]    --> src/models/menus_model.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct LeftMenu {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_left_menus` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub fn get_left_menus() -> Option<Vec<LeftMenu>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_show_parent` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn get_show_parent(parent_id: i32) -> Option<Vec<Menu>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `role_left_menus` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn role_left_menus(role_id: i32) -> Option<Vec<LeftMenu>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_have` is never used
[INFO] [stdout]    --> src/models/menus_model.rs:283:4
[INFO] [stdout]     |
[INFO] [stdout] 283 | fn is_have(url_path: String, roles: &crate::models::roles_model::Role) -> bool {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReptileZhdcBooks` is never constructed
[INFO] [stdout]   --> src/models/reptile_zhdc_books_m.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ReptileZhdcBooks {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `whether_link_exists` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_books_m.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn whether_link_exists(url: String) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetQuery` is never constructed
[INFO] [stdout]   --> src/models/reptile_zhdc_books_m.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct GetQuery {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_page` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn list_page(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_book` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn find_book(book_id: i32) -> Option<ReptileZhdcBooks> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `publish_book` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn publish_book(book_id: i32, publish_all: bool, chapter_id: Option<i32>) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_published` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:284:8
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub fn update_published(pky: i32, published: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]    --> src/models/reptile_zhdc_books_m.rs:295:8
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub fn delete(pky: i32) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReptileZhdcChapters` is never constructed
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ReptileZhdcChapters {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_book_chapters` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn get_book_chapters(book_id: i32) -> Option<Vec<ReptileZhdcChapters>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_book_publish` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn update_book_publish(book_id: i32, published: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_publish` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn update_publish(pky: i32, published: bool) -> Option<ReptileZhdcChapters> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_book` is never used
[INFO] [stdout]   --> src/models/reptile_zhdc_chapters_m.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn delete_book(book_id: i32)-> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rights` is never constructed
[INFO] [stdout]  --> src/models/rights_model.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Rights {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify` is never used
[INFO] [stdout]   --> src/models/rights_model.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn modify(id: i32, data: &UpdateRights) -> Option<Rights> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]   --> src/models/rights_model.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn delete(id: i32) -> usize {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_right` is never used
[INFO] [stdout]   --> src/models/rights_model.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn find_right(id: i32) -> Option<Rights> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn list(page: Option<u32>, per: u32) -> (i64, Vec<Rights>, String) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_right` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub fn get_all_right() -> Option<Vec<Rights>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_right_id` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:167:8
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub fn get_right_id(url_path: String) -> Option<i32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `permit` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn permit(url_path: String, admin: &crate::models::admins_model::Admins) -> bool {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_in_rights` is never used
[INFO] [stdout]    --> src/models/rights_model.rs:240:8
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub fn is_in_rights(rightid: i32, roles: &crate::models::roles_model::Role) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Role` is never constructed
[INFO] [stdout]  --> src/models/roles_model.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Role {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_role` is never used
[INFO] [stdout]   --> src/models/roles_model.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn get_all_role() -> Option<Vec<Role>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_role` is never used
[INFO] [stdout]   --> src/models/roles_model.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn find_role(role_id: i32) -> Option<Role> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list` is never used
[INFO] [stdout]   --> src/models/roles_model.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn list(page: Option<u32>, per: Option<u32>) -> (i64, Vec<Role>, String) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete` is never used
[INFO] [stdout]    --> src/models/roles_model.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn delete(pk: i32) -> usize {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify` is never used
[INFO] [stdout]    --> src/models/roles_model.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn modify(pky: i32, data: &NewRole) -> Option<Role> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_html_single` is never used
[INFO] [stdout]   --> src/template.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn to_html_single(tpl_name: &str, mut data: Map<String, Json>) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 45s
[INFO] running `Command { std: "docker" "inspect" "c1401148c907b949feab58e3594ffb79b903fd2b4ec4021a1ca35c618f45da5b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c1401148c907b949feab58e3594ffb79b903fd2b4ec4021a1ca35c618f45da5b", kill_on_drop: false }`
[INFO] [stdout] c1401148c907b949feab58e3594ffb79b903fd2b4ec4021a1ca35c618f45da5b
