[INFO] cloning repository https://github.com/leemiyinghao/vec2seq-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/leemiyinghao/vec2seq-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleemiyinghao%2Fvec2seq-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleemiyinghao%2Fvec2seq-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0351d58e007c139287ff70cd2fa03fa95bdad75d
[INFO] checking leemiyinghao/vec2seq-rust against master#350d0ef0ec0493e6d21cfb265cb8211a0e74d766 for pr-145342
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleemiyinghao%2Fvec2seq-rust" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/leemiyinghao/vec2seq-rust
[INFO] finished tweaking git repo https://github.com/leemiyinghao/vec2seq-rust
[INFO] tweaked toml for git repo https://github.com/leemiyinghao/vec2seq-rust written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/leemiyinghao/vec2seq-rust on toolchain 350d0ef0ec0493e6d21cfb265cb8211a0e74d766
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/leemiyinghao/vec2seq-rust 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" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/granne/granne.git`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded lz_fnv v0.1.2
[INFO] [stderr]   Downloaded cedarwood v0.4.4
[INFO] [stderr]   Downloaded db-key v0.0.5
[INFO] [stderr]   Downloaded madvise v0.1.0
[INFO] [stderr]   Downloaded terminal_size v0.1.13
[INFO] [stderr]   Downloaded leveldb v0.8.5
[INFO] [stderr]   Downloaded rusqlite v0.23.1
[INFO] [stderr]   Downloaded reductive v0.4.0
[INFO] [stderr]   Downloaded stream-vbyte v0.3.2
[INFO] [stderr]   Downloaded glam v0.9.1
[INFO] [stderr]   Downloaded hashbrown v0.8.0
[INFO] [stderr]   Downloaded pbr v1.0.3
[INFO] [stderr]   Downloaded timeit v0.1.2
[INFO] [stderr]   Downloaded finalfusion v0.12.4
[INFO] [stderr]   Downloaded leveldb-sys v2.0.6
[INFO] [stderr]   Downloaded jieba-rs v0.5.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 11855fa84a96ef0d55ef68c8ec47772d04afdb1c30fa484c6ea5e20b66e12dd5
[INFO] running `Command { std: "docker" "start" "-a" "11855fa84a96ef0d55ef68c8ec47772d04afdb1c30fa484c6ea5e20b66e12dd5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "11855fa84a96ef0d55ef68c8ec47772d04afdb1c30fa484c6ea5e20b66e12dd5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "11855fa84a96ef0d55ef68c8ec47772d04afdb1c30fa484c6ea5e20b66e12dd5", kill_on_drop: false }`
[INFO] [stdout] 11855fa84a96ef0d55ef68c8ec47772d04afdb1c30fa484c6ea5e20b66e12dd5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 50bd74d3291bbd644f3a64b215d6070b0165fa211062c14cc1b901fb4fb24879
[INFO] running `Command { std: "docker" "start" "-a" "50bd74d3291bbd644f3a64b215d6070b0165fa211062c14cc1b901fb4fb24879", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.71
[INFO] [stderr]    Compiling autocfg v1.0.0
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]    Compiling getrandom v0.1.14
[INFO] [stderr]    Compiling proc-macro2 v1.0.18
[INFO] [stderr]    Compiling maybe-uninit v2.0.0
[INFO] [stderr]    Compiling unicode-xid v0.2.1
[INFO] [stderr]    Compiling syn v1.0.33
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]     Checking scopeguard v1.1.0
[INFO] [stderr]    Compiling serde_derive v1.0.114
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling memoffset v0.5.5
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.2
[INFO] [stderr]    Compiling num-traits v0.2.12
[INFO] [stderr]    Compiling serde v1.0.114
[INFO] [stderr]    Compiling rayon-core v1.7.1
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.8
[INFO] [stderr]    Compiling rayon v1.3.1
[INFO] [stderr]     Checking crossbeam-queue v0.2.3
[INFO] [stderr]    Compiling rand_pcg v0.2.1
[INFO] [stderr]    Compiling siphasher v0.3.3
[INFO] [stderr]     Checking smallvec v1.4.0
[INFO] [stderr]     Checking either v1.5.3
[INFO] [stderr]    Compiling phf_shared v0.8.0
[INFO] [stderr]     Checking aho-corasick v0.7.13
[INFO] [stderr]     Checking crossbeam-deque v0.7.3
[INFO] [stderr]    Compiling num-integer v0.1.43
[INFO] [stderr]    Compiling rand_chacha v0.2.2
[INFO] [stderr]    Compiling num-complex v0.2.4
[INFO] [stderr]     Checking thread_local v1.0.1
[INFO] [stderr]     Checking regex-syntax v0.6.18
[INFO] [stderr]    Compiling ryu v1.0.5
[INFO] [stderr]    Compiling cc v1.0.58
[INFO] [stderr]    Compiling log v0.4.8
[INFO] [stderr]    Compiling rand v0.7.3
[INFO] [stderr]    Compiling crc32fast v1.2.0
[INFO] [stderr]    Compiling cmake v0.1.44
[INFO] [stderr]     Checking time v0.1.43
[INFO] [stderr]    Compiling ndarray v0.13.1
[INFO] [stderr]    Compiling phf_generator v0.8.0
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]    Compiling pkg-config v0.3.17
[INFO] [stderr]    Compiling phf_codegen v0.8.0
[INFO] [stderr]     Checking matrixmultiply v0.2.3
[INFO] [stderr]    Compiling leveldb-sys v2.0.6
[INFO] [stderr]    Compiling libsqlite3-sys v0.18.0
[INFO] [stderr]     Checking approx v0.3.2
[INFO] [stderr]     Checking ordered-float v1.1.0
[INFO] [stderr]     Checking crossbeam-channel v0.4.2
[INFO] [stderr]    Compiling hashbrown v0.8.0
[INFO] [stderr]     Checking itoa v0.4.6
[INFO] [stderr]    Compiling serde_json v1.0.56
[INFO] [stderr]     Checking adler v0.2.3
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]     Checking miniz_oxide v0.4.0
[INFO] [stderr]    Compiling jieba-rs v0.5.1
[INFO] [stderr]     Checking parking_lot_core v0.7.2
[INFO] [stderr]     Checking regex v1.3.9
[INFO] [stderr]     Checking rand_xorshift v0.2.0
[INFO] [stderr]     Checking regex-automata v0.1.9
[INFO] [stderr]     Checking terminal_size v0.1.13
[INFO] [stderr]     Checking termios v0.3.2
[INFO] [stderr]     Checking memmap v0.7.0
[INFO] [stderr]     Checking lock_api v0.3.4
[INFO] [stderr]    Compiling glam v0.9.1
[INFO] [stderr]    Compiling granne v0.5.1 (https://github.com/granne/granne.git#7068139d)
[INFO] [stderr]     Checking ahash v0.3.8
[INFO] [stderr]     Checking quick-error v1.2.3
[INFO] [stderr]     Checking linked-hash-map v0.5.3
[INFO] [stderr]     Checking unicode-width v0.1.8
[INFO] [stderr]     Checking stable_deref_trait v1.1.1
[INFO] [stderr]     Checking console v0.11.3
[INFO] [stderr]     Checking owning_ref v0.4.1
[INFO] [stderr]     Checking lru-cache v0.1.2
[INFO] [stderr]     Checking humantime v1.3.0
[INFO] [stderr]     Checking parking_lot v0.10.2
[INFO] [stderr]     Checking pbr v1.0.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.20
[INFO] [stderr]     Checking phf v0.8.0
[INFO] [stderr]     Checking flate2 v1.0.16
[INFO] [stderr]     Checking cedarwood v0.4.4
[INFO] [stderr]     Checking itertools v0.8.2
[INFO] [stderr]     Checking stream-vbyte v0.3.2
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking madvise v0.1.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking csv-core v0.1.10
[INFO] [stderr]     Checking fallible-iterator v0.2.0
[INFO] [stderr]     Checking adler32 v1.1.0
[INFO] [stderr]     Checking rle-decode-fast v1.0.1
[INFO] [stderr]     Checking libflate_lz77 v1.0.0
[INFO] [stderr]     Checking termcolor v1.1.0
[INFO] [stderr]     Checking fnv v1.0.7
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking db-key v0.0.5
[INFO] [stderr]     Checking number_prefix v0.3.0
[INFO] [stderr]     Checking env_logger v0.7.1
[INFO] [stderr]     Checking libflate v1.0.2
[INFO] [stderr]     Checking rusqlite v0.23.1
[INFO] [stderr]     Checking indicatif v0.15.0
[INFO] [stderr]     Checking thiserror v1.0.20
[INFO] [stderr]     Checking crossbeam v0.7.3
[INFO] [stderr]     Checking timeit v0.1.2
[INFO] [stderr]     Checking threadpool v1.8.1
[INFO] [stderr]     Checking lz_fnv v0.1.2
[INFO] [stderr]     Checking reductive v0.4.0
[INFO] [stderr]     Checking toml v0.5.6
[INFO] [stderr]     Checking bstr v0.2.13
[INFO] [stderr]     Checking bincode v1.3.1
[INFO] [stderr]     Checking csv v1.1.3
[INFO] [stderr]     Checking finalfusion v0.12.4
[INFO] [stderr]     Checking leveldb v0.8.5
[INFO] [stderr]     Checking vec2seq_rust v0.1.6 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #[macro_use]
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/lib.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Result`, and `params`
[INFO] [stdout]  --> src/database/mod.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rusqlite::{params, Connection, Result};
[INFO] [stdout]   |                ^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unbounded`
[INFO] [stdout]  --> src/tasks/mod.rs:5:45
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crossbeam::crossbeam_channel::{bounded, unbounded};
[INFO] [stdout]   |                                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HumanDuration` and `MultiProgress`
[INFO] [stdout]  --> src/tasks/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use indicatif::{HumanDuration, MultiProgress, ProgressBar, ProgressStyle};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/tasks/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/tasks/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Receiver` and `Sender`
[INFO] [stdout]   --> src/tasks/mod.rs:22:23
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::sync::mpsc::{Receiver, Sender};
[INFO] [stdout]    |                       ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> src/tasks/mod.rs:23:17
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::sync::{Arc, Mutex};
[INFO] [stdout]    |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/tasks/mod.rs:24:17
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `threadpool::ThreadPool`
[INFO] [stdout]   --> src/tasks/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use threadpool::ThreadPool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/tasks/mod.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 |         if (self.objects.len() > 0) {
[INFO] [stdout]     |            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 110 -         if (self.objects.len() > 0) {
[INFO] [stdout] 110 +         if self.objects.len() > 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:189:13
[INFO] [stdout]     |
[INFO] [stdout] 189 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:322:9
[INFO] [stdout]     |
[INFO] [stdout] 322 |         while true {
[INFO] [stdout]     |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildConfig` and `Granne`
[INFO] [stdout]    --> src/tasks/mod.rs:456:23
[INFO] [stdout]     |
[INFO] [stdout] 456 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]     |                       ^^^^^^^^^^^           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:505:13
[INFO] [stdout]     |
[INFO] [stdout] 505 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildConfig`, `Builder`, and `GranneBuilder`
[INFO] [stdout]   --> src/lib.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]    |                       ^^^^^^^^^^^  ^^^^^^^          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HumanDuration`, `MultiProgress`, `ProgressBar`, and `ProgressStyle`
[INFO] [stdout]   --> src/lib.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use indicatif::{HumanDuration, MultiProgress, ProgressBar, ProgressStyle};
[INFO] [stdout]    |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `leveldb_sys`
[INFO] [stdout]   --> src/lib.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use leveldb_sys;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Result`, and `params`
[INFO] [stdout]   --> src/lib.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 | use rusqlite::{params, Connection, Result};
[INFO] [stdout]    |                ^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/lib.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/lib.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/lib.rs:21:17
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #[macro_use]
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/lib.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Result`, and `params`
[INFO] [stdout]  --> src/database/mod.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rusqlite::{params, Connection, Result};
[INFO] [stdout]   |                ^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unbounded`
[INFO] [stdout]  --> src/tasks/mod.rs:5:45
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crossbeam::crossbeam_channel::{bounded, unbounded};
[INFO] [stdout]   |                                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HumanDuration` and `MultiProgress`
[INFO] [stdout]  --> src/tasks/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use indicatif::{HumanDuration, MultiProgress, ProgressBar, ProgressStyle};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/tasks/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/tasks/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Receiver` and `Sender`
[INFO] [stdout]   --> src/tasks/mod.rs:22:23
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::sync::mpsc::{Receiver, Sender};
[INFO] [stdout]    |                       ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> src/tasks/mod.rs:23:17
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::sync::{Arc, Mutex};
[INFO] [stdout]    |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/tasks/mod.rs:24:17
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `threadpool::ThreadPool`
[INFO] [stdout]   --> src/tasks/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use threadpool::ThreadPool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/tasks/mod.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 |         if (self.objects.len() > 0) {
[INFO] [stdout]     |            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 110 -         if (self.objects.len() > 0) {
[INFO] [stdout] 110 +         if self.objects.len() > 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:189:13
[INFO] [stdout]     |
[INFO] [stdout] 189 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:322:9
[INFO] [stdout]     |
[INFO] [stdout] 322 |         while true {
[INFO] [stdout]     |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildConfig` and `Granne`
[INFO] [stdout]    --> src/tasks/mod.rs:456:23
[INFO] [stdout]     |
[INFO] [stdout] 456 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]     |                       ^^^^^^^^^^^           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:505:13
[INFO] [stdout]     |
[INFO] [stdout] 505 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildConfig`, `Builder`, and `GranneBuilder`
[INFO] [stdout]   --> src/lib.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]    |                       ^^^^^^^^^^^  ^^^^^^^          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HumanDuration`, `MultiProgress`, `ProgressBar`, and `ProgressStyle`
[INFO] [stdout]   --> src/lib.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use indicatif::{HumanDuration, MultiProgress, ProgressBar, ProgressStyle};
[INFO] [stdout]    |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `leveldb_sys`
[INFO] [stdout]   --> src/lib.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use leveldb_sys;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Result`, and `params`
[INFO] [stdout]   --> src/lib.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 | use rusqlite::{params, Connection, Result};
[INFO] [stdout]    |                ^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/lib.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/lib.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/lib.rs:21:17
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Index`
[INFO] [stdout]   --> src/lib.rs:10:68
[INFO] [stdout]    |
[INFO] [stdout] 10 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]    |                                                                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tasks/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let mut articles = stmt
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tasks/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut database = match leveldb::database::Database::open(Path::new("db/ldb.ldb"), options) {
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step`
[INFO] [stdout]    --> src/tasks/mod.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut step = 0i32;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_step`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:376:9
[INFO] [stdout]     |
[INFO] [stdout] 376 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Index`
[INFO] [stdout]   --> src/lib.rs:10:68
[INFO] [stdout]    |
[INFO] [stdout] 10 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]    |                                                                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `title`
[INFO] [stdout]    --> src/tasks/mod.rs:203:75
[INFO] [stdout]     |
[INFO] [stdout] 203 |                     database::raw_ptt_article::ArticleOrigin::PttOrigin { title, board } => {
[INFO] [stdout]     |                                                                           ^^^^^ help: try ignoring the field: `title: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit`
[INFO] [stdout]    --> src/tasks/mod.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                     let hit = false;
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_hit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_step`
[INFO] [stdout]    --> src/tasks/mod.rs:321:17
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let mut reply_step = 0i32;
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_step`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:321:13
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let mut reply_step = 0i32;
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut output_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut step = 0i32;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:368:13
[INFO] [stdout]     |
[INFO] [stdout] 368 |         let mut article = database::raw_ptt_article::ContentReply {
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:405:9
[INFO] [stdout]     |
[INFO] [stdout] 405 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:442:9
[INFO] [stdout]     |
[INFO] [stdout] 442 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `join_receiver`
[INFO] [stdout]    --> src/tasks/mod.rs:479:23
[INFO] [stdout]     |
[INFO] [stdout] 479 |     let (join_sender, join_receiver) = bounded::<()>(workers);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_join_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:482:9
[INFO] [stdout]     |
[INFO] [stdout] 482 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clone_join_sender`
[INFO] [stdout]    --> src/tasks/mod.rs:485:13
[INFO] [stdout]     |
[INFO] [stdout] 485 |         let clone_join_sender = join_sender.clone();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clone_join_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/tasks/mod.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let handle = std::thread::spawn(move || {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write_opts`
[INFO] [stdout]    --> src/tasks/mod.rs:603:17
[INFO] [stdout]     |
[INFO] [stdout] 603 |             let write_opts = leveldb::options::WriteOptions::new();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_write_opts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:561:13
[INFO] [stdout]     |
[INFO] [stdout] 561 |         for i in 0..workers {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:510:21
[INFO] [stdout]     |
[INFO] [stdout] 510 |                 let mut result = ArticleVectorSet {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:552:13
[INFO] [stdout]     |
[INFO] [stdout] 552 |         let mut step = 0i32;
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:469:9
[INFO] [stdout]     |
[INFO] [stdout] 469 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:579:9
[INFO] [stdout]     |
[INFO] [stdout] 579 |     let mut reply_group_output_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step`
[INFO] [stdout]    --> src/tasks/mod.rs:677:13
[INFO] [stdout]     |
[INFO] [stdout] 677 |     let mut step = 0i32;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_step`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_file`
[INFO] [stdout]    --> src/tasks/mod.rs:704:13
[INFO] [stdout]     |
[INFO] [stdout] 704 |     let mut reply_file = File::create("reply.bin").unwrap();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:670:9
[INFO] [stdout]     |
[INFO] [stdout] 670 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:677:9
[INFO] [stdout]     |
[INFO] [stdout] 677 |     let mut step = 0i32;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:704:9
[INFO] [stdout]     |
[INFO] [stdout] 704 |     let mut reply_file = File::create("reply.bin").unwrap();
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_index`
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         reply_index: &std::path::Path,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_elements`
[INFO] [stdout]   --> src/lib.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         reply_elements: &std::path::Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_elements`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tmp`
[INFO] [stdout]    --> src/lib.rs:124:17
[INFO] [stdout]     |
[INFO] [stdout] 124 |         let mut tmp: Vec<(usize, f32)> = Vec::new();
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_tmp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |         let mut self_ids = self.reply.search(&vec, 200, 10);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:124:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |         let mut tmp: Vec<(usize, f32)> = Vec::new();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RawArticle` is never constructed
[INFO] [stdout]  --> src/database/raw_ptt_article.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct RawArticle {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Push` is never constructed
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Push {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ArticleOrigin` is never used
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ArticleOrigin {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Article` is never constructed
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Article {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ContentReply` is never constructed
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct ContentReply {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stopwords` is never read
[INFO] [stdout]  --> src/sentence_embedding/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct EmbeddingFetcher {
[INFO] [stdout]   |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     stopwords: fnv::FnvHashSet<String>,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `raw_article_sqlite_to_leveldb` is never used
[INFO] [stdout]   --> src/tasks/mod.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn raw_article_sqlite_to_leveldb() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KMediumObject` is never constructed
[INFO] [stdout]    --> src/tasks/mod.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | struct KMediumObject {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KMediumGroup` is never constructed
[INFO] [stdout]    --> src/tasks/mod.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | struct KMediumGroup {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `updateMedium` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | impl KMediumGroup {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 109 |     pub fn updateMedium(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rawarticle_filter_to_content_reply` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn rawarticle_filter_to_content_reply() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rawarticle_to_tfidf` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub fn rawarticle_to_tfidf() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextVectorSet` is never constructed
[INFO] [stdout]    --> src/tasks/mod.rs:457:8
[INFO] [stdout]     |
[INFO] [stdout] 457 | struct TextVectorSet {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArticleVectorSet` is never constructed
[INFO] [stdout]    --> src/tasks/mod.rs:461:8
[INFO] [stdout]     |
[INFO] [stdout] 461 | struct ArticleVectorSet {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `content_reply_to_reply_and_index` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:465:8
[INFO] [stdout]     |
[INFO] [stdout] 465 | pub fn content_reply_to_reply_and_index() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_reply_storage` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:666:8
[INFO] [stdout]     |
[INFO] [stdout] 666 | pub fn test_reply_storage() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cutter` is never read
[INFO] [stdout]   --> src/tfidf/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct TfIdf {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     cutter: Option<jieba_rs::Jieba>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TfIdf` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_from_cutter`, `add_uncut_document`, `add_cutted_document`, and `get_max` are never used
[INFO] [stdout]   --> src/tfidf/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl TfIdf {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn new_from_cutter(cutter: jieba_rs::Jieba) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn add_uncut_document(&mut self, content: String) -> Result<(), ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn add_cutted_document(&mut self, content: Vec<String>) -> Result<(), ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn get_max(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tasks/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let mut articles = stmt
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tasks/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut database = match leveldb::database::Database::open(Path::new("db/ldb.ldb"), options) {
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step`
[INFO] [stdout]    --> src/tasks/mod.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut step = 0i32;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_step`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:376:9
[INFO] [stdout]     |
[INFO] [stdout] 376 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `title`
[INFO] [stdout]    --> src/tasks/mod.rs:203:75
[INFO] [stdout]     |
[INFO] [stdout] 203 |                     database::raw_ptt_article::ArticleOrigin::PttOrigin { title, board } => {
[INFO] [stdout]     |                                                                           ^^^^^ help: try ignoring the field: `title: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit`
[INFO] [stdout]    --> src/tasks/mod.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                     let hit = false;
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_hit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_step`
[INFO] [stdout]    --> src/tasks/mod.rs:321:17
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let mut reply_step = 0i32;
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_step`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |         tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |         stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:321:13
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let mut reply_step = 0i32;
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `updateMedium` should have a snake case name
[INFO] [stdout]    --> src/tasks/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub fn updateMedium(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^ help: convert the identifier to snake case: `update_medium`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |             tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |             let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 179 |             let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:416:33
[INFO] [stdout]     |
[INFO] [stdout] 416 | ...                   tfidf_table.add_uncut_document(a.content);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 416 |                                 let _ = tfidf_table.add_uncut_document(a.content);
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:418:37
[INFO] [stdout]     |
[INFO] [stdout] 418 | ...                   tfidf_table.add_uncut_document(push);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 418 |                                     let _ = tfidf_table.add_uncut_document(push);
[INFO] [stdout]     |                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:453:5
[INFO] [stdout]     |
[INFO] [stdout] 453 |     file.write_all(&bincode::serialize(&tfidf_table).unwrap());
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 453 |     let _ = file.write_all(&bincode::serialize(&tfidf_table).unwrap());
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:489:13
[INFO] [stdout]     |
[INFO] [stdout] 489 |             tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 489 |             let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:499:13
[INFO] [stdout]     |
[INFO] [stdout] 499 |             stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 499 |             let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut output_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut step = 0i32;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:368:13
[INFO] [stdout]     |
[INFO] [stdout] 368 |         let mut article = database::raw_ptt_article::ContentReply {
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:405:9
[INFO] [stdout]     |
[INFO] [stdout] 405 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:442:9
[INFO] [stdout]     |
[INFO] [stdout] 442 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `join_receiver`
[INFO] [stdout]    --> src/tasks/mod.rs:479:23
[INFO] [stdout]     |
[INFO] [stdout] 479 |     let (join_sender, join_receiver) = bounded::<()>(workers);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_join_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:482:9
[INFO] [stdout]     |
[INFO] [stdout] 482 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clone_join_sender`
[INFO] [stdout]    --> src/tasks/mod.rs:485:13
[INFO] [stdout]     |
[INFO] [stdout] 485 |         let clone_join_sender = join_sender.clone();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clone_join_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/tasks/mod.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let handle = std::thread::spawn(move || {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write_opts`
[INFO] [stdout]    --> src/tasks/mod.rs:603:17
[INFO] [stdout]     |
[INFO] [stdout] 603 |             let write_opts = leveldb::options::WriteOptions::new();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_write_opts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:561:13
[INFO] [stdout]     |
[INFO] [stdout] 561 |         for i in 0..workers {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:510:21
[INFO] [stdout]     |
[INFO] [stdout] 510 |                 let mut result = ArticleVectorSet {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:552:13
[INFO] [stdout]     |
[INFO] [stdout] 552 |         let mut step = 0i32;
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:469:9
[INFO] [stdout]     |
[INFO] [stdout] 469 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:579:9
[INFO] [stdout]     |
[INFO] [stdout] 579 |     let mut reply_group_output_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step`
[INFO] [stdout]    --> src/tasks/mod.rs:677:13
[INFO] [stdout]     |
[INFO] [stdout] 677 |     let mut step = 0i32;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_step`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_file`
[INFO] [stdout]    --> src/tasks/mod.rs:704:13
[INFO] [stdout]     |
[INFO] [stdout] 704 |     let mut reply_file = File::create("reply.bin").unwrap();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:670:9
[INFO] [stdout]     |
[INFO] [stdout] 670 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:677:9
[INFO] [stdout]     |
[INFO] [stdout] 677 |     let mut step = 0i32;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:704:9
[INFO] [stdout]     |
[INFO] [stdout] 704 |     let mut reply_file = File::create("reply.bin").unwrap();
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_index`
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         reply_index: &std::path::Path,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_elements`
[INFO] [stdout]   --> src/lib.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         reply_elements: &std::path::Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_elements`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tmp`
[INFO] [stdout]    --> src/lib.rs:124:17
[INFO] [stdout]     |
[INFO] [stdout] 124 |         let mut tmp: Vec<(usize, f32)> = Vec::new();
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_tmp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |         let mut self_ids = self.reply.search(&vec, 200, 10);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:124:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |         let mut tmp: Vec<(usize, f32)> = Vec::new();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RawArticle` is never constructed
[INFO] [stdout]  --> src/database/raw_ptt_article.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct RawArticle {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Push` is never constructed
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Push {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ArticleOrigin` is never used
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ArticleOrigin {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Article` is never constructed
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Article {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ContentReply` is never constructed
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct ContentReply {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stopwords` is never read
[INFO] [stdout]  --> src/sentence_embedding/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct EmbeddingFetcher {
[INFO] [stdout]   |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     stopwords: fnv::FnvHashSet<String>,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `raw_article_sqlite_to_leveldb` is never used
[INFO] [stdout]   --> src/tasks/mod.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn raw_article_sqlite_to_leveldb() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KMediumObject` is never constructed
[INFO] [stdout]    --> src/tasks/mod.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | struct KMediumObject {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KMediumGroup` is never constructed
[INFO] [stdout]    --> src/tasks/mod.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | struct KMediumGroup {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `updateMedium` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | impl KMediumGroup {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 109 |     pub fn updateMedium(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rawarticle_filter_to_content_reply` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn rawarticle_filter_to_content_reply() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rawarticle_to_tfidf` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub fn rawarticle_to_tfidf() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextVectorSet` is never constructed
[INFO] [stdout]    --> src/tasks/mod.rs:457:8
[INFO] [stdout]     |
[INFO] [stdout] 457 | struct TextVectorSet {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArticleVectorSet` is never constructed
[INFO] [stdout]    --> src/tasks/mod.rs:461:8
[INFO] [stdout]     |
[INFO] [stdout] 461 | struct ArticleVectorSet {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `content_reply_to_reply_and_index` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:465:8
[INFO] [stdout]     |
[INFO] [stdout] 465 | pub fn content_reply_to_reply_and_index() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_reply_storage` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:666:8
[INFO] [stdout]     |
[INFO] [stdout] 666 | pub fn test_reply_storage() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cutter` is never read
[INFO] [stdout]   --> src/tfidf/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct TfIdf {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     cutter: Option<jieba_rs::Jieba>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TfIdf` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_from_cutter`, `add_uncut_document`, `add_cutted_document`, and `get_max` are never used
[INFO] [stdout]   --> src/tfidf/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl TfIdf {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn new_from_cutter(cutter: jieba_rs::Jieba) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn add_uncut_document(&mut self, content: String) -> Result<(), ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn add_cutted_document(&mut self, content: Vec<String>) -> Result<(), ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn get_max(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |         tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |         stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `updateMedium` should have a snake case name
[INFO] [stdout]    --> src/tasks/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub fn updateMedium(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^ help: convert the identifier to snake case: `update_medium`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |             tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |             let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 179 |             let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:416:33
[INFO] [stdout]     |
[INFO] [stdout] 416 | ...                   tfidf_table.add_uncut_document(a.content);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 416 |                                 let _ = tfidf_table.add_uncut_document(a.content);
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:418:37
[INFO] [stdout]     |
[INFO] [stdout] 418 | ...                   tfidf_table.add_uncut_document(push);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 418 |                                     let _ = tfidf_table.add_uncut_document(push);
[INFO] [stdout]     |                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:453:5
[INFO] [stdout]     |
[INFO] [stdout] 453 |     file.write_all(&bincode::serialize(&tfidf_table).unwrap());
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 453 |     let _ = file.write_all(&bincode::serialize(&tfidf_table).unwrap());
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:489:13
[INFO] [stdout]     |
[INFO] [stdout] 489 |             tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 489 |             let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:499:13
[INFO] [stdout]     |
[INFO] [stdout] 499 |             stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 499 |             let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Result`, and `params`
[INFO] [stdout]  --> src/database/mod.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rusqlite::{params, Connection, Result};
[INFO] [stdout]   |                ^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unbounded`
[INFO] [stdout]  --> src/tasks/mod.rs:5:45
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crossbeam::crossbeam_channel::{bounded, unbounded};
[INFO] [stdout]   |                                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HumanDuration` and `MultiProgress`
[INFO] [stdout]  --> src/tasks/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use indicatif::{HumanDuration, MultiProgress, ProgressBar, ProgressStyle};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/tasks/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/tasks/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Receiver` and `Sender`
[INFO] [stdout]   --> src/tasks/mod.rs:22:23
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::sync::mpsc::{Receiver, Sender};
[INFO] [stdout]    |                       ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> src/tasks/mod.rs:23:17
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::sync::{Arc, Mutex};
[INFO] [stdout]    |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/tasks/mod.rs:24:17
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `threadpool::ThreadPool`
[INFO] [stdout]   --> src/tasks/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use threadpool::ThreadPool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/tasks/mod.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 |         if (self.objects.len() > 0) {
[INFO] [stdout]     |            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 110 -         if (self.objects.len() > 0) {
[INFO] [stdout] 110 +         if self.objects.len() > 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:189:13
[INFO] [stdout]     |
[INFO] [stdout] 189 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:322:9
[INFO] [stdout]     |
[INFO] [stdout] 322 |         while true {
[INFO] [stdout]     |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildConfig` and `Granne`
[INFO] [stdout]    --> src/tasks/mod.rs:456:23
[INFO] [stdout]     |
[INFO] [stdout] 456 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]     |                       ^^^^^^^^^^^           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:505:13
[INFO] [stdout]     |
[INFO] [stdout] 505 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildConfig`, `Builder`, `GranneBuilder`, `Granne`, `Index`, and `angular`
[INFO] [stdout]   --> src/main.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]    |              ^^^^^^^  ^^^^^^^^^^^  ^^^^^^^  ^^^^^^  ^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HumanDuration`, `MultiProgress`, `ProgressBar`, and `ProgressStyle`
[INFO] [stdout]   --> src/main.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use indicatif::{HumanDuration, MultiProgress, ProgressBar, ProgressStyle};
[INFO] [stdout]    |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `leveldb::kv::KV`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use leveldb::kv::KV;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `leveldb_sys`
[INFO] [stdout]   --> src/main.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use leveldb_sys;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Result`, and `params`
[INFO] [stdout]   --> src/main.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 | use rusqlite::{params, Connection, Result};
[INFO] [stdout]    |                ^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/main.rs:21:17
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/main.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 vector.push(if (item == 0f32) { 1f32 } else { item });
[INFO] [stdout]    |                                ^            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 39 -                 vector.push(if (item == 0f32) { 1f32 } else { item });
[INFO] [stdout] 39 +                 vector.push(if item == 0f32 { 1f32 } else { item });
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/main.rs:49:32
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 vector.push(if (item == 0f32) { 1f32 } else { item });
[INFO] [stdout]    |                                ^            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 49 -                 vector.push(if (item == 0f32) { 1f32 } else { item });
[INFO] [stdout] 49 +                 vector.push(if item == 0f32 { 1f32 } else { item });
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenizeMode`
[INFO] [stdout]    --> src/main.rs:120:23
[INFO] [stdout]     |
[INFO] [stdout] 120 | use jieba_rs::{Jieba, TokenizeMode};
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `finalfusion::prelude::*`
[INFO] [stdout]    --> src/main.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | use finalfusion::prelude::*;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Result`, and `params`
[INFO] [stdout]  --> src/database/mod.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rusqlite::{params, Connection, Result};
[INFO] [stdout]   |                ^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `unbounded`
[INFO] [stdout]  --> src/tasks/mod.rs:5:45
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crossbeam::crossbeam_channel::{bounded, unbounded};
[INFO] [stdout]   |                                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HumanDuration` and `MultiProgress`
[INFO] [stdout]  --> src/tasks/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use indicatif::{HumanDuration, MultiProgress, ProgressBar, ProgressStyle};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/tasks/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/tasks/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Receiver` and `Sender`
[INFO] [stdout]   --> src/tasks/mod.rs:22:23
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::sync::mpsc::{Receiver, Sender};
[INFO] [stdout]    |                       ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> src/tasks/mod.rs:23:17
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::sync::{Arc, Mutex};
[INFO] [stdout]    |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/tasks/mod.rs:24:17
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `threadpool::ThreadPool`
[INFO] [stdout]   --> src/tasks/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use threadpool::ThreadPool;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/tasks/mod.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 |         if (self.objects.len() > 0) {
[INFO] [stdout]     |            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 110 -         if (self.objects.len() > 0) {
[INFO] [stdout] 110 +         if self.objects.len() > 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:189:13
[INFO] [stdout]     |
[INFO] [stdout] 189 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:322:9
[INFO] [stdout]     |
[INFO] [stdout] 322 |         while true {
[INFO] [stdout]     |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildConfig` and `Granne`
[INFO] [stdout]    --> src/tasks/mod.rs:456:23
[INFO] [stdout]     |
[INFO] [stdout] 456 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]     |                       ^^^^^^^^^^^           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/tasks/mod.rs:505:13
[INFO] [stdout]     |
[INFO] [stdout] 505 |             while true {
[INFO] [stdout]     |             ^^^^^^^^^^ help: use `loop`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BuildConfig`, `Builder`, `GranneBuilder`, `Granne`, `Index`, and `angular`
[INFO] [stdout]   --> src/main.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | use granne::{angular, BuildConfig, Builder, Granne, GranneBuilder, Index};
[INFO] [stdout]    |              ^^^^^^^  ^^^^^^^^^^^  ^^^^^^^  ^^^^^^  ^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HumanDuration`, `MultiProgress`, `ProgressBar`, and `ProgressStyle`
[INFO] [stdout]   --> src/main.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use indicatif::{HumanDuration, MultiProgress, ProgressBar, ProgressStyle};
[INFO] [stdout]    |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `leveldb::kv::KV`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use leveldb::kv::KV;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `leveldb_sys`
[INFO] [stdout]   --> src/main.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use leveldb_sys;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Connection`, `Result`, and `params`
[INFO] [stdout]   --> src/main.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 | use rusqlite::{params, Connection, Result};
[INFO] [stdout]    |                ^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]   --> src/main.rs:21:17
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/main.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 vector.push(if (item == 0f32) { 1f32 } else { item });
[INFO] [stdout]    |                                ^            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 39 -                 vector.push(if (item == 0f32) { 1f32 } else { item });
[INFO] [stdout] 39 +                 vector.push(if item == 0f32 { 1f32 } else { item });
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/main.rs:49:32
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 vector.push(if (item == 0f32) { 1f32 } else { item });
[INFO] [stdout]    |                                ^            ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 49 -                 vector.push(if (item == 0f32) { 1f32 } else { item });
[INFO] [stdout] 49 +                 vector.push(if item == 0f32 { 1f32 } else { item });
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenizeMode`
[INFO] [stdout]    --> src/main.rs:120:23
[INFO] [stdout]     |
[INFO] [stdout] 120 | use jieba_rs::{Jieba, TokenizeMode};
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `finalfusion::prelude::*`
[INFO] [stdout]    --> src/main.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | use finalfusion::prelude::*;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tasks/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let mut articles = stmt
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tasks/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut database = match leveldb::database::Database::open(Path::new("db/ldb.ldb"), options) {
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step`
[INFO] [stdout]    --> src/tasks/mod.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut step = 0i32;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_step`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:376:9
[INFO] [stdout]     |
[INFO] [stdout] 376 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `title`
[INFO] [stdout]    --> src/tasks/mod.rs:203:75
[INFO] [stdout]     |
[INFO] [stdout] 203 |                     database::raw_ptt_article::ArticleOrigin::PttOrigin { title, board } => {
[INFO] [stdout]     |                                                                           ^^^^^ help: try ignoring the field: `title: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit`
[INFO] [stdout]    --> src/tasks/mod.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                     let hit = false;
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_hit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_step`
[INFO] [stdout]    --> src/tasks/mod.rs:321:17
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let mut reply_step = 0i32;
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_step`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:321:13
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let mut reply_step = 0i32;
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut output_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut step = 0i32;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:368:13
[INFO] [stdout]     |
[INFO] [stdout] 368 |         let mut article = database::raw_ptt_article::ContentReply {
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:405:9
[INFO] [stdout]     |
[INFO] [stdout] 405 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:442:9
[INFO] [stdout]     |
[INFO] [stdout] 442 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `join_receiver`
[INFO] [stdout]    --> src/tasks/mod.rs:479:23
[INFO] [stdout]     |
[INFO] [stdout] 479 |     let (join_sender, join_receiver) = bounded::<()>(workers);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_join_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:482:9
[INFO] [stdout]     |
[INFO] [stdout] 482 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clone_join_sender`
[INFO] [stdout]    --> src/tasks/mod.rs:485:13
[INFO] [stdout]     |
[INFO] [stdout] 485 |         let clone_join_sender = join_sender.clone();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clone_join_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/tasks/mod.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let handle = std::thread::spawn(move || {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write_opts`
[INFO] [stdout]    --> src/tasks/mod.rs:603:17
[INFO] [stdout]     |
[INFO] [stdout] 603 |             let write_opts = leveldb::options::WriteOptions::new();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_write_opts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:561:13
[INFO] [stdout]     |
[INFO] [stdout] 561 |         for i in 0..workers {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:510:21
[INFO] [stdout]     |
[INFO] [stdout] 510 |                 let mut result = ArticleVectorSet {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:552:13
[INFO] [stdout]     |
[INFO] [stdout] 552 |         let mut step = 0i32;
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:469:9
[INFO] [stdout]     |
[INFO] [stdout] 469 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:579:9
[INFO] [stdout]     |
[INFO] [stdout] 579 |     let mut reply_group_output_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step`
[INFO] [stdout]    --> src/tasks/mod.rs:677:13
[INFO] [stdout]     |
[INFO] [stdout] 677 |     let mut step = 0i32;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_step`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_file`
[INFO] [stdout]    --> src/tasks/mod.rs:704:13
[INFO] [stdout]     |
[INFO] [stdout] 704 |     let mut reply_file = File::create("reply.bin").unwrap();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:670:9
[INFO] [stdout]     |
[INFO] [stdout] 670 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:677:9
[INFO] [stdout]     |
[INFO] [stdout] 677 |     let mut step = 0i32;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:704:9
[INFO] [stdout]     |
[INFO] [stdout] 704 |     let mut reply_file = File::create("reply.bin").unwrap();
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/main.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         for i in 1..10000 {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/main.rs:37:17
[INFO] [stdout]    |
[INFO] [stdout] 37 |             for j in 0..300 {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/main.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         for i in 1..10000 {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/main.rs:47:17
[INFO] [stdout]    |
[INFO] [stdout] 47 |             for j in 0..300 {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |         let mut result = math_tool::dot(
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:51:17
[INFO] [stdout]    |
[INFO] [stdout] 51 |             let mut result = math_tool::consine_similarity(&vector, &vector).unwrap();
[INFO] [stdout]    |                 ----^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/main.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn test() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_vec2seq` is never used
[INFO] [stdout]   --> src/main.rs:82:4
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn test_vec2seq() {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jieba_test` is never used
[INFO] [stdout]    --> src/main.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn jieba_test() {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_ff_subword` is never used
[INFO] [stdout]    --> src/main.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn test_ff_subword(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RawArticle` is never constructed
[INFO] [stdout]  --> src/database/raw_ptt_article.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct RawArticle {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Push` is never constructed
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Push {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, `push`, and `decompress` are never used
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl CompressedReplies{
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 46 |     pub fn new() -> Self{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn get(&self)->Vec<String>{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn push(&mut self, reply: String){
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     fn decompress(bytes: &Vec<u8>) -> Vec<String>{
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stopwords` is never read
[INFO] [stdout]  --> src/sentence_embedding/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct EmbeddingFetcher {
[INFO] [stdout]   |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     stopwords: fnv::FnvHashSet<String>,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `raw_article_sqlite_to_leveldb` is never used
[INFO] [stdout]   --> src/tasks/mod.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn raw_article_sqlite_to_leveldb() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rawarticle_to_tfidf` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub fn rawarticle_to_tfidf() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_reply_storage` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:666:8
[INFO] [stdout]     |
[INFO] [stdout] 666 | pub fn test_reply_storage() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cutter` is never read
[INFO] [stdout]   --> src/tfidf/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct TfIdf {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     cutter: Option<jieba_rs::Jieba>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TfIdf` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_from_cutter`, `add_uncut_document`, `add_cutted_document`, and `get_max` are never used
[INFO] [stdout]   --> src/tfidf/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl TfIdf {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn new_from_cutter(cutter: jieba_rs::Jieba) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn add_uncut_document(&mut self, content: String) -> Result<(), ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn add_cutted_document(&mut self, content: Vec<String>) -> Result<(), ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn get_max(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `updateMedium` should have a snake case name
[INFO] [stdout]    --> src/tasks/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub fn updateMedium(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^ help: convert the identifier to snake case: `update_medium`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |             tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |             let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 179 |             let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:416:33
[INFO] [stdout]     |
[INFO] [stdout] 416 | ...                   tfidf_table.add_uncut_document(a.content);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 416 |                                 let _ = tfidf_table.add_uncut_document(a.content);
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:418:37
[INFO] [stdout]     |
[INFO] [stdout] 418 | ...                   tfidf_table.add_uncut_document(push);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 418 |                                     let _ = tfidf_table.add_uncut_document(push);
[INFO] [stdout]     |                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:453:5
[INFO] [stdout]     |
[INFO] [stdout] 453 |     file.write_all(&bincode::serialize(&tfidf_table).unwrap());
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 453 |     let _ = file.write_all(&bincode::serialize(&tfidf_table).unwrap());
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:489:13
[INFO] [stdout]     |
[INFO] [stdout] 489 |             tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 489 |             let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:499:13
[INFO] [stdout]     |
[INFO] [stdout] 499 |             stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 499 |             let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tasks/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let mut articles = stmt
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tasks/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut database = match leveldb::database::Database::open(Path::new("db/ldb.ldb"), options) {
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step`
[INFO] [stdout]    --> src/tasks/mod.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut step = 0i32;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_step`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:376:9
[INFO] [stdout]     |
[INFO] [stdout] 376 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `title`
[INFO] [stdout]    --> src/tasks/mod.rs:203:75
[INFO] [stdout]     |
[INFO] [stdout] 203 |                     database::raw_ptt_article::ArticleOrigin::PttOrigin { title, board } => {
[INFO] [stdout]     |                                                                           ^^^^^ help: try ignoring the field: `title: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit`
[INFO] [stdout]    --> src/tasks/mod.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                     let hit = false;
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_hit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_step`
[INFO] [stdout]    --> src/tasks/mod.rs:321:17
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let mut reply_step = 0i32;
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_step`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:321:13
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let mut reply_step = 0i32;
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut output_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let mut step = 0i32;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:368:13
[INFO] [stdout]     |
[INFO] [stdout] 368 |         let mut article = database::raw_ptt_article::ContentReply {
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:405:9
[INFO] [stdout]     |
[INFO] [stdout] 405 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:442:9
[INFO] [stdout]     |
[INFO] [stdout] 442 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `join_receiver`
[INFO] [stdout]    --> src/tasks/mod.rs:479:23
[INFO] [stdout]     |
[INFO] [stdout] 479 |     let (join_sender, join_receiver) = bounded::<()>(workers);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_join_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:482:9
[INFO] [stdout]     |
[INFO] [stdout] 482 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clone_join_sender`
[INFO] [stdout]    --> src/tasks/mod.rs:485:13
[INFO] [stdout]     |
[INFO] [stdout] 485 |         let clone_join_sender = join_sender.clone();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clone_join_sender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/tasks/mod.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let handle = std::thread::spawn(move || {
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write_opts`
[INFO] [stdout]    --> src/tasks/mod.rs:603:17
[INFO] [stdout]     |
[INFO] [stdout] 603 |             let write_opts = leveldb::options::WriteOptions::new();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_write_opts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/tasks/mod.rs:561:13
[INFO] [stdout]     |
[INFO] [stdout] 561 |         for i in 0..workers {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:510:21
[INFO] [stdout]     |
[INFO] [stdout] 510 |                 let mut result = ArticleVectorSet {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:552:13
[INFO] [stdout]     |
[INFO] [stdout] 552 |         let mut step = 0i32;
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:469:9
[INFO] [stdout]     |
[INFO] [stdout] 469 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:579:9
[INFO] [stdout]     |
[INFO] [stdout] 579 |     let mut reply_group_output_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step`
[INFO] [stdout]    --> src/tasks/mod.rs:677:13
[INFO] [stdout]     |
[INFO] [stdout] 677 |     let mut step = 0i32;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_step`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reply_file`
[INFO] [stdout]    --> src/tasks/mod.rs:704:13
[INFO] [stdout]     |
[INFO] [stdout] 704 |     let mut reply_file = File::create("reply.bin").unwrap();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reply_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:670:9
[INFO] [stdout]     |
[INFO] [stdout] 670 |     let mut input_database: leveldb::database::Database<i32> =
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:677:9
[INFO] [stdout]     |
[INFO] [stdout] 677 |     let mut step = 0i32;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tasks/mod.rs:704:9
[INFO] [stdout]     |
[INFO] [stdout] 704 |     let mut reply_file = File::create("reply.bin").unwrap();
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/main.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         for i in 1..10000 {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/main.rs:37:17
[INFO] [stdout]    |
[INFO] [stdout] 37 |             for j in 0..300 {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/main.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         for i in 1..10000 {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/main.rs:47:17
[INFO] [stdout]    |
[INFO] [stdout] 47 |             for j in 0..300 {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |         let mut result = math_tool::dot(
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:51:17
[INFO] [stdout]    |
[INFO] [stdout] 51 |             let mut result = math_tool::consine_similarity(&vector, &vector).unwrap();
[INFO] [stdout]    |                 ----^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/main.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn test() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_vec2seq` is never used
[INFO] [stdout]   --> src/main.rs:82:4
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn test_vec2seq() {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jieba_test` is never used
[INFO] [stdout]    --> src/main.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn jieba_test() {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_ff_subword` is never used
[INFO] [stdout]    --> src/main.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn test_ff_subword(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RawArticle` is never constructed
[INFO] [stdout]  --> src/database/raw_ptt_article.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct RawArticle {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Push` is never constructed
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Push {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, `push`, and `decompress` are never used
[INFO] [stdout]   --> src/database/raw_ptt_article.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl CompressedReplies{
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 46 |     pub fn new() -> Self{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn get(&self)->Vec<String>{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn push(&mut self, reply: String){
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     fn decompress(bytes: &Vec<u8>) -> Vec<String>{
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stopwords` is never read
[INFO] [stdout]  --> src/sentence_embedding/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct EmbeddingFetcher {
[INFO] [stdout]   |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 8 |     stopwords: fnv::FnvHashSet<String>,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `raw_article_sqlite_to_leveldb` is never used
[INFO] [stdout]   --> src/tasks/mod.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn raw_article_sqlite_to_leveldb() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rawarticle_to_tfidf` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub fn rawarticle_to_tfidf() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_reply_storage` is never used
[INFO] [stdout]    --> src/tasks/mod.rs:666:8
[INFO] [stdout]     |
[INFO] [stdout] 666 | pub fn test_reply_storage() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cutter` is never read
[INFO] [stdout]   --> src/tfidf/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct TfIdf {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     cutter: Option<jieba_rs::Jieba>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TfIdf` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_from_cutter`, `add_uncut_document`, `add_cutted_document`, and `get_max` are never used
[INFO] [stdout]   --> src/tfidf/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl TfIdf {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn new_from_cutter(cutter: jieba_rs::Jieba) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn add_uncut_document(&mut self, content: String) -> Result<(), ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn add_cutted_document(&mut self, content: Vec<String>) -> Result<(), ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn get_max(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `updateMedium` should have a snake case name
[INFO] [stdout]    --> src/tasks/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub fn updateMedium(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^ help: convert the identifier to snake case: `update_medium`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |             tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |             let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 179 |             let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:416:33
[INFO] [stdout]     |
[INFO] [stdout] 416 | ...                   tfidf_table.add_uncut_document(a.content);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 416 |                                 let _ = tfidf_table.add_uncut_document(a.content);
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:418:37
[INFO] [stdout]     |
[INFO] [stdout] 418 | ...                   tfidf_table.add_uncut_document(push);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 418 |                                     let _ = tfidf_table.add_uncut_document(push);
[INFO] [stdout]     |                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:453:5
[INFO] [stdout]     |
[INFO] [stdout] 453 |     file.write_all(&bincode::serialize(&tfidf_table).unwrap());
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 453 |     let _ = file.write_all(&bincode::serialize(&tfidf_table).unwrap());
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:489:13
[INFO] [stdout]     |
[INFO] [stdout] 489 |             tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 489 |             let _ = tfidf_bufreader.read_to_end(&mut buf);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/tasks/mod.rs:499:13
[INFO] [stdout]     |
[INFO] [stdout] 499 |             stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 499 |             let _ = stopwords_file.read_to_string(&mut stop_words);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "50bd74d3291bbd644f3a64b215d6070b0165fa211062c14cc1b901fb4fb24879", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "50bd74d3291bbd644f3a64b215d6070b0165fa211062c14cc1b901fb4fb24879", kill_on_drop: false }`
[INFO] [stdout] 50bd74d3291bbd644f3a64b215d6070b0165fa211062c14cc1b901fb4fb24879
