[INFO] fetching crate dictutils 0.1.2...
[INFO] testing dictutils-0.1.2 against master#2fd6efc32704647e64d3d646d21c4c68eae100e4 for pr-149852-1
[INFO] extracting crate dictutils 0.1.2 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate dictutils 0.1.2
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate dictutils 0.1.2
[INFO] tweaked toml for crates.io crate dictutils 0.1.2 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate dictutils 0.1.2 on toolchain 2fd6efc32704647e64d3d646d21c4c68eae100e4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate dictutils 0.1.2 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" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tantivy-query-grammar v0.19.0
[INFO] [stderr]   Downloaded tantivy-common v0.4.0
[INFO] [stderr]   Downloaded tantivy-bitpacker v0.3.0
[INFO] [stderr]   Downloaded utf8-ranges v1.0.5
[INFO] [stderr]   Downloaded ownedbytes v0.4.0
[INFO] [stderr]   Downloaded cc v1.2.48
[INFO] [stderr]   Downloaded fastdivide v0.4.2
[INFO] [stderr]   Downloaded census v0.4.2
[INFO] [stderr]   Downloaded measure_time v0.8.3
[INFO] [stderr]   Downloaded levenshtein_automata v0.2.1
[INFO] [stderr]   Downloaded murmurhash32 v0.2.0
[INFO] [stderr]   Downloaded oneshot v0.1.11
[INFO] [stderr]   Downloaded lz4_flex v0.11.5
[INFO] [stderr]   Downloaded fastfield_codecs v0.3.1
[INFO] [stderr]   Downloaded flate2 v1.1.7
[INFO] [stderr]   Downloaded minilzo-rs v0.6.1
[INFO] [stderr]   Downloaded htmlescape v0.3.1
[INFO] [stderr]   Downloaded bitpacking v0.8.4
[INFO] [stderr]   Downloaded fail v0.5.1
[INFO] [stderr]   Downloaded sysinfo v0.30.13
[INFO] [stderr]   Downloaded memmap2 v0.5.10
[INFO] [stderr]   Downloaded tantivy-fst v0.4.0
[INFO] [stderr]   Downloaded fst v0.4.7
[INFO] [stderr]   Downloaded rust-stemmers v1.2.0
[INFO] [stderr]   Downloaded tantivy v0.19.2
[INFO] [stderr]   Downloaded windows v0.52.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ab5bfc35187c6a7e5493396d24b3db2cea32f9943e22ddefaa266690283dd830
[INFO] running `Command { std: "docker" "start" "-a" "ab5bfc35187c6a7e5493396d24b3db2cea32f9943e22ddefaa266690283dd830", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ab5bfc35187c6a7e5493396d24b3db2cea32f9943e22ddefaa266690283dd830", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ab5bfc35187c6a7e5493396d24b3db2cea32f9943e22ddefaa266690283dd830", kill_on_drop: false }`
[INFO] [stdout] ab5bfc35187c6a7e5493396d24b3db2cea32f9943e22ddefaa266690283dd830
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2740a832cb799a558764fb89380f37d973df89fa200e81288d90cd388e248cb7
[INFO] running `Command { std: "docker" "start" "-a" "2740a832cb799a558764fb89380f37d973df89fa200e81288d90cd388e248cb7", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling ahash v0.7.8
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling ownedbytes v0.4.0
[INFO] [stderr]    Compiling combine v4.6.7
[INFO] [stderr]    Compiling tantivy-common v0.4.0
[INFO] [stderr]    Compiling utf8-ranges v1.0.5
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling regex-syntax v0.6.29
[INFO] [stderr]    Compiling fastdivide v0.4.2
[INFO] [stderr]    Compiling fst v0.4.7
[INFO] [stderr]    Compiling tantivy-bitpacker v0.3.0
[INFO] [stderr]    Compiling measure_time v0.8.3
[INFO] [stderr]    Compiling bitpacking v0.8.4
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling murmurhash32 v0.2.0
[INFO] [stderr]    Compiling aho-corasick v0.7.20
[INFO] [stderr]    Compiling htmlescape v0.3.1
[INFO] [stderr]    Compiling levenshtein_automata v0.2.1
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling census v0.4.2
[INFO] [stderr]    Compiling twox-hash v2.1.2
[INFO] [stderr]    Compiling arc-swap v1.7.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling lz4_flex v0.9.5
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling oneshot v0.1.11
[INFO] [stderr]    Compiling base64 v0.13.1
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling lz4_flex v0.11.5
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling crossbeam v0.8.4
[INFO] [stderr]    Compiling flate2 v1.1.7
[INFO] [stderr]    Compiling lru-cache v0.1.2
[INFO] [stderr]    Compiling xxhash-rust v0.8.15
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling memmap2 v0.5.10
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling fastfield_codecs v0.3.1
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling cc v1.2.48
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling memmap2 v0.9.9
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling sysinfo v0.30.13
[INFO] [stderr]    Compiling tantivy-fst v0.4.0
[INFO] [stderr]    Compiling lru v0.7.8
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling fail v0.5.1
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling minilzo-rs v0.6.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tantivy-query-grammar v0.19.0
[INFO] [stderr]    Compiling rust-stemmers v1.2.0
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling tantivy v0.19.2
[INFO] [stderr]    Compiling dictutils v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]    --> src/lib.rs:374:17
[INFO] [stdout]     |
[INFO] [stdout] 374 | #[cfg(all(test, feature = "bench"))]
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `clap`, `cli`, `default`, `high_performance`, and `rayon`
[INFO] [stdout]     = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BuildHasher`
[INFO] [stdout]  --> src/traits.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::hash::{BuildHasher, Hash};
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader` and `self`
[INFO] [stdout]   --> src/dict/dsl.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 | use std::io::{self, BufRead, BufReader, Read, Seek, SeekFrom};
[INFO] [stdout]    |               ^^^^           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndexConfig`
[INFO] [stdout]   --> src/dict/dsl.rs:50:61
[INFO] [stdout]    |
[INFO] [stdout] 50 | use crate::index::{btree::BTreeIndex, fts::FtsIndex, Index, IndexConfig};
[INFO] [stdout]    |                                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::encoding`
[INFO] [stdout]   --> src/dict/dsl.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | use crate::util::encoding;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:707:29
[INFO] [stdout]     |
[INFO] [stdout] 707 |             if let Err(e) = crate::index::Index::load(&mut idx, &btree_path) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:3:9
[INFO] [stdout]     |
[INFO] [stdout]   3 | #![warn(unused_qualifications)]
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 707 -             if let Err(e) = crate::index::Index::load(&mut idx, &btree_path) {
[INFO] [stdout] 707 +             if let Err(e) = Index::load(&mut idx, &btree_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:714:17
[INFO] [stdout]     |
[INFO] [stdout] 714 |             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 714 -             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout] 714 +             if !Index::is_built(&idx) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:725:29
[INFO] [stdout]     |
[INFO] [stdout] 725 |             if let Err(e) = crate::index::Index::load(&mut idx, &fts_path) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 725 -             if let Err(e) = crate::index::Index::load(&mut idx, &fts_path) {
[INFO] [stdout] 725 +             if let Err(e) = Index::load(&mut idx, &fts_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:732:17
[INFO] [stdout]     |
[INFO] [stdout] 732 |             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 732 -             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout] 732 +             if !Index::is_built(&idx) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLockReadGuard`
[INFO] [stdout]   --> src/dict/mdict.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use parking_lot::{RwLock, RwLockReadGuard};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BatchResult`
[INFO] [stdout]   --> src/dict/mdict.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     BatchResult, Dict, DictConfig, DictError, DictMetadata, DictStats, EntryIterator,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `read_string`, `read_u32_le`, and `read_varint`
[INFO] [stdout]   --> src/dict/mdict.rs:22:33
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::util::buffer::{self, read_string, read_u32_le, read_varint};
[INFO] [stdout]    |                                 ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CompressionAlgorithm` and `self`
[INFO] [stdout]   --> src/dict/mdict.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::util::compression::{self, CompressionAlgorithm};
[INFO] [stdout]    |                                ^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TextEncoding`
[INFO] [stdout]   --> src/dict/mdict.rs:24:35
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::util::encoding::{self, TextEncoding};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::file_utils`
[INFO] [stdout]   --> src/dict/mdict.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::util::file_utils;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mdict.rs:609:25
[INFO] [stdout]     |
[INFO] [stdout] 609 |             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 609 -             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout] 609 +             cursor.seek(SeekFrom::Current(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mdict.rs:619:25
[INFO] [stdout]     |
[INFO] [stdout] 619 |             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout] 619 +             cursor.seek(SeekFrom::Current(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]   --> src/dict/zimdict.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |         if header.mime_list_pos != std::mem::size_of::<ZimHeader>() as u64 {
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]    |
[INFO] [stdout] 93 -         if header.mime_list_pos != std::mem::size_of::<ZimHeader>() as u64 {
[INFO] [stdout] 93 +         if header.mime_list_pos != size_of::<ZimHeader>() as u64 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/zimdict.rs:792:25
[INFO] [stdout]     |
[INFO] [stdout] 792 |         let mut btree = crate::index::btree::BTreeIndex::new();
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 792 -         let mut btree = crate::index::btree::BTreeIndex::new();
[INFO] [stdout] 792 +         let mut btree = BTreeIndex::new();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/zimdict.rs:817:23
[INFO] [stdout]     |
[INFO] [stdout] 817 |         let mut fts = crate::index::fts::FtsIndex::new();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 817 -         let mut fts = crate::index::fts::FtsIndex::new();
[INFO] [stdout] 817 +         let mut fts = FtsIndex::new();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]   --> src/dict/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::result::Result as StdResult;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:474:13
[INFO] [stdout]     |
[INFO] [stdout] 474 |             crate::traits::FORMAT_MDICT => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 474 -             crate::traits::FORMAT_MDICT => {
[INFO] [stdout] 474 +             FORMAT_MDICT => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:517:13
[INFO] [stdout]     |
[INFO] [stdout] 517 |             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 517 -             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout] 517 +             FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:517:46
[INFO] [stdout]     |
[INFO] [stdout] 517 |             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 517 -             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout] 517 +             crate::traits::FORMAT_STARDICT | FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/index/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]   --> src/index/fts.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]    |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RwLockReadGuard` and `RwLockWriteGuard`
[INFO] [stdout]   --> src/index/fts.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 | use parking_lot::{RwLock, RwLockReadGuard, RwLockWriteGuard};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader`, `BufWriter`, `SeekFrom`, `Seek`, and `self`
[INFO] [stdout]  --> src/util/mod.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{self, BufReader, BufWriter, Read, Seek, SeekFrom, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^^^^^  ^^^^^^^^^        ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::read::GzDecoder`
[INFO] [stdout]   --> src/util/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use flate2::read::GzDecoder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::write::GzEncoder`
[INFO] [stdout]   --> src/util/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use flate2::write::GzEncoder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::Compression`
[INFO] [stdout]   --> src/util/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use flate2::Compression;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FrameDecoder` and `FrameEncoder`
[INFO] [stdout]   --> src/util/mod.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 | use lz4_flex::frame::{FrameDecoder, FrameEncoder};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Decoder` and `Encoder`
[INFO] [stdout]   --> src/util/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | use zstd::{Decoder, Encoder};
[INFO] [stdout]    |            ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/util/compression.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{self, Cursor, Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/compression.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/encoding.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:351:9
[INFO] [stdout]     |
[INFO] [stdout] 351 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:401:9
[INFO] [stdout]     |
[INFO] [stdout] 401 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:497:32
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn serialize_to_vec<T: serde::Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 497 -     pub fn serialize_to_vec<T: serde::Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout] 497 +     pub fn serialize_to_vec<T: Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:507:38
[INFO] [stdout]     |
[INFO] [stdout] 507 |     pub fn serialize_and_compress<T: serde::Serialize>(
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 507 -     pub fn serialize_and_compress<T: serde::Serialize>(
[INFO] [stdout] 507 +     pub fn serialize_and_compress<T: Serialize>(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:532:39
[INFO] [stdout]     |
[INFO] [stdout] 532 |     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 532 -     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout] 532 +     pub fn serialize_with_metadata<T: Serialize>(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:584:20
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let data = crate::util::file_utils::read_file(path)?;
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 584 -         let data = crate::util::file_utils::read_file(path)?;
[INFO] [stdout] 584 +         let data = file_utils::read_file(path)?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:619:36
[INFO] [stdout]     |
[INFO] [stdout] 619 |     pub fn cleanup_temp_dir(path: &std::path::Path) -> Result<()> {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -     pub fn cleanup_temp_dir(path: &std::path::Path) -> Result<()> {
[INFO] [stdout] 619 +     pub fn cleanup_temp_dir(path: &Path) -> Result<()> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:628:32
[INFO] [stdout]     |
[INFO] [stdout] 628 |         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 628 -         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout] 628 +         K: std::fmt::Display + PartialEq + std::cmp::Ord,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:628:54
[INFO] [stdout]     |
[INFO] [stdout] 628 |         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 628 -         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout] 628 +         K: std::fmt::Display + std::cmp::PartialEq + Ord,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:668:58
[INFO] [stdout]     |
[INFO] [stdout] 668 |         K: Clone + std::fmt::Display + std::hash::Hash + std::cmp::Eq,
[INFO] [stdout]     |                                                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 668 -         K: Clone + std::fmt::Display + std::hash::Hash + std::cmp::Eq,
[INFO] [stdout] 668 +         K: Clone + std::fmt::Display + std::hash::Hash + Eq,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]   --> src/dict/dsl.rs:43:21
[INFO] [stdout]    |
[INFO] [stdout] 43 | use std::io::{self, BufRead, BufReader, Read, Seek, SeekFrom};
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DictBuilder`
[INFO] [stdout]   --> src/dict/mod.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Dict, DictBuilder, DictConfig, DictError, DictFormat, Result, FORMAT_MDICT, FORMAT_STARDICT,
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/index/fts.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `headword_blocks`
[INFO] [stdout]    --> src/dict/mdict.rs:351:13
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let headword_blocks =
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_headword_blocks`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dict/mdict.rs:514:21
[INFO] [stdout]     |
[INFO] [stdout] 514 |                 let mut lzo = minilzo_rs::LZO::init().map_err(|e| {
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `version`
[INFO] [stdout]    --> src/dict/mdict.rs:479:44
[INFO] [stdout]     |
[INFO] [stdout] 479 |     fn decompress_block(compressed: &[u8], version: f64, max_output: usize) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_records`
[INFO] [stdout]    --> src/dict/mdict.rs:653:13
[INFO] [stdout]     |
[INFO] [stdout] 653 |         let total_records = if number_size == 8 {
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_records`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `record_block_info_pos`
[INFO] [stdout]    --> src/dict/mdict.rs:671:13
[INFO] [stdout]     |
[INFO] [stdout] 671 |         let record_block_info_pos = reader.stream_position()?;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_record_block_info_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `btree`
[INFO] [stdout]    --> src/dict/mdict.rs:849:25
[INFO] [stdout]     |
[INFO] [stdout] 849 |             if let Some(ref btree) = self.btree_index {
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_btree`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dict/stardict.rs:356:13
[INFO] [stdout]     |
[INFO] [stdout] 356 |         let mut idx_candidates = [
[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/dict/stardict.rs:376:13
[INFO] [stdout]     |
[INFO] [stdout] 376 |         let mut dict_candidates = [
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/dict/mod.rs:363:9
[INFO] [stdout]     |
[INFO] [stdout] 363 |         query: &str,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loader`
[INFO] [stdout]    --> src/dict/mod.rs:537:13
[INFO] [stdout]     |
[INFO] [stdout] 537 |         let loader = DictLoader::new();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_loader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loader`
[INFO] [stdout]    --> src/dict/mod.rs:628:13
[INFO] [stdout]     |
[INFO] [stdout] 628 |         let loader = DictLoader::new();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_loader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/index/fts.rs:206:20
[INFO] [stdout]     |
[INFO] [stdout] 206 |         for (term, position) in &tokens {
[INFO] [stdout]     |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_size`
[INFO] [stdout]    --> src/util/compression.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 166 |     original_size: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/util/mod.rs:675:24
[INFO] [stdout]     |
[INFO] [stdout] 675 |             .flat_map(|i| {
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `signature` and `word_count` are never read
[INFO] [stdout]   --> src/dict/bgl.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct BglIndexHeader {
[INFO] [stdout]    |        -------------- fields in this struct
[INFO] [stdout] 43 |     /// Magic signature, expected "BGLX"
[INFO] [stdout] 44 |     signature: [u8; 4],
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     word_count: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BglIndexHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Windows1252` and `Windows1250` are never constructed
[INFO] [stdout]   --> src/dict/dsl.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | enum DslEncoding {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 63 |     Windows1252,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 64 |     Windows1251,
[INFO] [stdout] 65 |     Windows1250,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DslEncoding` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MDICT_MAX_KEY_LENGTH` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const MDICT_MAX_KEY_LENGTH: usize = 16 * 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MDICT_MAX_VALUE_LENGTH` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const MDICT_MAX_VALUE_LENGTH: usize = 4 * 1024 * 1024; // 4MB safety cap
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MdictBlockCompression` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 36 | enum MdictBlockCompression {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/dict/mdict.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct MdictHeader {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 44 |     /// Encoding name as in header (normalized)
[INFO] [stdout] 45 |     encoding: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     encrypted: i32,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 50 |     /// Right-to-left flag
[INFO] [stdout] 51 |     rtl: bool,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 52 |     /// Title (or filename fallback)
[INFO] [stdout] 53 |     title: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     number_size: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 60 |     /// Position of headword block info (absolute in file)
[INFO] [stdout] 61 |     headword_block_info_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Size of headword block info (compressed or plain)
[INFO] [stdout] 63 |     headword_block_info_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     /// Number of headword blocks
[INFO] [stdout] 65 |     num_headword_blocks: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     headword_block_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     /// Position of record block info table
[INFO] [stdout] 71 |     record_block_info_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     /// Total decompressed size of all records
[INFO] [stdout] 73 |     total_records_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MdictHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `compressed_size`, `decompressed_size`, `start_pos`, `shadow_start_pos`, and `shadow_end_pos` are never read
[INFO] [stdout]   --> src/dict/mdict.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct RecordIndex {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 83 |     compressed_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     decompressed_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     /// Start position (relative to first record block) in compressed space
[INFO] [stdout] 86 |     start_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 87 |     /// Start position in concatenated decompressed space
[INFO] [stdout] 88 |     shadow_start_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     /// End position in decompressed space
[INFO] [stdout] 90 |     shadow_end_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RecordIndex` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains_decompressed_offset` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | impl RecordIndex {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 94 |     fn contains_decompressed_offset(&self, off: u64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MdictKeyEntry` is never constructed
[INFO] [stdout]    --> src/dict/mdict.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct MdictKeyEntry {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mmap` and `file` are never read
[INFO] [stdout]    --> src/dict/mdict.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct MDict {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 114 |     mmap: Option<Arc<Mmap>>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 115 |     /// File for sequential access
[INFO] [stdout] 116 |     file: Option<File>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate_entry_window`, `read_entry_at_offset`, and `collect_all_entries` are never used
[INFO] [stdout]    --> src/dict/mdict.rs:777:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | impl MDict {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 777 |     fn validate_entry_window(&self, offset: u64, length: u64) -> Result<(u64, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 804 |     fn read_entry_at_offset(&self, offset: u64, length: u64) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 958 |     fn collect_all_entries(&self) -> Result<Vec<(String, Vec<u8>)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ifo`, `encoding`, and `idx_64bit` are never read
[INFO] [stdout]   --> src/dict/stardict.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct StarDictHeader {
[INFO] [stdout]    |        -------------- fields in this struct
[INFO] [stdout] 54 |     ifo: Ifo,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     encoding: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 58 |     /// True if index offsets are 64-bit (we reject those like GoldenDict).
[INFO] [stdout] 59 |     idx_64bit: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StarDictHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dict_path`, `syn_path`, and `header` are never read
[INFO] [stdout]   --> src/dict/stardict.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct StarDict {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 77 |     dict_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     syn_path: Option<PathBuf>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 82 |     /// Parsed header
[INFO] [stdout] 83 |     header: StarDictHeader,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `calculate_crc32`, `validate_crc32`, and `validate_gzip_crc32` are never used
[INFO] [stdout]    --> src/dict/stardict.rs:927:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl StarDict {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 927 |     fn calculate_crc32(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 934 |     fn validate_crc32(data: &[u8], expected_checksum: u32) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 947 |     fn validate_gzip_crc32(data: &[u8], expected_crc32: u32) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `magic_number` and `title_ptr_pos` are never read
[INFO] [stdout]   --> src/dict/zimdict.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct ZimHeader {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 26 |     magic_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     title_ptr_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ZimHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArticleLoc` is never constructed
[INFO] [stdout]   --> src/dict/zimdict.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct ArticleLoc {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mmap` and `mime_types` are never read
[INFO] [stdout]   --> src/dict/zimdict.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct ZimDict {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     mmap: Option<Arc<Mmap>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     mime_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_raw` is never used
[INFO] [stdout]    --> src/dict/zimdict.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl ZimDict {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 298 |     fn read_raw(&self, offset: u64, size: u64) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `paths` is never read
[INFO] [stdout]    --> src/index/mod.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct IndexManager {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 169 |     paths: HashMap<&'static str, PathBuf>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> src/index/btree.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct BTreeIndex {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 81 |     lock: Arc<RwLock<()>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Token` is never constructed
[INFO] [stdout]   --> src/index/fts.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct Token {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:97:1
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub mod prelude {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:1:9
[INFO] [stdout]    |
[INFO] [stdout]  1 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/traits.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub has_fts: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/traits.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub keys: std::vec::IntoIter<K>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/traits.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub dictionary: &'a dyn Dict<K>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/traits.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn iter(&self) -> Result<EntryIterator<K>>;
[INFO] [stdout]     |             ^^^^^            ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn iter(&self) -> Result<EntryIterator<'_, K>>;
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:347:1
[INFO] [stdout]     |
[INFO] [stdout] 347 | pub const FORMAT_STARDICT: &str = "stardict";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:348:1
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub const FORMAT_ZIM: &str = "zim";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:352:1
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub const EXT_IDX: &str = ".idx";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:353:1
[INFO] [stdout]     |
[INFO] [stdout] 353 | pub const EXT_INFO: &str = ".info";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:354:1
[INFO] [stdout]     |
[INFO] [stdout] 354 | pub const EXT_BTREE: &str = ".btree";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:355:1
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub const EXT_FTS: &str = ".fts";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/dict/dsl.rs:905:13
[INFO] [stdout]     |
[INFO] [stdout] 905 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]     |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 905 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]     --> src/dict/mdict.rs:1119:13
[INFO] [stdout]      |
[INFO] [stdout] 1119 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]      |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]      |             |
[INFO] [stdout]      |             the lifetime is elided here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]      |
[INFO] [stdout] 1119 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]      |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]     --> src/dict/stardict.rs:1110:13
[INFO] [stdout]      |
[INFO] [stdout] 1110 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]      |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]      |             |
[INFO] [stdout]      |             the lifetime is elided here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]      |
[INFO] [stdout] 1110 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]      |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/index/mod.rs:72:1
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub enum CompressionAlgorithm {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/index/mod.rs:122:23
[INFO] [stdout]     |
[INFO] [stdout] 122 |     VersionMismatch { expected: String, found: String },
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/index/mod.rs:122:41
[INFO] [stdout]     |
[INFO] [stdout] 122 |     VersionMismatch { expected: String, found: String },
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/index/btree.rs:529:5
[INFO] [stdout]     |
[INFO] [stdout] 529 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/index/btree.rs:533:5
[INFO] [stdout]     |
[INFO] [stdout] 533 |     pub fn add(&mut self, key: String, value: u64) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/util/compression.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum CompressionAlgorithm {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/util/compression.rs:224:1
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub struct AlgorithmSettings {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:225:5
[INFO] [stdout]     |
[INFO] [stdout] 225 |     pub supports_streaming: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:226:5
[INFO] [stdout]     |
[INFO] [stdout] 226 |     pub supports_dictionary: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:227:5
[INFO] [stdout]     |
[INFO] [stdout] 227 |     pub typical_ratio: f32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:228:5
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub speed_category: SpeedCategory,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:229:5
[INFO] [stdout]     |
[INFO] [stdout] 229 |     pub memory_overhead: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> src/util/compression.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub enum SpeedCategory {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:234:5
[INFO] [stdout]     |
[INFO] [stdout] 234 |     VeryFast,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:235:5
[INFO] [stdout]     |
[INFO] [stdout] 235 |     Fast,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:236:5
[INFO] [stdout]     |
[INFO] [stdout] 236 |     Medium,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     Slow,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/util/encoding.rs:556:1
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub struct EncodingStats {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:557:5
[INFO] [stdout]     |
[INFO] [stdout] 557 |     pub name: &'static str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:558:5
[INFO] [stdout]     |
[INFO] [stdout] 558 |     pub supports_unicode: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:559:5
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub max_char_size: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:560:5
[INFO] [stdout]     |
[INFO] [stdout] 560 |     pub is_variable_width: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:561:5
[INFO] [stdout]     |
[INFO] [stdout] 561 |     pub common_in: Vec<&'static str>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/util/mod.rs:412:9
[INFO] [stdout]     |
[INFO] [stdout] 412 |         pub fn new() -> Self {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/util/mod.rs:532:5
[INFO] [stdout]     |
[INFO] [stdout] 532 | /     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout] 533 | |         data: &T,
[INFO] [stdout] 534 | |         version: &str,
[INFO] [stdout] 535 | |     ) -> Result<Vec<u8>> {
[INFO] [stdout]     | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/util/mod.rs:542:23
[INFO] [stdout]     |
[INFO] [stdout] 542 |             data: data.clone(),
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `T` does not implement `Clone`, so calling `clone` on `&T` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/util/mod.rs:548:5
[INFO] [stdout]     |
[INFO] [stdout] 548 | /     pub fn deserialize_with_metadata<T: serde::de::DeserializeOwned>(
[INFO] [stdout] 549 | |         bytes: &[u8],
[INFO] [stdout] 550 | |         expected_version: &str,
[INFO] [stdout] 551 | |     ) -> Result<T> {
[INFO] [stdout]     | |__________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 38.96s
[INFO] running `Command { std: "docker" "inspect" "2740a832cb799a558764fb89380f37d973df89fa200e81288d90cd388e248cb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2740a832cb799a558764fb89380f37d973df89fa200e81288d90cd388e248cb7", kill_on_drop: false }`
[INFO] [stdout] 2740a832cb799a558764fb89380f37d973df89fa200e81288d90cd388e248cb7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ee05cfbe8271ef33c53536e587d0df0a031bdeb0b8f5ff7e8ed2914e02c92fe9
[INFO] running `Command { std: "docker" "start" "-a" "ee05cfbe8271ef33c53536e587d0df0a031bdeb0b8f5ff7e8ed2914e02c92fe9", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling clap_builder v4.5.53
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling clap v4.5.53
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling proptest v1.9.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]    Compiling fail v0.5.1
[INFO] [stderr]    Compiling tantivy v0.19.2
[INFO] [stderr]    Compiling dictutils v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]    --> src/lib.rs:374:17
[INFO] [stdout]     |
[INFO] [stdout] 374 | #[cfg(all(test, feature = "bench"))]
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `clap`, `cli`, `default`, `high_performance`, and `rayon`
[INFO] [stdout]     = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BuildHasher`
[INFO] [stdout]  --> src/traits.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::hash::{BuildHasher, Hash};
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader` and `self`
[INFO] [stdout]   --> src/dict/dsl.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 | use std::io::{self, BufRead, BufReader, Read, Seek, SeekFrom};
[INFO] [stdout]    |               ^^^^           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndexConfig`
[INFO] [stdout]   --> src/dict/dsl.rs:50:61
[INFO] [stdout]    |
[INFO] [stdout] 50 | use crate::index::{btree::BTreeIndex, fts::FtsIndex, Index, IndexConfig};
[INFO] [stdout]    |                                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::encoding`
[INFO] [stdout]   --> src/dict/dsl.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | use crate::util::encoding;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:707:29
[INFO] [stdout]     |
[INFO] [stdout] 707 |             if let Err(e) = crate::index::Index::load(&mut idx, &btree_path) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:3:9
[INFO] [stdout]     |
[INFO] [stdout]   3 | #![warn(unused_qualifications)]
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 707 -             if let Err(e) = crate::index::Index::load(&mut idx, &btree_path) {
[INFO] [stdout] 707 +             if let Err(e) = Index::load(&mut idx, &btree_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:714:17
[INFO] [stdout]     |
[INFO] [stdout] 714 |             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 714 -             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout] 714 +             if !Index::is_built(&idx) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:725:29
[INFO] [stdout]     |
[INFO] [stdout] 725 |             if let Err(e) = crate::index::Index::load(&mut idx, &fts_path) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 725 -             if let Err(e) = crate::index::Index::load(&mut idx, &fts_path) {
[INFO] [stdout] 725 +             if let Err(e) = Index::load(&mut idx, &fts_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:732:17
[INFO] [stdout]     |
[INFO] [stdout] 732 |             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 732 -             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout] 732 +             if !Index::is_built(&idx) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLockReadGuard`
[INFO] [stdout]   --> src/dict/mdict.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use parking_lot::{RwLock, RwLockReadGuard};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BatchResult`
[INFO] [stdout]   --> src/dict/mdict.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     BatchResult, Dict, DictConfig, DictError, DictMetadata, DictStats, EntryIterator,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `read_string`, `read_u32_le`, and `read_varint`
[INFO] [stdout]   --> src/dict/mdict.rs:22:33
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::util::buffer::{self, read_string, read_u32_le, read_varint};
[INFO] [stdout]    |                                 ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CompressionAlgorithm` and `self`
[INFO] [stdout]   --> src/dict/mdict.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::util::compression::{self, CompressionAlgorithm};
[INFO] [stdout]    |                                ^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TextEncoding`
[INFO] [stdout]   --> src/dict/mdict.rs:24:35
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::util::encoding::{self, TextEncoding};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::file_utils`
[INFO] [stdout]   --> src/dict/mdict.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::util::file_utils;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mdict.rs:609:25
[INFO] [stdout]     |
[INFO] [stdout] 609 |             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 609 -             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout] 609 +             cursor.seek(SeekFrom::Current(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mdict.rs:619:25
[INFO] [stdout]     |
[INFO] [stdout] 619 |             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout] 619 +             cursor.seek(SeekFrom::Current(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]   --> src/dict/zimdict.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |         if header.mime_list_pos != std::mem::size_of::<ZimHeader>() as u64 {
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]    |
[INFO] [stdout] 93 -         if header.mime_list_pos != std::mem::size_of::<ZimHeader>() as u64 {
[INFO] [stdout] 93 +         if header.mime_list_pos != size_of::<ZimHeader>() as u64 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/zimdict.rs:792:25
[INFO] [stdout]     |
[INFO] [stdout] 792 |         let mut btree = crate::index::btree::BTreeIndex::new();
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 792 -         let mut btree = crate::index::btree::BTreeIndex::new();
[INFO] [stdout] 792 +         let mut btree = BTreeIndex::new();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/zimdict.rs:817:23
[INFO] [stdout]     |
[INFO] [stdout] 817 |         let mut fts = crate::index::fts::FtsIndex::new();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 817 -         let mut fts = crate::index::fts::FtsIndex::new();
[INFO] [stdout] 817 +         let mut fts = FtsIndex::new();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]   --> src/dict/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::result::Result as StdResult;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:474:13
[INFO] [stdout]     |
[INFO] [stdout] 474 |             crate::traits::FORMAT_MDICT => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 474 -             crate::traits::FORMAT_MDICT => {
[INFO] [stdout] 474 +             FORMAT_MDICT => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:517:13
[INFO] [stdout]     |
[INFO] [stdout] 517 |             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 517 -             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout] 517 +             FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:517:46
[INFO] [stdout]     |
[INFO] [stdout] 517 |             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 517 -             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout] 517 +             crate::traits::FORMAT_STARDICT | FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/index/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]   --> src/index/fts.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]    |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RwLockReadGuard` and `RwLockWriteGuard`
[INFO] [stdout]   --> src/index/fts.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 | use parking_lot::{RwLock, RwLockReadGuard, RwLockWriteGuard};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader`, `BufWriter`, `SeekFrom`, `Seek`, and `self`
[INFO] [stdout]  --> src/util/mod.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{self, BufReader, BufWriter, Read, Seek, SeekFrom, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^^^^^  ^^^^^^^^^        ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::read::GzDecoder`
[INFO] [stdout]   --> src/util/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use flate2::read::GzDecoder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::write::GzEncoder`
[INFO] [stdout]   --> src/util/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use flate2::write::GzEncoder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::Compression`
[INFO] [stdout]   --> src/util/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use flate2::Compression;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FrameDecoder` and `FrameEncoder`
[INFO] [stdout]   --> src/util/mod.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 | use lz4_flex::frame::{FrameDecoder, FrameEncoder};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Decoder` and `Encoder`
[INFO] [stdout]   --> src/util/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | use zstd::{Decoder, Encoder};
[INFO] [stdout]    |            ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/util/compression.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{self, Cursor, Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/compression.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/encoding.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:351:9
[INFO] [stdout]     |
[INFO] [stdout] 351 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:401:9
[INFO] [stdout]     |
[INFO] [stdout] 401 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:497:32
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn serialize_to_vec<T: serde::Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 497 -     pub fn serialize_to_vec<T: serde::Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout] 497 +     pub fn serialize_to_vec<T: Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:507:38
[INFO] [stdout]     |
[INFO] [stdout] 507 |     pub fn serialize_and_compress<T: serde::Serialize>(
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 507 -     pub fn serialize_and_compress<T: serde::Serialize>(
[INFO] [stdout] 507 +     pub fn serialize_and_compress<T: Serialize>(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:532:39
[INFO] [stdout]     |
[INFO] [stdout] 532 |     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 532 -     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout] 532 +     pub fn serialize_with_metadata<T: Serialize>(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:584:20
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let data = crate::util::file_utils::read_file(path)?;
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 584 -         let data = crate::util::file_utils::read_file(path)?;
[INFO] [stdout] 584 +         let data = file_utils::read_file(path)?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:619:36
[INFO] [stdout]     |
[INFO] [stdout] 619 |     pub fn cleanup_temp_dir(path: &std::path::Path) -> Result<()> {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -     pub fn cleanup_temp_dir(path: &std::path::Path) -> Result<()> {
[INFO] [stdout] 619 +     pub fn cleanup_temp_dir(path: &Path) -> Result<()> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:628:32
[INFO] [stdout]     |
[INFO] [stdout] 628 |         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 628 -         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout] 628 +         K: std::fmt::Display + PartialEq + std::cmp::Ord,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:628:54
[INFO] [stdout]     |
[INFO] [stdout] 628 |         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 628 -         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout] 628 +         K: std::fmt::Display + std::cmp::PartialEq + Ord,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:668:58
[INFO] [stdout]     |
[INFO] [stdout] 668 |         K: Clone + std::fmt::Display + std::hash::Hash + std::cmp::Eq,
[INFO] [stdout]     |                                                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 668 -         K: Clone + std::fmt::Display + std::hash::Hash + std::cmp::Eq,
[INFO] [stdout] 668 +         K: Clone + std::fmt::Display + std::hash::Hash + Eq,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]   --> src/dict/dsl.rs:43:21
[INFO] [stdout]    |
[INFO] [stdout] 43 | use std::io::{self, BufRead, BufReader, Read, Seek, SeekFrom};
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DictBuilder`
[INFO] [stdout]   --> src/dict/mod.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Dict, DictBuilder, DictConfig, DictError, DictFormat, Result, FORMAT_MDICT, FORMAT_STARDICT,
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/index/fts.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `headword_blocks`
[INFO] [stdout]    --> src/dict/mdict.rs:351:13
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let headword_blocks =
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_headword_blocks`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dict/mdict.rs:514:21
[INFO] [stdout]     |
[INFO] [stdout] 514 |                 let mut lzo = minilzo_rs::LZO::init().map_err(|e| {
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `version`
[INFO] [stdout]    --> src/dict/mdict.rs:479:44
[INFO] [stdout]     |
[INFO] [stdout] 479 |     fn decompress_block(compressed: &[u8], version: f64, max_output: usize) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_records`
[INFO] [stdout]    --> src/dict/mdict.rs:653:13
[INFO] [stdout]     |
[INFO] [stdout] 653 |         let total_records = if number_size == 8 {
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_records`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `record_block_info_pos`
[INFO] [stdout]    --> src/dict/mdict.rs:671:13
[INFO] [stdout]     |
[INFO] [stdout] 671 |         let record_block_info_pos = reader.stream_position()?;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_record_block_info_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `btree`
[INFO] [stdout]    --> src/dict/mdict.rs:849:25
[INFO] [stdout]     |
[INFO] [stdout] 849 |             if let Some(ref btree) = self.btree_index {
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_btree`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dict/stardict.rs:356:13
[INFO] [stdout]     |
[INFO] [stdout] 356 |         let mut idx_candidates = [
[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/dict/stardict.rs:376:13
[INFO] [stdout]     |
[INFO] [stdout] 376 |         let mut dict_candidates = [
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/dict/mod.rs:363:9
[INFO] [stdout]     |
[INFO] [stdout] 363 |         query: &str,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loader`
[INFO] [stdout]    --> src/dict/mod.rs:537:13
[INFO] [stdout]     |
[INFO] [stdout] 537 |         let loader = DictLoader::new();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_loader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loader`
[INFO] [stdout]    --> src/dict/mod.rs:628:13
[INFO] [stdout]     |
[INFO] [stdout] 628 |         let loader = DictLoader::new();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_loader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/index/fts.rs:206:20
[INFO] [stdout]     |
[INFO] [stdout] 206 |         for (term, position) in &tokens {
[INFO] [stdout]     |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_size`
[INFO] [stdout]    --> src/util/compression.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 166 |     original_size: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/util/mod.rs:675:24
[INFO] [stdout]     |
[INFO] [stdout] 675 |             .flat_map(|i| {
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `signature` and `word_count` are never read
[INFO] [stdout]   --> src/dict/bgl.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct BglIndexHeader {
[INFO] [stdout]    |        -------------- fields in this struct
[INFO] [stdout] 43 |     /// Magic signature, expected "BGLX"
[INFO] [stdout] 44 |     signature: [u8; 4],
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     word_count: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BglIndexHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Windows1252` and `Windows1250` are never constructed
[INFO] [stdout]   --> src/dict/dsl.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | enum DslEncoding {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 63 |     Windows1252,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 64 |     Windows1251,
[INFO] [stdout] 65 |     Windows1250,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DslEncoding` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MDICT_MAX_KEY_LENGTH` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const MDICT_MAX_KEY_LENGTH: usize = 16 * 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MDICT_MAX_VALUE_LENGTH` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const MDICT_MAX_VALUE_LENGTH: usize = 4 * 1024 * 1024; // 4MB safety cap
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MdictBlockCompression` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 36 | enum MdictBlockCompression {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/dict/mdict.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct MdictHeader {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 44 |     /// Encoding name as in header (normalized)
[INFO] [stdout] 45 |     encoding: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     encrypted: i32,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 50 |     /// Right-to-left flag
[INFO] [stdout] 51 |     rtl: bool,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 52 |     /// Title (or filename fallback)
[INFO] [stdout] 53 |     title: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     number_size: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 60 |     /// Position of headword block info (absolute in file)
[INFO] [stdout] 61 |     headword_block_info_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Size of headword block info (compressed or plain)
[INFO] [stdout] 63 |     headword_block_info_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     /// Number of headword blocks
[INFO] [stdout] 65 |     num_headword_blocks: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     headword_block_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     /// Position of record block info table
[INFO] [stdout] 71 |     record_block_info_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     /// Total decompressed size of all records
[INFO] [stdout] 73 |     total_records_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MdictHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `compressed_size`, `decompressed_size`, `start_pos`, `shadow_start_pos`, and `shadow_end_pos` are never read
[INFO] [stdout]   --> src/dict/mdict.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct RecordIndex {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 83 |     compressed_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     decompressed_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     /// Start position (relative to first record block) in compressed space
[INFO] [stdout] 86 |     start_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 87 |     /// Start position in concatenated decompressed space
[INFO] [stdout] 88 |     shadow_start_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     /// End position in decompressed space
[INFO] [stdout] 90 |     shadow_end_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RecordIndex` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains_decompressed_offset` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | impl RecordIndex {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 94 |     fn contains_decompressed_offset(&self, off: u64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MdictKeyEntry` is never constructed
[INFO] [stdout]    --> src/dict/mdict.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct MdictKeyEntry {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mmap` and `file` are never read
[INFO] [stdout]    --> src/dict/mdict.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct MDict {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 114 |     mmap: Option<Arc<Mmap>>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 115 |     /// File for sequential access
[INFO] [stdout] 116 |     file: Option<File>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate_entry_window`, `read_entry_at_offset`, and `collect_all_entries` are never used
[INFO] [stdout]    --> src/dict/mdict.rs:777:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | impl MDict {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 777 |     fn validate_entry_window(&self, offset: u64, length: u64) -> Result<(u64, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 804 |     fn read_entry_at_offset(&self, offset: u64, length: u64) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 958 |     fn collect_all_entries(&self) -> Result<Vec<(String, Vec<u8>)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ifo`, `encoding`, and `idx_64bit` are never read
[INFO] [stdout]   --> src/dict/stardict.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct StarDictHeader {
[INFO] [stdout]    |        -------------- fields in this struct
[INFO] [stdout] 54 |     ifo: Ifo,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     encoding: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 58 |     /// True if index offsets are 64-bit (we reject those like GoldenDict).
[INFO] [stdout] 59 |     idx_64bit: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StarDictHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dict_path`, `syn_path`, and `header` are never read
[INFO] [stdout]   --> src/dict/stardict.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct StarDict {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 77 |     dict_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     syn_path: Option<PathBuf>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 82 |     /// Parsed header
[INFO] [stdout] 83 |     header: StarDictHeader,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `calculate_crc32`, `validate_crc32`, and `validate_gzip_crc32` are never used
[INFO] [stdout]    --> src/dict/stardict.rs:927:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl StarDict {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 927 |     fn calculate_crc32(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 934 |     fn validate_crc32(data: &[u8], expected_checksum: u32) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 947 |     fn validate_gzip_crc32(data: &[u8], expected_crc32: u32) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `magic_number` and `title_ptr_pos` are never read
[INFO] [stdout]   --> src/dict/zimdict.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct ZimHeader {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 26 |     magic_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     title_ptr_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ZimHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArticleLoc` is never constructed
[INFO] [stdout]   --> src/dict/zimdict.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct ArticleLoc {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mmap` and `mime_types` are never read
[INFO] [stdout]   --> src/dict/zimdict.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct ZimDict {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     mmap: Option<Arc<Mmap>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     mime_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_raw` is never used
[INFO] [stdout]    --> src/dict/zimdict.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl ZimDict {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 298 |     fn read_raw(&self, offset: u64, size: u64) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `paths` is never read
[INFO] [stdout]    --> src/index/mod.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct IndexManager {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 169 |     paths: HashMap<&'static str, PathBuf>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> src/index/btree.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct BTreeIndex {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 81 |     lock: Arc<RwLock<()>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Token` is never constructed
[INFO] [stdout]   --> src/index/fts.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct Token {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:97:1
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub mod prelude {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:1:9
[INFO] [stdout]    |
[INFO] [stdout]  1 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/traits.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub has_fts: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/traits.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub keys: std::vec::IntoIter<K>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/traits.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub dictionary: &'a dyn Dict<K>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/traits.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn iter(&self) -> Result<EntryIterator<K>>;
[INFO] [stdout]     |             ^^^^^            ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn iter(&self) -> Result<EntryIterator<'_, K>>;
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:347:1
[INFO] [stdout]     |
[INFO] [stdout] 347 | pub const FORMAT_STARDICT: &str = "stardict";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:348:1
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub const FORMAT_ZIM: &str = "zim";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:352:1
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub const EXT_IDX: &str = ".idx";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:353:1
[INFO] [stdout]     |
[INFO] [stdout] 353 | pub const EXT_INFO: &str = ".info";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:354:1
[INFO] [stdout]     |
[INFO] [stdout] 354 | pub const EXT_BTREE: &str = ".btree";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:355:1
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub const EXT_FTS: &str = ".fts";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/dict/dsl.rs:905:13
[INFO] [stdout]     |
[INFO] [stdout] 905 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]     |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 905 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]     --> src/dict/mdict.rs:1119:13
[INFO] [stdout]      |
[INFO] [stdout] 1119 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]      |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]      |             |
[INFO] [stdout]      |             the lifetime is elided here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]      |
[INFO] [stdout] 1119 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]      |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]     --> src/dict/stardict.rs:1110:13
[INFO] [stdout]      |
[INFO] [stdout] 1110 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]      |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]      |             |
[INFO] [stdout]      |             the lifetime is elided here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]      |
[INFO] [stdout] 1110 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]      |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/index/mod.rs:72:1
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub enum CompressionAlgorithm {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/index/mod.rs:122:23
[INFO] [stdout]     |
[INFO] [stdout] 122 |     VersionMismatch { expected: String, found: String },
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/index/mod.rs:122:41
[INFO] [stdout]     |
[INFO] [stdout] 122 |     VersionMismatch { expected: String, found: String },
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/index/btree.rs:529:5
[INFO] [stdout]     |
[INFO] [stdout] 529 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/index/btree.rs:533:5
[INFO] [stdout]     |
[INFO] [stdout] 533 |     pub fn add(&mut self, key: String, value: u64) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/util/compression.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum CompressionAlgorithm {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/util/compression.rs:224:1
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub struct AlgorithmSettings {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:225:5
[INFO] [stdout]     |
[INFO] [stdout] 225 |     pub supports_streaming: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:226:5
[INFO] [stdout]     |
[INFO] [stdout] 226 |     pub supports_dictionary: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:227:5
[INFO] [stdout]     |
[INFO] [stdout] 227 |     pub typical_ratio: f32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:228:5
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub speed_category: SpeedCategory,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:229:5
[INFO] [stdout]     |
[INFO] [stdout] 229 |     pub memory_overhead: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> src/util/compression.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub enum SpeedCategory {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:234:5
[INFO] [stdout]     |
[INFO] [stdout] 234 |     VeryFast,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:235:5
[INFO] [stdout]     |
[INFO] [stdout] 235 |     Fast,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:236:5
[INFO] [stdout]     |
[INFO] [stdout] 236 |     Medium,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     Slow,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/util/encoding.rs:556:1
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub struct EncodingStats {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:557:5
[INFO] [stdout]     |
[INFO] [stdout] 557 |     pub name: &'static str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:558:5
[INFO] [stdout]     |
[INFO] [stdout] 558 |     pub supports_unicode: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:559:5
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub max_char_size: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:560:5
[INFO] [stdout]     |
[INFO] [stdout] 560 |     pub is_variable_width: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:561:5
[INFO] [stdout]     |
[INFO] [stdout] 561 |     pub common_in: Vec<&'static str>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/util/mod.rs:412:9
[INFO] [stdout]     |
[INFO] [stdout] 412 |         pub fn new() -> Self {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/util/mod.rs:532:5
[INFO] [stdout]     |
[INFO] [stdout] 532 | /     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout] 533 | |         data: &T,
[INFO] [stdout] 534 | |         version: &str,
[INFO] [stdout] 535 | |     ) -> Result<Vec<u8>> {
[INFO] [stdout]     | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/util/mod.rs:542:23
[INFO] [stdout]     |
[INFO] [stdout] 542 |             data: data.clone(),
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `T` does not implement `Clone`, so calling `clone` on `&T` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/util/mod.rs:548:5
[INFO] [stdout]     |
[INFO] [stdout] 548 | /     pub fn deserialize_with_metadata<T: serde::de::DeserializeOwned>(
[INFO] [stdout] 549 | |         bytes: &[u8],
[INFO] [stdout] 550 | |         expected_version: &str,
[INFO] [stdout] 551 | |     ) -> Result<T> {
[INFO] [stdout]     | |__________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/basic_dict_loading.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let mut dict = loader.load(path)?;
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/basic_dict_loading.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let mut dict = loader.load(path)?;
[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]   --> examples/dict_search_operations.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let mut dict = loader.load(path)?;
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/dict_search_operations.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let mut dict = loader.load(path)?;
[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]    --> examples/dict_search_operations.rs:252:9
[INFO] [stdout]     |
[INFO] [stdout] 252 |     let mut dict = loader.load(path)?;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `bench`
[INFO] [stdout]    --> src/lib.rs:374:17
[INFO] [stdout]     |
[INFO] [stdout] 374 | #[cfg(all(test, feature = "bench"))]
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `clap`, `cli`, `default`, `high_performance`, and `rayon`
[INFO] [stdout]     = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BuildHasher`
[INFO] [stdout]  --> src/traits.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::hash::{BuildHasher, Hash};
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader` and `self`
[INFO] [stdout]   --> src/dict/dsl.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 | use std::io::{self, BufRead, BufReader, Read, Seek, SeekFrom};
[INFO] [stdout]    |               ^^^^           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndexConfig`
[INFO] [stdout]   --> src/dict/dsl.rs:50:61
[INFO] [stdout]    |
[INFO] [stdout] 50 | use crate::index::{btree::BTreeIndex, fts::FtsIndex, Index, IndexConfig};
[INFO] [stdout]    |                                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::encoding`
[INFO] [stdout]   --> src/dict/dsl.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | use crate::util::encoding;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:707:29
[INFO] [stdout]     |
[INFO] [stdout] 707 |             if let Err(e) = crate::index::Index::load(&mut idx, &btree_path) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:3:9
[INFO] [stdout]     |
[INFO] [stdout]   3 | #![warn(unused_qualifications)]
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 707 -             if let Err(e) = crate::index::Index::load(&mut idx, &btree_path) {
[INFO] [stdout] 707 +             if let Err(e) = Index::load(&mut idx, &btree_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:714:17
[INFO] [stdout]     |
[INFO] [stdout] 714 |             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 714 -             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout] 714 +             if !Index::is_built(&idx) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:725:29
[INFO] [stdout]     |
[INFO] [stdout] 725 |             if let Err(e) = crate::index::Index::load(&mut idx, &fts_path) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 725 -             if let Err(e) = crate::index::Index::load(&mut idx, &fts_path) {
[INFO] [stdout] 725 +             if let Err(e) = Index::load(&mut idx, &fts_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/dsl.rs:732:17
[INFO] [stdout]     |
[INFO] [stdout] 732 |             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 732 -             if !crate::index::Index::is_built(&idx) {
[INFO] [stdout] 732 +             if !Index::is_built(&idx) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLockReadGuard`
[INFO] [stdout]   --> src/dict/mdict.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use parking_lot::{RwLock, RwLockReadGuard};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BatchResult`
[INFO] [stdout]   --> src/dict/mdict.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     BatchResult, Dict, DictConfig, DictError, DictMetadata, DictStats, EntryIterator,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `read_string`, `read_u32_le`, and `read_varint`
[INFO] [stdout]   --> src/dict/mdict.rs:22:33
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::util::buffer::{self, read_string, read_u32_le, read_varint};
[INFO] [stdout]    |                                 ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CompressionAlgorithm` and `self`
[INFO] [stdout]   --> src/dict/mdict.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::util::compression::{self, CompressionAlgorithm};
[INFO] [stdout]    |                                ^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TextEncoding`
[INFO] [stdout]   --> src/dict/mdict.rs:24:35
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::util::encoding::{self, TextEncoding};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::file_utils`
[INFO] [stdout]   --> src/dict/mdict.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::util::file_utils;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mdict.rs:609:25
[INFO] [stdout]     |
[INFO] [stdout] 609 |             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 609 -             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout] 609 +             cursor.seek(SeekFrom::Current(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mdict.rs:619:25
[INFO] [stdout]     |
[INFO] [stdout] 619 |             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stdout] 619 +             cursor.seek(SeekFrom::Current(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]   --> src/dict/zimdict.rs:93:36
[INFO] [stdout]    |
[INFO] [stdout] 93 |         if header.mime_list_pos != std::mem::size_of::<ZimHeader>() as u64 {
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]    |
[INFO] [stdout] 93 -         if header.mime_list_pos != std::mem::size_of::<ZimHeader>() as u64 {
[INFO] [stdout] 93 +         if header.mime_list_pos != size_of::<ZimHeader>() as u64 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/zimdict.rs:792:25
[INFO] [stdout]     |
[INFO] [stdout] 792 |         let mut btree = crate::index::btree::BTreeIndex::new();
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 792 -         let mut btree = crate::index::btree::BTreeIndex::new();
[INFO] [stdout] 792 +         let mut btree = BTreeIndex::new();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/zimdict.rs:817:23
[INFO] [stdout]     |
[INFO] [stdout] 817 |         let mut fts = crate::index::fts::FtsIndex::new();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 817 -         let mut fts = crate::index::fts::FtsIndex::new();
[INFO] [stdout] 817 +         let mut fts = FtsIndex::new();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]   --> src/dict/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::result::Result as StdResult;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:474:13
[INFO] [stdout]     |
[INFO] [stdout] 474 |             crate::traits::FORMAT_MDICT => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 474 -             crate::traits::FORMAT_MDICT => {
[INFO] [stdout] 474 +             FORMAT_MDICT => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:517:13
[INFO] [stdout]     |
[INFO] [stdout] 517 |             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 517 -             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout] 517 +             FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/dict/mod.rs:517:46
[INFO] [stdout]     |
[INFO] [stdout] 517 |             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 517 -             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout] 517 +             crate::traits::FORMAT_STARDICT | FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/index/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mmap`
[INFO] [stdout]   --> src/index/fts.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use memmap2::{Mmap, MmapOptions};
[INFO] [stdout]    |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RwLockReadGuard` and `RwLockWriteGuard`
[INFO] [stdout]   --> src/index/fts.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 | use parking_lot::{RwLock, RwLockReadGuard, RwLockWriteGuard};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader`, `BufWriter`, `SeekFrom`, `Seek`, and `self`
[INFO] [stdout]  --> src/util/mod.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{self, BufReader, BufWriter, Read, Seek, SeekFrom, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^^^^^  ^^^^^^^^^        ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::read::GzDecoder`
[INFO] [stdout]   --> src/util/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use flate2::read::GzDecoder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::write::GzEncoder`
[INFO] [stdout]   --> src/util/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use flate2::write::GzEncoder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `flate2::Compression`
[INFO] [stdout]   --> src/util/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use flate2::Compression;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FrameDecoder` and `FrameEncoder`
[INFO] [stdout]   --> src/util/mod.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 | use lz4_flex::frame::{FrameDecoder, FrameEncoder};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Decoder` and `Encoder`
[INFO] [stdout]   --> src/util/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | use zstd::{Decoder, Encoder};
[INFO] [stdout]    |            ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/util/compression.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{self, Cursor, Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/compression.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result::Result as StdResult`
[INFO] [stdout]  --> src/util/encoding.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::result::Result as StdResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:351:9
[INFO] [stdout]     |
[INFO] [stdout] 351 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/util/mod.rs:401:9
[INFO] [stdout]     |
[INFO] [stdout] 401 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:497:32
[INFO] [stdout]     |
[INFO] [stdout] 497 |     pub fn serialize_to_vec<T: serde::Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 497 -     pub fn serialize_to_vec<T: serde::Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout] 497 +     pub fn serialize_to_vec<T: Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:507:38
[INFO] [stdout]     |
[INFO] [stdout] 507 |     pub fn serialize_and_compress<T: serde::Serialize>(
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 507 -     pub fn serialize_and_compress<T: serde::Serialize>(
[INFO] [stdout] 507 +     pub fn serialize_and_compress<T: Serialize>(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:532:39
[INFO] [stdout]     |
[INFO] [stdout] 532 |     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 532 -     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout] 532 +     pub fn serialize_with_metadata<T: Serialize>(
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:584:20
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let data = crate::util::file_utils::read_file(path)?;
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 584 -         let data = crate::util::file_utils::read_file(path)?;
[INFO] [stdout] 584 +         let data = file_utils::read_file(path)?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:619:36
[INFO] [stdout]     |
[INFO] [stdout] 619 |     pub fn cleanup_temp_dir(path: &std::path::Path) -> Result<()> {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 619 -     pub fn cleanup_temp_dir(path: &std::path::Path) -> Result<()> {
[INFO] [stdout] 619 +     pub fn cleanup_temp_dir(path: &Path) -> Result<()> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:628:32
[INFO] [stdout]     |
[INFO] [stdout] 628 |         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 628 -         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout] 628 +         K: std::fmt::Display + PartialEq + std::cmp::Ord,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:628:54
[INFO] [stdout]     |
[INFO] [stdout] 628 |         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 628 -         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stdout] 628 +         K: std::fmt::Display + std::cmp::PartialEq + Ord,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary qualification
[INFO] [stdout]    --> src/util/mod.rs:668:58
[INFO] [stdout]     |
[INFO] [stdout] 668 |         K: Clone + std::fmt::Display + std::hash::Hash + std::cmp::Eq,
[INFO] [stdout]     |                                                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove the unnecessary path segments
[INFO] [stdout]     |
[INFO] [stdout] 668 -         K: Clone + std::fmt::Display + std::hash::Hash + std::cmp::Eq,
[INFO] [stdout] 668 +         K: Clone + std::fmt::Display + std::hash::Hash + Eq,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cleanup_temp_dir` and `temp_dir`
[INFO] [stdout]    --> src/lib.rs:277:35
[INFO] [stdout]     |
[INFO] [stdout] 277 |     use crate::util::test_utils::{cleanup_temp_dir, generate_test_entries, temp_dir};
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DictBuilder`
[INFO] [stdout]   --> src/dict/mod.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Dict, DictBuilder, DictConfig, DictError, DictFormat, Result, FORMAT_MDICT, FORMAT_STARDICT,
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]   --> src/dict/dsl.rs:43:21
[INFO] [stdout]    |
[INFO] [stdout] 43 | use std::io::{self, BufRead, BufReader, Read, Seek, SeekFrom};
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/index/fts.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `headword_blocks`
[INFO] [stdout]    --> src/dict/mdict.rs:351:13
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let headword_blocks =
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_headword_blocks`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dict/mdict.rs:514:21
[INFO] [stdout]     |
[INFO] [stdout] 514 |                 let mut lzo = minilzo_rs::LZO::init().map_err(|e| {
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `version`
[INFO] [stdout]    --> src/dict/mdict.rs:479:44
[INFO] [stdout]     |
[INFO] [stdout] 479 |     fn decompress_block(compressed: &[u8], version: f64, max_output: usize) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_records`
[INFO] [stdout]    --> src/dict/mdict.rs:653:13
[INFO] [stdout]     |
[INFO] [stdout] 653 |         let total_records = if number_size == 8 {
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_records`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `record_block_info_pos`
[INFO] [stdout]    --> src/dict/mdict.rs:671:13
[INFO] [stdout]     |
[INFO] [stdout] 671 |         let record_block_info_pos = reader.stream_position()?;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_record_block_info_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `btree`
[INFO] [stdout]    --> src/dict/mdict.rs:849:25
[INFO] [stdout]     |
[INFO] [stdout] 849 |             if let Some(ref btree) = self.btree_index {
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_btree`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dict/stardict.rs:356:13
[INFO] [stdout]     |
[INFO] [stdout] 356 |         let mut idx_candidates = [
[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/dict/stardict.rs:376:13
[INFO] [stdout]     |
[INFO] [stdout] 376 |         let mut dict_candidates = [
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query`
[INFO] [stdout]    --> src/dict/mod.rs:363:9
[INFO] [stdout]     |
[INFO] [stdout] 363 |         query: &str,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loader`
[INFO] [stdout]    --> src/dict/mod.rs:537:13
[INFO] [stdout]     |
[INFO] [stdout] 537 |         let loader = DictLoader::new();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_loader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loader`
[INFO] [stdout]    --> src/dict/mod.rs:628:13
[INFO] [stdout]     |
[INFO] [stdout] 628 |         let loader = DictLoader::new();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_loader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/index/fts.rs:206:20
[INFO] [stdout]     |
[INFO] [stdout] 206 |         for (term, position) in &tokens {
[INFO] [stdout]     |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_size`
[INFO] [stdout]    --> src/util/compression.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 166 |     original_size: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/util/mod.rs:675:24
[INFO] [stdout]     |
[INFO] [stdout] 675 |             .flat_map(|i| {
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `signature` and `word_count` are never read
[INFO] [stdout]   --> src/dict/bgl.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct BglIndexHeader {
[INFO] [stdout]    |        -------------- fields in this struct
[INFO] [stdout] 43 |     /// Magic signature, expected "BGLX"
[INFO] [stdout] 44 |     signature: [u8; 4],
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     word_count: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BglIndexHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Windows1252` and `Windows1250` are never constructed
[INFO] [stdout]   --> src/dict/dsl.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | enum DslEncoding {
[INFO] [stdout]    |      ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 63 |     Windows1252,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 64 |     Windows1251,
[INFO] [stdout] 65 |     Windows1250,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DslEncoding` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MDICT_MAX_KEY_LENGTH` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const MDICT_MAX_KEY_LENGTH: usize = 16 * 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MDICT_MAX_VALUE_LENGTH` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const MDICT_MAX_VALUE_LENGTH: usize = 4 * 1024 * 1024; // 4MB safety cap
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MdictBlockCompression` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 36 | enum MdictBlockCompression {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/dict/mdict.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct MdictHeader {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 44 |     /// Encoding name as in header (normalized)
[INFO] [stdout] 45 |     encoding: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     encrypted: i32,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 50 |     /// Right-to-left flag
[INFO] [stdout] 51 |     rtl: bool,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 52 |     /// Title (or filename fallback)
[INFO] [stdout] 53 |     title: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     number_size: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 60 |     /// Position of headword block info (absolute in file)
[INFO] [stdout] 61 |     headword_block_info_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Size of headword block info (compressed or plain)
[INFO] [stdout] 63 |     headword_block_info_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     /// Number of headword blocks
[INFO] [stdout] 65 |     num_headword_blocks: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     headword_block_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 70 |     /// Position of record block info table
[INFO] [stdout] 71 |     record_block_info_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     /// Total decompressed size of all records
[INFO] [stdout] 73 |     total_records_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MdictHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `compressed_size`, `decompressed_size`, `start_pos`, `shadow_start_pos`, and `shadow_end_pos` are never read
[INFO] [stdout]   --> src/dict/mdict.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct RecordIndex {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 83 |     compressed_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |     decompressed_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     /// Start position (relative to first record block) in compressed space
[INFO] [stdout] 86 |     start_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 87 |     /// Start position in concatenated decompressed space
[INFO] [stdout] 88 |     shadow_start_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     /// End position in decompressed space
[INFO] [stdout] 90 |     shadow_end_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RecordIndex` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains_decompressed_offset` is never used
[INFO] [stdout]   --> src/dict/mdict.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | impl RecordIndex {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 94 |     fn contains_decompressed_offset(&self, off: u64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MdictKeyEntry` is never constructed
[INFO] [stdout]    --> src/dict/mdict.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct MdictKeyEntry {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mmap` and `file` are never read
[INFO] [stdout]    --> src/dict/mdict.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct MDict {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 114 |     mmap: Option<Arc<Mmap>>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 115 |     /// File for sequential access
[INFO] [stdout] 116 |     file: Option<File>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate_entry_window`, `read_entry_at_offset`, and `collect_all_entries` are never used
[INFO] [stdout]    --> src/dict/mdict.rs:777:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | impl MDict {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 777 |     fn validate_entry_window(&self, offset: u64, length: u64) -> Result<(u64, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 804 |     fn read_entry_at_offset(&self, offset: u64, length: u64) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 958 |     fn collect_all_entries(&self) -> Result<Vec<(String, Vec<u8>)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ifo`, `encoding`, and `idx_64bit` are never read
[INFO] [stdout]   --> src/dict/stardict.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct StarDictHeader {
[INFO] [stdout]    |        -------------- fields in this struct
[INFO] [stdout] 54 |     ifo: Ifo,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     encoding: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 58 |     /// True if index offsets are 64-bit (we reject those like GoldenDict).
[INFO] [stdout] 59 |     idx_64bit: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StarDictHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dict_path`, `syn_path`, and `header` are never read
[INFO] [stdout]   --> src/dict/stardict.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct StarDict {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 77 |     dict_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     syn_path: Option<PathBuf>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 82 |     /// Parsed header
[INFO] [stdout] 83 |     header: StarDictHeader,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `calculate_crc32`, `validate_crc32`, and `validate_gzip_crc32` are never used
[INFO] [stdout]    --> src/dict/stardict.rs:927:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl StarDict {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 927 |     fn calculate_crc32(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 934 |     fn validate_crc32(data: &[u8], expected_checksum: u32) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 947 |     fn validate_gzip_crc32(data: &[u8], expected_crc32: u32) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `magic_number` and `title_ptr_pos` are never read
[INFO] [stdout]   --> src/dict/zimdict.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct ZimHeader {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 26 |     magic_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     title_ptr_pos: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ZimHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ArticleLoc` is never constructed
[INFO] [stdout]   --> src/dict/zimdict.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct ArticleLoc {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mmap` and `mime_types` are never read
[INFO] [stdout]   --> src/dict/zimdict.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct ZimDict {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     mmap: Option<Arc<Mmap>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     mime_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_raw` is never used
[INFO] [stdout]    --> src/dict/zimdict.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl ZimDict {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 298 |     fn read_raw(&self, offset: u64, size: u64) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `paths` is never read
[INFO] [stdout]    --> src/index/mod.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct IndexManager {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 169 |     paths: HashMap<&'static str, PathBuf>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> src/index/btree.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct BTreeIndex {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 81 |     lock: Arc<RwLock<()>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Token` is never constructed
[INFO] [stdout]   --> src/index/fts.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct Token {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:97:1
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub mod prelude {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:1:9
[INFO] [stdout]    |
[INFO] [stdout]  1 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/traits.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub has_fts: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/traits.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub keys: std::vec::IntoIter<K>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/traits.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub dictionary: &'a dyn Dict<K>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/traits.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn iter(&self) -> Result<EntryIterator<K>>;
[INFO] [stdout]     |             ^^^^^            ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn iter(&self) -> Result<EntryIterator<'_, K>>;
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:347:1
[INFO] [stdout]     |
[INFO] [stdout] 347 | pub const FORMAT_STARDICT: &str = "stardict";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:348:1
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub const FORMAT_ZIM: &str = "zim";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:352:1
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub const EXT_IDX: &str = ".idx";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:353:1
[INFO] [stdout]     |
[INFO] [stdout] 353 | pub const EXT_INFO: &str = ".info";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:354:1
[INFO] [stdout]     |
[INFO] [stdout] 354 | pub const EXT_BTREE: &str = ".btree";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]    --> src/traits.rs:355:1
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub const EXT_FTS: &str = ".fts";
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/dict/dsl.rs:905:13
[INFO] [stdout]     |
[INFO] [stdout] 905 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]     |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 905 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]     --> src/dict/mdict.rs:1119:13
[INFO] [stdout]      |
[INFO] [stdout] 1119 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]      |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]      |             |
[INFO] [stdout]      |             the lifetime is elided here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]      |
[INFO] [stdout] 1119 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]      |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]     --> src/dict/stardict.rs:1110:13
[INFO] [stdout]      |
[INFO] [stdout] 1110 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stdout]      |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]      |             |
[INFO] [stdout]      |             the lifetime is elided here
[INFO] [stdout]      |
[INFO] [stdout]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]      |
[INFO] [stdout] 1110 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stdout]      |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/index/mod.rs:72:1
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub enum CompressionAlgorithm {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/index/mod.rs:122:23
[INFO] [stdout]     |
[INFO] [stdout] 122 |     VersionMismatch { expected: String, found: String },
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/index/mod.rs:122:41
[INFO] [stdout]     |
[INFO] [stdout] 122 |     VersionMismatch { expected: String, found: String },
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/index/btree.rs:529:5
[INFO] [stdout]     |
[INFO] [stdout] 529 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/index/btree.rs:533:5
[INFO] [stdout]     |
[INFO] [stdout] 533 |     pub fn add(&mut self, key: String, value: u64) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/util/compression.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum CompressionAlgorithm {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/util/compression.rs:224:1
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub struct AlgorithmSettings {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:225:5
[INFO] [stdout]     |
[INFO] [stdout] 225 |     pub supports_streaming: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:226:5
[INFO] [stdout]     |
[INFO] [stdout] 226 |     pub supports_dictionary: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:227:5
[INFO] [stdout]     |
[INFO] [stdout] 227 |     pub typical_ratio: f32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:228:5
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub speed_category: SpeedCategory,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/compression.rs:229:5
[INFO] [stdout]     |
[INFO] [stdout] 229 |     pub memory_overhead: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> src/util/compression.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub enum SpeedCategory {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:234:5
[INFO] [stdout]     |
[INFO] [stdout] 234 |     VeryFast,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:235:5
[INFO] [stdout]     |
[INFO] [stdout] 235 |     Fast,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:236:5
[INFO] [stdout]     |
[INFO] [stdout] 236 |     Medium,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/util/compression.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     Slow,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/util/encoding.rs:556:1
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub struct EncodingStats {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:557:5
[INFO] [stdout]     |
[INFO] [stdout] 557 |     pub name: &'static str,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:558:5
[INFO] [stdout]     |
[INFO] [stdout] 558 |     pub supports_unicode: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:559:5
[INFO] [stdout]     |
[INFO] [stdout] 559 |     pub max_char_size: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:560:5
[INFO] [stdout]     |
[INFO] [stdout] 560 |     pub is_variable_width: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/util/encoding.rs:561:5
[INFO] [stdout]     |
[INFO] [stdout] 561 |     pub common_in: Vec<&'static str>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/util/mod.rs:412:9
[INFO] [stdout]     |
[INFO] [stdout] 412 |         pub fn new() -> Self {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/util/mod.rs:532:5
[INFO] [stdout]     |
[INFO] [stdout] 532 | /     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stdout] 533 | |         data: &T,
[INFO] [stdout] 534 | |         version: &str,
[INFO] [stdout] 535 | |     ) -> Result<Vec<u8>> {
[INFO] [stdout]     | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/util/mod.rs:542:23
[INFO] [stdout]     |
[INFO] [stdout] 542 |             data: data.clone(),
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `T` does not implement `Clone`, so calling `clone` on `&T` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/util/mod.rs:548:5
[INFO] [stdout]     |
[INFO] [stdout] 548 | /     pub fn deserialize_with_metadata<T: serde::de::DeserializeOwned>(
[INFO] [stdout] 549 | |         bytes: &[u8],
[INFO] [stdout] 550 | |         expected_version: &str,
[INFO] [stdout] 551 | |     ) -> Result<T> {
[INFO] [stdout]     | |__________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 27.94s
[INFO] running `Command { std: "docker" "inspect" "ee05cfbe8271ef33c53536e587d0df0a031bdeb0b8f5ff7e8ed2914e02c92fe9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ee05cfbe8271ef33c53536e587d0df0a031bdeb0b8f5ff7e8ed2914e02c92fe9", kill_on_drop: false }`
[INFO] [stdout] ee05cfbe8271ef33c53536e587d0df0a031bdeb0b8f5ff7e8ed2914e02c92fe9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] c3bcc82a15eac919c3b2273aa137ee6ce4bc56cd20fff17a3b71f6aba5a851f3
[INFO] running `Command { std: "docker" "start" "-a" "c3bcc82a15eac919c3b2273aa137ee6ce4bc56cd20fff17a3b71f6aba5a851f3", kill_on_drop: false }`
[INFO] [stderr] warning: unexpected `cfg` condition value: `bench`
[INFO] [stderr]    --> src/lib.rs:374:17
[INFO] [stderr]     |
[INFO] [stderr] 374 | #[cfg(all(test, feature = "bench"))]
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: expected values for `feature` are: `clap`, `cli`, `default`, `high_performance`, and `rayon`
[INFO] [stderr]     = help: consider adding `bench` as a feature in `Cargo.toml`
[INFO] [stderr]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stderr]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BuildHasher`
[INFO] [stderr]  --> src/traits.rs:9:17
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::hash::{BuildHasher, Hash};
[INFO] [stderr]   |                 ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `BufReader` and `self`
[INFO] [stderr]   --> src/dict/dsl.rs:43:15
[INFO] [stderr]    |
[INFO] [stderr] 43 | use std::io::{self, BufRead, BufReader, Read, Seek, SeekFrom};
[INFO] [stderr]    |               ^^^^           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `IndexConfig`
[INFO] [stderr]   --> src/dict/dsl.rs:50:61
[INFO] [stderr]    |
[INFO] [stderr] 50 | use crate::index::{btree::BTreeIndex, fts::FtsIndex, Index, IndexConfig};
[INFO] [stderr]    |                                                             ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::util::encoding`
[INFO] [stderr]   --> src/dict/dsl.rs:55:5
[INFO] [stderr]    |
[INFO] [stderr] 55 | use crate::util::encoding;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/dsl.rs:707:29
[INFO] [stderr]     |
[INFO] [stderr] 707 |             if let Err(e) = crate::index::Index::load(&mut idx, &btree_path) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] note: the lint level is defined here
[INFO] [stderr]    --> src/lib.rs:3:9
[INFO] [stderr]     |
[INFO] [stderr]   3 | #![warn(unused_qualifications)]
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 707 -             if let Err(e) = crate::index::Index::load(&mut idx, &btree_path) {
[INFO] [stderr] 707 +             if let Err(e) = Index::load(&mut idx, &btree_path) {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/dsl.rs:714:17
[INFO] [stderr]     |
[INFO] [stderr] 714 |             if !crate::index::Index::is_built(&idx) {
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 714 -             if !crate::index::Index::is_built(&idx) {
[INFO] [stderr] 714 +             if !Index::is_built(&idx) {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/dsl.rs:725:29
[INFO] [stderr]     |
[INFO] [stderr] 725 |             if let Err(e) = crate::index::Index::load(&mut idx, &fts_path) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 725 -             if let Err(e) = crate::index::Index::load(&mut idx, &fts_path) {
[INFO] [stderr] 725 +             if let Err(e) = Index::load(&mut idx, &fts_path) {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/dsl.rs:732:17
[INFO] [stderr]     |
[INFO] [stderr] 732 |             if !crate::index::Index::is_built(&idx) {
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 732 -             if !crate::index::Index::is_built(&idx) {
[INFO] [stderr] 732 +             if !Index::is_built(&idx) {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RwLockReadGuard`
[INFO] [stderr]   --> src/dict/mdict.rs:15:27
[INFO] [stderr]    |
[INFO] [stderr] 15 | use parking_lot::{RwLock, RwLockReadGuard};
[INFO] [stderr]    |                           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BatchResult`
[INFO] [stderr]   --> src/dict/mdict.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 |     BatchResult, Dict, DictConfig, DictError, DictMetadata, DictStats, EntryIterator,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `read_string`, `read_u32_le`, and `read_varint`
[INFO] [stderr]   --> src/dict/mdict.rs:22:33
[INFO] [stderr]    |
[INFO] [stderr] 22 | use crate::util::buffer::{self, read_string, read_u32_le, read_varint};
[INFO] [stderr]    |                                 ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `CompressionAlgorithm` and `self`
[INFO] [stderr]   --> src/dict/mdict.rs:23:32
[INFO] [stderr]    |
[INFO] [stderr] 23 | use crate::util::compression::{self, CompressionAlgorithm};
[INFO] [stderr]    |                                ^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TextEncoding`
[INFO] [stderr]   --> src/dict/mdict.rs:24:35
[INFO] [stderr]    |
[INFO] [stderr] 24 | use crate::util::encoding::{self, TextEncoding};
[INFO] [stderr]    |                                   ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::util::file_utils`
[INFO] [stderr]   --> src/dict/mdict.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use crate::util::file_utils;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/mdict.rs:609:25
[INFO] [stderr]     |
[INFO] [stderr] 609 |             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 609 -             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stderr] 609 +             cursor.seek(SeekFrom::Current(
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/mdict.rs:619:25
[INFO] [stderr]     |
[INFO] [stderr] 619 |             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 619 -             cursor.seek(std::io::SeekFrom::Current(
[INFO] [stderr] 619 +             cursor.seek(SeekFrom::Current(
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]   --> src/dict/zimdict.rs:93:36
[INFO] [stderr]    |
[INFO] [stderr] 93 |         if header.mime_list_pos != std::mem::size_of::<ZimHeader>() as u64 {
[INFO] [stderr]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]    |
[INFO] [stderr] 93 -         if header.mime_list_pos != std::mem::size_of::<ZimHeader>() as u64 {
[INFO] [stderr] 93 +         if header.mime_list_pos != size_of::<ZimHeader>() as u64 {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/zimdict.rs:792:25
[INFO] [stderr]     |
[INFO] [stderr] 792 |         let mut btree = crate::index::btree::BTreeIndex::new();
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 792 -         let mut btree = crate::index::btree::BTreeIndex::new();
[INFO] [stderr] 792 +         let mut btree = BTreeIndex::new();
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/zimdict.rs:817:23
[INFO] [stderr]     |
[INFO] [stderr] 817 |         let mut fts = crate::index::fts::FtsIndex::new();
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 817 -         let mut fts = crate::index::fts::FtsIndex::new();
[INFO] [stderr] 817 +         let mut fts = FtsIndex::new();
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::result::Result as StdResult`
[INFO] [stderr]   --> src/dict/mod.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | use std::result::Result as StdResult;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/mod.rs:474:13
[INFO] [stderr]     |
[INFO] [stderr] 474 |             crate::traits::FORMAT_MDICT => {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 474 -             crate::traits::FORMAT_MDICT => {
[INFO] [stderr] 474 +             FORMAT_MDICT => {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/mod.rs:517:13
[INFO] [stderr]     |
[INFO] [stderr] 517 |             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 517 -             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stderr] 517 +             FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/dict/mod.rs:517:46
[INFO] [stderr]     |
[INFO] [stderr] 517 |             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stderr]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 517 -             crate::traits::FORMAT_STARDICT | crate::traits::FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stderr] 517 +             crate::traits::FORMAT_STARDICT | FORMAT_ZIM | "dsl" | "bgl" => {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::result::Result as StdResult`
[INFO] [stderr]  --> src/index/mod.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::result::Result as StdResult;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Mmap`
[INFO] [stderr]   --> src/index/fts.rs:13:15
[INFO] [stderr]    |
[INFO] [stderr] 13 | use memmap2::{Mmap, MmapOptions};
[INFO] [stderr]    |               ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `RwLockReadGuard` and `RwLockWriteGuard`
[INFO] [stderr]   --> src/index/fts.rs:19:27
[INFO] [stderr]    |
[INFO] [stderr] 19 | use parking_lot::{RwLock, RwLockReadGuard, RwLockWriteGuard};
[INFO] [stderr]    |                           ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `BufReader`, `BufWriter`, `SeekFrom`, `Seek`, and `self`
[INFO] [stderr]  --> src/util/mod.rs:7:15
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::io::{self, BufReader, BufWriter, Read, Seek, SeekFrom, Write};
[INFO] [stderr]   |               ^^^^  ^^^^^^^^^  ^^^^^^^^^        ^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::result::Result as StdResult`
[INFO] [stderr]  --> src/util/mod.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::result::Result as StdResult;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `flate2::read::GzDecoder`
[INFO] [stderr]   --> src/util/mod.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use flate2::read::GzDecoder;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `flate2::write::GzEncoder`
[INFO] [stderr]   --> src/util/mod.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use flate2::write::GzEncoder;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `flate2::Compression`
[INFO] [stderr]   --> src/util/mod.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | use flate2::Compression;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `FrameDecoder` and `FrameEncoder`
[INFO] [stderr]   --> src/util/mod.rs:14:23
[INFO] [stderr]    |
[INFO] [stderr] 14 | use lz4_flex::frame::{FrameDecoder, FrameEncoder};
[INFO] [stderr]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Decoder` and `Encoder`
[INFO] [stderr]   --> src/util/mod.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | use zstd::{Decoder, Encoder};
[INFO] [stderr]    |            ^^^^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self`
[INFO] [stderr]  --> src/util/compression.rs:6:15
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::io::{self, Cursor, Read, Write};
[INFO] [stderr]   |               ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::result::Result as StdResult`
[INFO] [stderr]  --> src/util/compression.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::result::Result as StdResult;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::result::Result as StdResult`
[INFO] [stderr]  --> src/util/encoding.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::result::Result as StdResult;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/util/mod.rs:274:9
[INFO] [stderr]     |
[INFO] [stderr] 274 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/util/mod.rs:351:9
[INFO] [stderr]     |
[INFO] [stderr] 351 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/util/mod.rs:401:9
[INFO] [stderr]     |
[INFO] [stderr] 401 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/util/mod.rs:497:32
[INFO] [stderr]     |
[INFO] [stderr] 497 |     pub fn serialize_to_vec<T: serde::Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stderr]     |                                ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 497 -     pub fn serialize_to_vec<T: serde::Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stderr] 497 +     pub fn serialize_to_vec<T: Serialize>(data: &T) -> Result<Vec<u8>> {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/util/mod.rs:507:38
[INFO] [stderr]     |
[INFO] [stderr] 507 |     pub fn serialize_and_compress<T: serde::Serialize>(
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 507 -     pub fn serialize_and_compress<T: serde::Serialize>(
[INFO] [stderr] 507 +     pub fn serialize_and_compress<T: Serialize>(
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/util/mod.rs:532:39
[INFO] [stderr]     |
[INFO] [stderr] 532 |     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 532 -     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stderr] 532 +     pub fn serialize_with_metadata<T: Serialize>(
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/util/mod.rs:584:20
[INFO] [stderr]     |
[INFO] [stderr] 584 |         let data = crate::util::file_utils::read_file(path)?;
[INFO] [stderr]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 584 -         let data = crate::util::file_utils::read_file(path)?;
[INFO] [stderr] 584 +         let data = file_utils::read_file(path)?;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/util/mod.rs:619:36
[INFO] [stderr]     |
[INFO] [stderr] 619 |     pub fn cleanup_temp_dir(path: &std::path::Path) -> Result<()> {
[INFO] [stderr]     |                                    ^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 619 -     pub fn cleanup_temp_dir(path: &std::path::Path) -> Result<()> {
[INFO] [stderr] 619 +     pub fn cleanup_temp_dir(path: &Path) -> Result<()> {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/util/mod.rs:628:32
[INFO] [stderr]     |
[INFO] [stderr] 628 |         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stderr]     |                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 628 -         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stderr] 628 +         K: std::fmt::Display + PartialEq + std::cmp::Ord,
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/util/mod.rs:628:54
[INFO] [stderr]     |
[INFO] [stderr] 628 |         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stderr]     |                                                      ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 628 -         K: std::fmt::Display + std::cmp::PartialEq + std::cmp::Ord,
[INFO] [stderr] 628 +         K: std::fmt::Display + std::cmp::PartialEq + Ord,
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary qualification
[INFO] [stderr]    --> src/util/mod.rs:668:58
[INFO] [stderr]     |
[INFO] [stderr] 668 |         K: Clone + std::fmt::Display + std::hash::Hash + std::cmp::Eq,
[INFO] [stderr]     |                                                          ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: remove the unnecessary path segments
[INFO] [stderr]     |
[INFO] [stderr] 668 -         K: Clone + std::fmt::Display + std::hash::Hash + std::cmp::Eq,
[INFO] [stderr] 668 +         K: Clone + std::fmt::Display + std::hash::Hash + Eq,
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BufRead`
[INFO] [stderr]   --> src/dict/dsl.rs:43:21
[INFO] [stderr]    |
[INFO] [stderr] 43 | use std::io::{self, BufRead, BufReader, Read, Seek, SeekFrom};
[INFO] [stderr]    |                     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `DictBuilder`
[INFO] [stderr]   --> src/dict/mod.rs:22:11
[INFO] [stderr]    |
[INFO] [stderr] 22 |     Dict, DictBuilder, DictConfig, DictError, DictFormat, Result, FORMAT_MDICT, FORMAT_STARDICT,
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Read`
[INFO] [stderr]  --> src/index/fts.rs:8:15
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::io::{Read, Write};
[INFO] [stderr]   |               ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `headword_blocks`
[INFO] [stderr]    --> src/dict/mdict.rs:351:13
[INFO] [stderr]     |
[INFO] [stderr] 351 |         let headword_blocks =
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_headword_blocks`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/dict/mdict.rs:514:21
[INFO] [stderr]     |
[INFO] [stderr] 514 |                 let mut lzo = minilzo_rs::LZO::init().map_err(|e| {
[INFO] [stderr]     |                     ----^^^
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `version`
[INFO] [stderr]    --> src/dict/mdict.rs:479:44
[INFO] [stderr]     |
[INFO] [stderr] 479 |     fn decompress_block(compressed: &[u8], version: f64, max_output: usize) -> Result<Vec<u8>> {
[INFO] [stderr]     |                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_version`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `total_records`
[INFO] [stderr]    --> src/dict/mdict.rs:653:13
[INFO] [stderr]     |
[INFO] [stderr] 653 |         let total_records = if number_size == 8 {
[INFO] [stderr]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_records`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `record_block_info_pos`
[INFO] [stderr]    --> src/dict/mdict.rs:671:13
[INFO] [stderr]     |
[INFO] [stderr] 671 |         let record_block_info_pos = reader.stream_position()?;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_record_block_info_pos`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `btree`
[INFO] [stderr]    --> src/dict/mdict.rs:849:25
[INFO] [stderr]     |
[INFO] [stderr] 849 |             if let Some(ref btree) = self.btree_index {
[INFO] [stderr]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_btree`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/dict/stardict.rs:356:13
[INFO] [stderr]     |
[INFO] [stderr] 356 |         let mut idx_candidates = [
[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/dict/stardict.rs:376:13
[INFO] [stderr]     |
[INFO] [stderr] 376 |         let mut dict_candidates = [
[INFO] [stderr]     |             ----^^^^^^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `query`
[INFO] [stderr]    --> src/dict/mod.rs:363:9
[INFO] [stderr]     |
[INFO] [stderr] 363 |         query: &str,
[INFO] [stderr]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_query`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `loader`
[INFO] [stderr]    --> src/dict/mod.rs:537:13
[INFO] [stderr]     |
[INFO] [stderr] 537 |         let loader = DictLoader::new();
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_loader`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `loader`
[INFO] [stderr]    --> src/dict/mod.rs:628:13
[INFO] [stderr]     |
[INFO] [stderr] 628 |         let loader = DictLoader::new();
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_loader`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `position`
[INFO] [stderr]    --> src/index/fts.rs:206:20
[INFO] [stderr]     |
[INFO] [stderr] 206 |         for (term, position) in &tokens {
[INFO] [stderr]     |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `original_size`
[INFO] [stderr]    --> src/util/compression.rs:166:5
[INFO] [stderr]     |
[INFO] [stderr] 166 |     original_size: u64,
[INFO] [stderr]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_size`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/util/mod.rs:675:24
[INFO] [stderr]     |
[INFO] [stderr] 675 |             .flat_map(|i| {
[INFO] [stderr]     |                        ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `signature` and `word_count` are never read
[INFO] [stderr]   --> src/dict/bgl.rs:44:5
[INFO] [stderr]    |
[INFO] [stderr] 42 | struct BglIndexHeader {
[INFO] [stderr]    |        -------------- fields in this struct
[INFO] [stderr] 43 |     /// Magic signature, expected "BGLX"
[INFO] [stderr] 44 |     signature: [u8; 4],
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 50 |     word_count: u32,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `BglIndexHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Windows1252` and `Windows1250` are never constructed
[INFO] [stderr]   --> src/dict/dsl.rs:63:5
[INFO] [stderr]    |
[INFO] [stderr] 59 | enum DslEncoding {
[INFO] [stderr]    |      ----------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 63 |     Windows1252,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 64 |     Windows1251,
[INFO] [stderr] 65 |     Windows1250,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DslEncoding` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MDICT_MAX_KEY_LENGTH` is never used
[INFO] [stderr]   --> src/dict/mdict.rs:29:7
[INFO] [stderr]    |
[INFO] [stderr] 29 | const MDICT_MAX_KEY_LENGTH: usize = 16 * 1024;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MDICT_MAX_VALUE_LENGTH` is never used
[INFO] [stderr]   --> src/dict/mdict.rs:30:7
[INFO] [stderr]    |
[INFO] [stderr] 30 | const MDICT_MAX_VALUE_LENGTH: usize = 4 * 1024 * 1024; // 4MB safety cap
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `MdictBlockCompression` is never used
[INFO] [stderr]   --> src/dict/mdict.rs:36:6
[INFO] [stderr]    |
[INFO] [stderr] 36 | enum MdictBlockCompression {
[INFO] [stderr]    |      ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/dict/mdict.rs:45:5
[INFO] [stderr]    |
[INFO] [stderr] 43 | struct MdictHeader {
[INFO] [stderr]    |        ----------- fields in this struct
[INFO] [stderr] 44 |     /// Encoding name as in header (normalized)
[INFO] [stderr] 45 |     encoding: String,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 |     encrypted: i32,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 50 |     /// Right-to-left flag
[INFO] [stderr] 51 |     rtl: bool,
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 52 |     /// Title (or filename fallback)
[INFO] [stderr] 53 |     title: String,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 59 |     number_size: u8,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 60 |     /// Position of headword block info (absolute in file)
[INFO] [stderr] 61 |     headword_block_info_pos: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 62 |     /// Size of headword block info (compressed or plain)
[INFO] [stderr] 63 |     headword_block_info_size: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 64 |     /// Number of headword blocks
[INFO] [stderr] 65 |     num_headword_blocks: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 69 |     headword_block_size: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 70 |     /// Position of record block info table
[INFO] [stderr] 71 |     record_block_info_pos: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 72 |     /// Total decompressed size of all records
[INFO] [stderr] 73 |     total_records_size: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `MdictHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `compressed_size`, `decompressed_size`, `start_pos`, `shadow_start_pos`, and `shadow_end_pos` are never read
[INFO] [stderr]   --> src/dict/mdict.rs:83:5
[INFO] [stderr]    |
[INFO] [stderr] 82 | struct RecordIndex {
[INFO] [stderr]    |        ----------- fields in this struct
[INFO] [stderr] 83 |     compressed_size: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 84 |     decompressed_size: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 85 |     /// Start position (relative to first record block) in compressed space
[INFO] [stderr] 86 |     start_pos: u64,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 87 |     /// Start position in concatenated decompressed space
[INFO] [stderr] 88 |     shadow_start_pos: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 89 |     /// End position in decompressed space
[INFO] [stderr] 90 |     shadow_end_pos: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RecordIndex` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `contains_decompressed_offset` is never used
[INFO] [stderr]   --> src/dict/mdict.rs:94:8
[INFO] [stderr]    |
[INFO] [stderr] 93 | impl RecordIndex {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] 94 |     fn contains_decompressed_offset(&self, off: u64) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MdictKeyEntry` is never constructed
[INFO] [stderr]    --> src/dict/mdict.rs:101:8
[INFO] [stderr]     |
[INFO] [stderr] 101 | struct MdictKeyEntry {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `mmap` and `file` are never read
[INFO] [stderr]    --> src/dict/mdict.rs:114:5
[INFO] [stderr]     |
[INFO] [stderr] 110 | pub struct MDict {
[INFO] [stderr]     |            ----- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 114 |     mmap: Option<Arc<Mmap>>,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 115 |     /// File for sequential access
[INFO] [stderr] 116 |     file: Option<File>,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `validate_entry_window`, `read_entry_at_offset`, and `collect_all_entries` are never used
[INFO] [stderr]    --> src/dict/mdict.rs:777:8
[INFO] [stderr]     |
[INFO] [stderr] 131 | impl MDict {
[INFO] [stderr]     | ---------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 777 |     fn validate_entry_window(&self, offset: u64, length: u64) -> Result<(u64, usize)> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 804 |     fn read_entry_at_offset(&self, offset: u64, length: u64) -> Result<Vec<u8>> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 958 |     fn collect_all_entries(&self) -> Result<Vec<(String, Vec<u8>)>> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `ifo`, `encoding`, and `idx_64bit` are never read
[INFO] [stderr]   --> src/dict/stardict.rs:54:5
[INFO] [stderr]    |
[INFO] [stderr] 53 | struct StarDictHeader {
[INFO] [stderr]    |        -------------- fields in this struct
[INFO] [stderr] 54 |     ifo: Ifo,
[INFO] [stderr]    |     ^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     encoding: String,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 58 |     /// True if index offsets are 64-bit (we reject those like GoldenDict).
[INFO] [stderr] 59 |     idx_64bit: bool,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `StarDictHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `dict_path`, `syn_path`, and `header` are never read
[INFO] [stderr]   --> src/dict/stardict.rs:77:5
[INFO] [stderr]    |
[INFO] [stderr] 73 | pub struct StarDict {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 77 |     dict_path: PathBuf,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 81 |     syn_path: Option<PathBuf>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 82 |     /// Parsed header
[INFO] [stderr] 83 |     header: StarDictHeader,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `calculate_crc32`, `validate_crc32`, and `validate_gzip_crc32` are never used
[INFO] [stderr]    --> src/dict/stardict.rs:927:8
[INFO] [stderr]     |
[INFO] [stderr] 105 | impl StarDict {
[INFO] [stderr]     | ------------- associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 927 |     fn calculate_crc32(data: &[u8]) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 934 |     fn validate_crc32(data: &[u8], expected_checksum: u32) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 947 |     fn validate_gzip_crc32(data: &[u8], expected_crc32: u32) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `magic_number` and `title_ptr_pos` are never read
[INFO] [stderr]   --> src/dict/zimdict.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | struct ZimHeader {
[INFO] [stderr]    |        --------- fields in this struct
[INFO] [stderr] 26 |     magic_number: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     title_ptr_pos: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ZimHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ArticleLoc` is never constructed
[INFO] [stderr]   --> src/dict/zimdict.rs:39:8
[INFO] [stderr]    |
[INFO] [stderr] 39 | struct ArticleLoc {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `mmap` and `mime_types` are never read
[INFO] [stderr]   --> src/dict/zimdict.rs:57:5
[INFO] [stderr]    |
[INFO] [stderr] 53 | pub struct ZimDict {
[INFO] [stderr]    |            ------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 57 |     mmap: Option<Arc<Mmap>>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     mime_types: Vec<String>,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `read_raw` is never used
[INFO] [stderr]    --> src/dict/zimdict.rs:298:8
[INFO] [stderr]     |
[INFO] [stderr]  76 | impl ZimDict {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 298 |     fn read_raw(&self, offset: u64, size: u64) -> Result<Vec<u8>> {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `paths` is never read
[INFO] [stderr]    --> src/index/mod.rs:169:5
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub struct IndexManager {
[INFO] [stderr]     |            ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 169 |     paths: HashMap<&'static str, PathBuf>,
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `lock` is never read
[INFO] [stderr]   --> src/index/btree.rs:81:5
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub struct BTreeIndex {
[INFO] [stderr]    |            ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 81 |     lock: Arc<RwLock<()>>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Token` is never constructed
[INFO] [stderr]   --> src/index/fts.rs:34:8
[INFO] [stderr]    |
[INFO] [stderr] 34 | struct Token {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a module
[INFO] [stderr]   --> src/lib.rs:97:1
[INFO] [stderr]    |
[INFO] [stderr] 97 | pub mod prelude {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] note: the lint level is defined here
[INFO] [stderr]   --> src/lib.rs:1:9
[INFO] [stderr]    |
[INFO] [stderr]  1 | #![warn(missing_docs)]
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/traits.rs:64:5
[INFO] [stderr]    |
[INFO] [stderr] 64 |     pub has_fts: bool,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/traits.rs:155:5
[INFO] [stderr]     |
[INFO] [stderr] 155 |     pub keys: std::vec::IntoIter<K>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/traits.rs:156:5
[INFO] [stderr]     |
[INFO] [stderr] 156 |     pub dictionary: &'a dyn Dict<K>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/traits.rs:246:13
[INFO] [stderr]     |
[INFO] [stderr] 246 |     fn iter(&self) -> Result<EntryIterator<K>>;
[INFO] [stderr]     |             ^^^^^            ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |             |
[INFO] [stderr]     |             the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 246 |     fn iter(&self) -> Result<EntryIterator<'_, K>>;
[INFO] [stderr]     |                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a constant
[INFO] [stderr]    --> src/traits.rs:347:1
[INFO] [stderr]     |
[INFO] [stderr] 347 | pub const FORMAT_STARDICT: &str = "stardict";
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a constant
[INFO] [stderr]    --> src/traits.rs:348:1
[INFO] [stderr]     |
[INFO] [stderr] 348 | pub const FORMAT_ZIM: &str = "zim";
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a constant
[INFO] [stderr]    --> src/traits.rs:352:1
[INFO] [stderr]     |
[INFO] [stderr] 352 | pub const EXT_IDX: &str = ".idx";
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a constant
[INFO] [stderr]    --> src/traits.rs:353:1
[INFO] [stderr]     |
[INFO] [stderr] 353 | pub const EXT_INFO: &str = ".info";
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a constant
[INFO] [stderr]    --> src/traits.rs:354:1
[INFO] [stderr]     |
[INFO] [stderr] 354 | pub const EXT_BTREE: &str = ".btree";
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a constant
[INFO] [stderr]    --> src/traits.rs:355:1
[INFO] [stderr]     |
[INFO] [stderr] 355 | pub const EXT_FTS: &str = ".fts";
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/dict/dsl.rs:905:13
[INFO] [stderr]     |
[INFO] [stderr] 905 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stderr]     |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |             |
[INFO] [stderr]     |             the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 905 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stderr]     |                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]     --> src/dict/mdict.rs:1119:13
[INFO] [stderr]      |
[INFO] [stderr] 1119 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stderr]      |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]      |             |
[INFO] [stderr]      |             the lifetime is elided here
[INFO] [stderr]      |
[INFO] [stderr]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]      |
[INFO] [stderr] 1119 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stderr]      |                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]     --> src/dict/stardict.rs:1110:13
[INFO] [stderr]      |
[INFO] [stderr] 1110 |     fn iter(&self) -> Result<EntryIterator<String>> {
[INFO] [stderr]      |             ^^^^^            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]      |             |
[INFO] [stderr]      |             the lifetime is elided here
[INFO] [stderr]      |
[INFO] [stderr]      = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]      |
[INFO] [stderr] 1110 |     fn iter(&self) -> Result<EntryIterator<'_, String>> {
[INFO] [stderr]      |                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an enum
[INFO] [stderr]   --> src/index/mod.rs:72:1
[INFO] [stderr]    |
[INFO] [stderr] 72 | pub enum CompressionAlgorithm {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/index/mod.rs:122:23
[INFO] [stderr]     |
[INFO] [stderr] 122 |     VersionMismatch { expected: String, found: String },
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/index/mod.rs:122:41
[INFO] [stderr]     |
[INFO] [stderr] 122 |     VersionMismatch { expected: String, found: String },
[INFO] [stderr]     |                                         ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an associated function
[INFO] [stderr]    --> src/index/btree.rs:529:5
[INFO] [stderr]     |
[INFO] [stderr] 529 |     pub fn new() -> Self {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a method
[INFO] [stderr]    --> src/index/btree.rs:533:5
[INFO] [stderr]     |
[INFO] [stderr] 533 |     pub fn add(&mut self, key: String, value: u64) {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an enum
[INFO] [stderr]   --> src/util/compression.rs:42:1
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub enum CompressionAlgorithm {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]    --> src/util/compression.rs:224:1
[INFO] [stderr]     |
[INFO] [stderr] 224 | pub struct AlgorithmSettings {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/compression.rs:225:5
[INFO] [stderr]     |
[INFO] [stderr] 225 |     pub supports_streaming: bool,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/compression.rs:226:5
[INFO] [stderr]     |
[INFO] [stderr] 226 |     pub supports_dictionary: bool,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/compression.rs:227:5
[INFO] [stderr]     |
[INFO] [stderr] 227 |     pub typical_ratio: f32,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/compression.rs:228:5
[INFO] [stderr]     |
[INFO] [stderr] 228 |     pub speed_category: SpeedCategory,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/compression.rs:229:5
[INFO] [stderr]     |
[INFO] [stderr] 229 |     pub memory_overhead: u64,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an enum
[INFO] [stderr]    --> src/util/compression.rs:233:1
[INFO] [stderr]     |
[INFO] [stderr] 233 | pub enum SpeedCategory {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a variant
[INFO] [stderr]    --> src/util/compression.rs:234:5
[INFO] [stderr]     |
[INFO] [stderr] 234 |     VeryFast,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a variant
[INFO] [stderr]    --> src/util/compression.rs:235:5
[INFO] [stderr]     |
[INFO] [stderr] 235 |     Fast,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a variant
[INFO] [stderr]    --> src/util/compression.rs:236:5
[INFO] [stderr]     |
[INFO] [stderr] 236 |     Medium,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a variant
[INFO] [stderr]    --> src/util/compression.rs:237:5
[INFO] [stderr]     |
[INFO] [stderr] 237 |     Slow,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]    --> src/util/encoding.rs:556:1
[INFO] [stderr]     |
[INFO] [stderr] 556 | pub struct EncodingStats {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/encoding.rs:557:5
[INFO] [stderr]     |
[INFO] [stderr] 557 |     pub name: &'static str,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/encoding.rs:558:5
[INFO] [stderr]     |
[INFO] [stderr] 558 |     pub supports_unicode: bool,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/encoding.rs:559:5
[INFO] [stderr]     |
[INFO] [stderr] 559 |     pub max_char_size: usize,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/encoding.rs:560:5
[INFO] [stderr]     |
[INFO] [stderr] 560 |     pub is_variable_width: bool,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/util/encoding.rs:561:5
[INFO] [stderr]     |
[INFO] [stderr] 561 |     pub common_in: Vec<&'static str>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an associated function
[INFO] [stderr]    --> src/util/mod.rs:412:9
[INFO] [stderr]     |
[INFO] [stderr] 412 |         pub fn new() -> Self {
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/util/mod.rs:532:5
[INFO] [stderr]     |
[INFO] [stderr] 532 | /     pub fn serialize_with_metadata<T: serde::Serialize>(
[INFO] [stderr] 533 | |         data: &T,
[INFO] [stderr] 534 | |         version: &str,
[INFO] [stderr] 535 | |     ) -> Result<Vec<u8>> {
[INFO] [stderr]     | |________________________^
[INFO] [stderr] 
[INFO] [stderr] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stderr]    --> src/util/mod.rs:542:23
[INFO] [stderr]     |
[INFO] [stderr] 542 |             data: data.clone(),
[INFO] [stderr]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stderr]     |
[INFO] [stderr]     = note: the type `T` does not implement `Clone`, so calling `clone` on `&T` copies the reference, which does not do anything and can be removed
[INFO] [stderr]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/util/mod.rs:548:5
[INFO] [stderr]     |
[INFO] [stderr] 548 | /     pub fn deserialize_with_metadata<T: serde::de::DeserializeOwned>(
[INFO] [stderr] 549 | |         bytes: &[u8],
[INFO] [stderr] 550 | |         expected_version: &str,
[INFO] [stderr] 551 | |     ) -> Result<T> {
[INFO] [stderr]     | |__________________^
[INFO] [stderr] 
[INFO] [stderr] warning: `dictutils` (lib) generated 127 warnings (run `cargo fix --lib -p dictutils` to apply 66 suggestions)
[INFO] [stderr] warning: unused imports: `cleanup_temp_dir` and `temp_dir`
[INFO] [stderr]    --> src/lib.rs:277:35
[INFO] [stderr]     |
[INFO] [stderr] 277 |     use crate::util::test_utils::{cleanup_temp_dir, generate_test_entries, temp_dir};
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^                         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> examples/dict_search_operations.rs:57:9
[INFO] [stderr]    |
[INFO] [stderr] 57 |     let mut dict = loader.load(path)?;
[INFO] [stderr]    |         ----^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> examples/dict_search_operations.rs:93:9
[INFO] [stderr]    |
[INFO] [stderr] 93 |     let mut dict = loader.load(path)?;
[INFO] [stderr]    |         ----^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> examples/dict_search_operations.rs:252:9
[INFO] [stderr]     |
[INFO] [stderr] 252 |     let mut dict = loader.load(path)?;
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> examples/basic_dict_loading.rs:56:9
[INFO] [stderr]    |
[INFO] [stderr] 56 |     let mut dict = loader.load(path)?;
[INFO] [stderr]    |         ----^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> examples/basic_dict_loading.rs:91:9
[INFO] [stderr]    |
[INFO] [stderr] 91 |     let mut dict = loader.load(path)?;
[INFO] [stderr]    |         ----^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: `dictutils` (lib test) generated 128 warnings (127 duplicates) (run `cargo fix --lib -p dictutils --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `dictutils` (example "dict_search_operations") generated 3 warnings (run `cargo fix --example "dict_search_operations" -p dictutils` to apply 3 suggestions)
[INFO] [stderr] warning: `dictutils` (example "basic_dict_loading") generated 2 warnings (run `cargo fix --example "basic_dict_loading" -p dictutils` to apply 2 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.38s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/dictutils-f92b0cdff50d227d)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test tests::test_encoding_detection ... ok
[INFO] [stdout] test tests::test_compression_algorithms ... ok
[INFO] [stdout] test tests::test_config_defaults ... ok
[INFO] [stdout] test tests::test_performance_utils ... ok
[INFO] [stdout] test tests::test_dict_loader ... ok
[INFO] [stdout] test tests::test_version_info ... ok
[INFO] [stderr]      Running tests/test_mdx_fix.rs (/opt/rustwide/target/debug/deps/test_mdx_fix-1b26085078cf6b4e)
[INFO] [stdout] test tests::test_test_utils ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test test_mdx_encoding_fix ... FAILED
[INFO] [stdout] test test_encoding_conversion_function ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- test_mdx_encoding_fix stdout ----
[INFO] [stdout] Testing MDX encoding fix...
[INFO] [stdout] 
[INFO] [stdout] thread 'test_mdx_encoding_fix' (34) panicked at tests/test_mdx_fix.rs:34:13:
[INFO] [stdout] ✗ Failed to load dictionary: File not found: test_dict/test.mdx
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x602c50476492 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x602c50476492 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x602c50476492 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x602c50476492 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x602c5048d81a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stderr] error: test failed, to rerun pass `--test test_mdx_fix`
[INFO] [stdout]    5:     0x602c5048d81a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x602c5047b376 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x602c5047b376 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x602c5045439f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x602c5045439f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x602c5046e779 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x602c5004628e - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x602c5004628e - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x602c5046e932 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x602c5046e932 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x602c50454458 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x602c5044be29 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x602c504552ad - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x602c5048dfdc - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x602c500392e9 - test_mdx_fix[f0add0342351b014]::test_mdx_encoding_fix
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/test_mdx_fix.rs:34:13
[INFO] [stdout]   20:     0x602c50038b27 - test_mdx_fix[f0add0342351b014]::test_mdx_encoding_fix::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/test_mdx_fix.rs:5:27
[INFO] [stdout]   21:     0x602c5003a556 - <test_mdx_fix[f0add0342351b014]::test_mdx_encoding_fix::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x602c5003a63b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x602c5003a63b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x602c50046e9a - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x602c50046e9a - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x602c50046e9a - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x602c50046e9a - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x602c50046e9a - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x602c50046e9a - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x602c50046e9a - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x602c50041364 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x602c50041364 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x602c50049992 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x602c50049992 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x602c50049992 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x602c50049992 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x602c50049992 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x602c50049992 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x602c50049992 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x602c50475d3f - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   41:     0x602c50475d3f - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   42:     0x7719876f1aa4 - <unknown>
[INFO] [stdout]   43:     0x77198777ea64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- test_encoding_conversion_function stdout ----
[INFO] [stdout] Testing encoding conversion function...
[INFO] [stdout] 
[INFO] [stdout] thread 'test_encoding_conversion_function' (33) panicked at tests/test_mdx_fix.rs:62:13:
[INFO] [stdout] ✗ Conversion failed: Internal error: Big5 conversion produced replacement characters
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x602c50476492 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x602c50476492 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x602c50476492 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x602c50476492 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x602c5048d81a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x602c5048d81a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x602c5047b376 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x602c5047b376 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x602c5045439f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x602c5045439f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x602c5046e779 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x602c5004628e - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x602c5004628e - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x602c5046e932 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x602c5046e932 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x602c50454458 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x602c5044be29 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x602c504552ad - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x602c5048dfdc - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x602c5003974a - test_mdx_fix[f0add0342351b014]::test_encoding_conversion_function
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/test_mdx_fix.rs:62:13
[INFO] [stdout]   20:     0x602c50038b57 - test_mdx_fix[f0add0342351b014]::test_encoding_conversion_function::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/test_mdx_fix.rs:40:39
[INFO] [stdout]   21:     0x602c5003a596 - <test_mdx_fix[f0add0342351b014]::test_encoding_conversion_function::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x602c5003a63b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x602c5003a63b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x602c50046e9a - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x602c50046e9a - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x602c50046e9a - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x602c50046e9a - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x602c50046e9a - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x602c50046e9a - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x602c50046e9a - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x602c50041364 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x602c50041364 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x602c50049992 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x602c50049992 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x602c50049992 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x602c50049992 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x602c50049992 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x602c50049992 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x602c50049992 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x602c50475d3f - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   41:     0x602c50475d3f - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   42:     0x7719876f1aa4 - <unknown>
[INFO] [stdout]   43:     0x77198777ea64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     test_encoding_conversion_function
[INFO] [stdout]     test_mdx_encoding_fix
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "c3bcc82a15eac919c3b2273aa137ee6ce4bc56cd20fff17a3b71f6aba5a851f3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c3bcc82a15eac919c3b2273aa137ee6ce4bc56cd20fff17a3b71f6aba5a851f3", kill_on_drop: false }`
[INFO] [stdout] c3bcc82a15eac919c3b2273aa137ee6ce4bc56cd20fff17a3b71f6aba5a851f3
