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