[INFO] cloning repository https://github.com/RasmusTufvesson/french [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/RasmusTufvesson/french" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRasmusTufvesson%2Ffrench", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRasmusTufvesson%2Ffrench'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] fb3d8c8026937616ee995c12ad3eb4267a529a06 [INFO] linting RasmusTufvesson/french against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRasmusTufvesson%2Ffrench" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/RasmusTufvesson/french [INFO] finished tweaking git repo https://github.com/RasmusTufvesson/french [INFO] tweaked toml for git repo https://github.com/RasmusTufvesson/french written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/RasmusTufvesson/french on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/RasmusTufvesson/french 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded levenshtein v1.0.5 [INFO] [stderr] Downloaded ab_glyph v0.2.21 [INFO] [stderr] Downloaded document-features v0.2.10 [INFO] [stderr] Downloaded tempfile v3.6.0 [INFO] [stderr] Downloaded egui-wgpu v0.30.0 [INFO] [stderr] Downloaded async-trait v0.1.86 [INFO] [stderr] Downloaded webbrowser v1.0.3 [INFO] [stderr] Downloaded xml-rs v0.8.14 [INFO] [stderr] Downloaded wgpu-types v23.0.0 [INFO] [stderr] Downloaded epaint v0.30.0 [INFO] [stderr] Downloaded owned_ttf_parser v0.19.0 [INFO] [stderr] Downloaded glow v0.14.2 [INFO] [stderr] Downloaded wgpu v23.0.1 [INFO] [stderr] Downloaded winnow v0.7.1 [INFO] [stderr] Downloaded ttf-parser v0.19.0 [INFO] [stderr] Downloaded toml_edit v0.22.23 [INFO] [stderr] Downloaded wgpu-core v23.0.1 [INFO] [stderr] Downloaded flate2 v1.0.26 [INFO] [stderr] Downloaded egui_glow v0.30.0 [INFO] [stderr] Downloaded png v0.17.9 [INFO] [stderr] Downloaded eframe v0.30.0 [INFO] [stderr] Downloaded paste v1.0.12 [INFO] [stderr] Downloaded wgpu-hal v23.0.1 [INFO] [stderr] Downloaded egui v0.30.0 [INFO] [stderr] Downloaded rustix v0.37.20 [INFO] [stderr] Downloaded egui-winit v0.30.0 [INFO] [stderr] Downloaded emath v0.30.0 [INFO] [stderr] Downloaded fdeflate v0.3.0 [INFO] [stderr] Downloaded foldhash v0.1.4 [INFO] [stderr] Downloaded unicode-ident v1.0.9 [INFO] [stderr] Downloaded cpufeatures v0.2.8 [INFO] [stderr] Downloaded ecolor v0.30.0 [INFO] [stderr] Downloaded libloading v0.8.0 [INFO] [stderr] Downloaded winit v0.30.8 [INFO] [stderr] Downloaded naga v23.1.0 [INFO] [stderr] Downloaded epaint_default_fonts v0.30.0 [INFO] [stderr] Downloaded metal v0.29.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9f0532e40dfc3e028092ebd8d74ab0951643432343b543138ecc4c0ff08a7391 [INFO] running `Command { std: "docker" "start" "-a" "9f0532e40dfc3e028092ebd8d74ab0951643432343b543138ecc4c0ff08a7391", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9f0532e40dfc3e028092ebd8d74ab0951643432343b543138ecc4c0ff08a7391", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9f0532e40dfc3e028092ebd8d74ab0951643432343b543138ecc4c0ff08a7391", kill_on_drop: false }` [INFO] [stdout] 9f0532e40dfc3e028092ebd8d74ab0951643432343b543138ecc4c0ff08a7391 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] aa33218d04a5a3fe01987f6549989cfed8c0d4df78fcff5cc0e32378888a73a8 [INFO] running `Command { std: "docker" "start" "-a" "aa33218d04a5a3fe01987f6549989cfed8c0d4df78fcff5cc0e32378888a73a8", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.93 [INFO] [stderr] Compiling unicode-ident v1.0.9 [INFO] [stderr] Checking once_cell v1.20.2 [INFO] [stderr] Compiling libc v0.2.169 [INFO] [stderr] Checking bitflags v2.8.0 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Checking linux-raw-sys v0.4.15 [INFO] [stderr] Compiling serde v1.0.217 [INFO] [stderr] Compiling memchr v2.7.1 [INFO] [stderr] Checking log v0.4.19 [INFO] [stderr] Compiling hashbrown v0.15.2 [INFO] [stderr] Compiling pkg-config v0.3.27 [INFO] [stderr] Compiling toml_datetime v0.6.8 [INFO] [stderr] Compiling winnow v0.7.1 [INFO] [stderr] Checking libloading v0.8.0 [INFO] [stderr] Compiling slab v0.4.8 [INFO] [stderr] Checking smallvec v1.10.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.16 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Checking dlib v0.5.2 [INFO] [stderr] Compiling wayland-backend v0.3.8 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling wayland-client v0.31.8 [INFO] [stderr] Checking futures-lite v2.6.0 [INFO] [stderr] Compiling memoffset v0.9.1 [INFO] [stderr] Compiling endi v1.1.0 [INFO] [stderr] Checking atomic-waker v1.1.1 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Checking ttf-parser v0.19.0 [INFO] [stderr] Checking cpufeatures v0.2.8 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Compiling ahash v0.8.11 [INFO] [stderr] Checking piper v0.2.4 [INFO] [stderr] Checking ab_glyph_rasterizer v0.1.8 [INFO] [stderr] Compiling xml-rs v0.8.14 [INFO] [stderr] Compiling quote v1.0.38 [INFO] [stderr] Compiling indexmap v2.7.1 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Compiling lock_api v0.4.10 [INFO] [stderr] Compiling wayland-sys v0.31.6 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Compiling quick-xml v0.37.2 [INFO] [stderr] Compiling x11-dl v2.21.0 [INFO] [stderr] Compiling syn v2.0.98 [INFO] [stderr] Checking event-listener v5.4.0 [INFO] [stderr] Checking cursor-icon v1.1.0 [INFO] [stderr] Compiling smithay-client-toolkit v0.19.2 [INFO] [stderr] Compiling parking_lot_core v0.9.8 [INFO] [stderr] Checking event-listener-strategy v0.5.3 [INFO] [stderr] Checking arrayref v0.3.7 [INFO] [stderr] Checking async-channel v2.3.1 [INFO] [stderr] Checking async-lock v3.4.0 [INFO] [stderr] Checking async-executor v1.13.1 [INFO] [stderr] Checking async-broadcast v0.7.2 [INFO] [stderr] Checking accesskit v0.17.1 [INFO] [stderr] Checking strict-num v0.1.1 [INFO] [stderr] Checking blocking v1.6.1 [INFO] [stderr] Checking foldhash v0.1.4 [INFO] [stderr] Checking x11rb-protocol v0.13.1 [INFO] [stderr] Checking immutable-chunkmap v2.0.6 [INFO] [stderr] Compiling winit v0.30.8 [INFO] [stderr] Checking raw-window-handle v0.6.2 [INFO] [stderr] Checking simd-adler32 v0.3.5 [INFO] [stderr] Compiling wayland-scanner v0.31.6 [INFO] [stderr] Compiling crc32fast v1.3.2 [INFO] [stderr] Checking xkbcommon-dl v0.4.2 [INFO] [stderr] Checking profiling v1.0.16 [INFO] [stderr] Checking nohash-hasher v0.2.0 [INFO] [stderr] Checking async-fs v2.1.2 [INFO] [stderr] Checking dpi v0.1.1 [INFO] [stderr] Checking smol_str v0.2.2 [INFO] [stderr] Checking epaint_default_fonts v0.30.0 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking accesskit_consumer v0.26.0 [INFO] [stderr] Checking miniz_oxide v0.7.1 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Compiling glutin v0.32.2 [INFO] [stderr] Compiling num-traits v0.2.15 [INFO] [stderr] Checking url v2.4.0 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Compiling gl_generator v0.14.0 [INFO] [stderr] Checking fdeflate v0.3.0 [INFO] [stderr] Checking owned_ttf_parser v0.19.0 [INFO] [stderr] Compiling glutin-winit v0.5.0 [INFO] [stderr] Checking home v0.5.5 [INFO] [stderr] Checking aho-corasick v1.0.2 [INFO] [stderr] Checking regex-syntax v0.8.2 [INFO] [stderr] Checking getrandom v0.2.10 [INFO] [stderr] Checking xdg-home v1.3.0 [INFO] [stderr] Checking ab_glyph v0.2.21 [INFO] [stderr] Checking memmap2 v0.9.5 [INFO] [stderr] Checking flate2 v1.0.26 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling glutin_glx_sys v0.6.1 [INFO] [stderr] Compiling glutin_egl_sys v0.7.1 [INFO] [stderr] Checking xcursor v0.3.4 [INFO] [stderr] Checking png v0.17.9 [INFO] [stderr] Checking webbrowser v1.0.3 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling toml_edit v0.22.23 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking glow v0.16.0 [INFO] [stderr] Checking web-time v1.1.0 [INFO] [stderr] Compiling litrs v0.4.1 [INFO] [stderr] Checking levenshtein v1.0.5 [INFO] [stderr] Compiling document-features v0.2.10 [INFO] [stderr] Checking regex-automata v0.4.6 [INFO] [stderr] Compiling zvariant_utils v2.1.0 [INFO] [stderr] Compiling proc-macro-crate v3.2.0 [INFO] [stderr] Checking regex v1.10.3 [INFO] [stderr] Compiling serde_derive v1.0.217 [INFO] [stderr] Compiling enumflags2_derive v0.7.11 [INFO] [stderr] Compiling tracing-attributes v0.1.28 [INFO] [stderr] Compiling zvariant_derive v4.2.0 [INFO] [stderr] Compiling bytemuck_derive v1.4.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling async-trait v0.1.86 [INFO] [stderr] Compiling zbus_macros v4.4.0 [INFO] [stderr] Compiling serde_repr v0.1.19 [INFO] [stderr] Checking bytemuck v1.21.0 [INFO] [stderr] Checking wayland-csd-frame v0.3.0 [INFO] [stderr] Checking tiny-skia-path v0.11.4 [INFO] [stderr] Checking emath v0.30.0 [INFO] [stderr] Checking image v0.25.5 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking polling v3.7.4 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tiny-skia v0.11.4 [INFO] [stderr] Checking async-io v2.4.0 [INFO] [stderr] Checking calloop v0.13.0 [INFO] [stderr] Checking ecolor v0.30.0 [INFO] [stderr] Checking epaint v0.30.0 [INFO] [stderr] Checking wayland-protocols v0.32.6 [INFO] [stderr] Checking calloop-wayland-source v0.3.0 [INFO] [stderr] Checking wayland-cursor v0.31.8 [INFO] [stderr] Checking egui v0.30.0 [INFO] [stderr] Compiling enumflags2 v0.7.11 [INFO] [stderr] Compiling quick-xml v0.30.0 [INFO] [stderr] Checking egui_glow v0.30.0 [INFO] [stderr] Compiling zvariant v4.2.0 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking wayland-protocols-wlr v0.3.6 [INFO] [stderr] Checking wayland-protocols-plasma v0.3.6 [INFO] [stderr] Compiling zbus_names v3.0.0 [INFO] [stderr] Checking x11rb v0.13.1 [INFO] [stderr] Compiling zbus_xml v4.0.0 [INFO] [stderr] Checking sctk-adwaita v0.10.1 [INFO] [stderr] Checking smithay-clipboard v0.7.2 [INFO] [stderr] Checking zbus v4.4.0 [INFO] [stderr] Compiling zbus-lockstep v0.4.4 [INFO] [stderr] Compiling zbus-lockstep-macros v0.4.4 [INFO] [stderr] Checking arboard v3.4.1 [INFO] [stderr] Checking atspi-common v0.6.0 [INFO] [stderr] Checking atspi-proxies v0.6.0 [INFO] [stderr] Checking accesskit_atspi_common v0.10.1 [INFO] [stderr] Checking atspi-connection v0.6.0 [INFO] [stderr] Checking atspi v0.22.0 [INFO] [stderr] Checking accesskit_unix v0.13.1 [INFO] [stderr] Checking accesskit_winit v0.23.1 [INFO] [stderr] Checking egui-winit v0.30.0 [INFO] [stderr] Checking eframe v0.30.0 [INFO] [stderr] Checking french v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `pc` [INFO] [stdout] --> src/practice.rs:112:66 [INFO] [stdout] | [INFO] [stdout] 112 | ...s, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je,... [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, _pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, _pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_je` [INFO] [stdout] --> src/practice.rs:112:70 [INFO] [stdout] | [INFO] [stdout] 112 | ..., pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_t... [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, _imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, _imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_tu` [INFO] [stdout] --> src/practice.rs:112:78 [INFO] [stdout] | [INFO] [stdout] 112 | ...p_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_i... [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, _imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, _imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_il` [INFO] [stdout] --> src/practice.rs:112:86 [INFO] [stdout] | [INFO] [stdout] 112 | ...p_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_n... [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, _imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, _imp_il, imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_nous` [INFO] [stdout] --> src/practice.rs:112:94 [INFO] [stdout] | [INFO] [stdout] 112 | ..._il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_... [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, _imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, _imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_vous` [INFO] [stdout] --> src/practice.rs:112:104 [INFO] [stdout] | [INFO] [stdout] 112 | ...ous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_... [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, _imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, _imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_ils` [INFO] [stdout] --> src/practice.rs:112:114 [INFO] [stdout] | [INFO] [stdout] 112 | ...vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = f... [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, _imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, _imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pc` [INFO] [stdout] --> src/practice.rs:112:66 [INFO] [stdout] | [INFO] [stdout] 112 | ...s, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je,... [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, _pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, _pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_je` [INFO] [stdout] --> src/practice.rs:112:70 [INFO] [stdout] | [INFO] [stdout] 112 | ..., pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_t... [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, _imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, _imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_tu` [INFO] [stdout] --> src/practice.rs:112:78 [INFO] [stdout] | [INFO] [stdout] 112 | ...p_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_i... [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, _imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, _imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_il` [INFO] [stdout] --> src/practice.rs:112:86 [INFO] [stdout] | [INFO] [stdout] 112 | ...p_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_n... [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, _imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, _imp_il, imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_nous` [INFO] [stdout] --> src/practice.rs:112:94 [INFO] [stdout] | [INFO] [stdout] 112 | ..._il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_... [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, _imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, _imp_nous, imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_vous` [INFO] [stdout] --> src/practice.rs:112:104 [INFO] [stdout] | [INFO] [stdout] 112 | ...ous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_... [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, _imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, _imp_vous, imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `imp_ils` [INFO] [stdout] --> src/practice.rs:112:114 [INFO] [stdout] | [INFO] [stdout] 112 | ...vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = f... [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 112 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, _imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, _imp_ils)) = forms.clone(); [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pc` [INFO] [stdout] --> src/sentence.rs:13:66 [INFO] [stdout] | [INFO] [stdout] 13 | ...us, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je,... [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 13 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, _pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, _pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = &forms; [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pc` [INFO] [stdout] --> src/sentence.rs:13:66 [INFO] [stdout] | [INFO] [stdout] 13 | ...us, ils, pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, pc, imp_je,... [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 13 | let (VerbForms::Regular(je, tu, il, nous, vous, ils, _pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils) | VerbForms::Irregular(je, tu, il, nous, vous, ils, _pc, imp_je, imp_tu, imp_il, imp_nous, imp_vous, imp_ils)) = &forms; [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/search.rs:140:46 [INFO] [stdout] | [INFO] [stdout] 140 | ...g: &str) -> (String, String, String, String, String, String, String, String, String, String, String, String, String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/search.rs:140:46 [INFO] [stdout] | [INFO] [stdout] 140 | ...g: &str) -> (String, String, String, String, String, String, String, String, String, String, String, String, String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:731:56 [INFO] [stdout] | [INFO] [stdout] 731 | if let Some(string) = item.language_string(&query.language) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `query.language` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/search.rs:766:28 [INFO] [stdout] | [INFO] [stdout] 766 | ... if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 766 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 766 + if !(best_matches.contains(&list_item) || query.match_length && length != string.len()) { [INFO] [stdout] | [INFO] [stdout] 766 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 766 + if (length == string.len() || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/search.rs:766:28 [INFO] [stdout] | [INFO] [stdout] 766 | ... if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 766 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 766 + if !(query.match_length && length != string.len()) && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] 766 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 766 + if !query.match_length || length == string.len() && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:762:58 [INFO] [stdout] | [INFO] [stdout] 762 | if let Some(strings) = item.language_strings(&query.language) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `query.language` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:767:56 [INFO] [stdout] | [INFO] [stdout] 767 | ... let distance = levenshtein(&query.string, &list_item.0); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `query.string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:767:71 [INFO] [stdout] | [INFO] [stdout] 767 | ... let distance = levenshtein(&query.string, &list_item.0); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `list_item.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/search.rs:797:28 [INFO] [stdout] | [INFO] [stdout] 797 | ... if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 797 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 797 + if !(best_matches.contains(&list_item) || query.match_length && length != string.len()) { [INFO] [stdout] | [INFO] [stdout] 797 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 797 + if (length == string.len() || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/search.rs:797:28 [INFO] [stdout] | [INFO] [stdout] 797 | ... if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 797 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 797 + if !(query.match_length && length != string.len()) && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] 797 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 797 + if !query.match_length || length == string.len() && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:793:58 [INFO] [stdout] | [INFO] [stdout] 793 | if let Some(strings) = item.language_strings(&query.language) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `query.language` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:798:56 [INFO] [stdout] | [INFO] [stdout] 798 | ... let distance = levenshtein(&query.string, &list_item.0); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `query.string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:798:71 [INFO] [stdout] | [INFO] [stdout] 798 | ... let distance = levenshtein(&query.string, &list_item.0); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `list_item.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/search.rs:880:9 [INFO] [stdout] | [INFO] [stdout] 880 | / if let Some(i) = self.get_index(uid) { [INFO] [stdout] 881 | | Some(self.items[i].clone()) [INFO] [stdout] 882 | | } else { [INFO] [stdout] 883 | | None [INFO] [stdout] 884 | | } [INFO] [stdout] | |_________^ help: try: `self.get_index(uid).map(|i| self.items[i].clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/ui.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | / enum Tab { [INFO] [stdout] 16 | | Words, [INFO] [stdout] 17 | | Sentences, [INFO] [stdout] 18 | | Details(u32), [INFO] [stdout] 19 | | Practice(PracticeState), [INFO] [stdout] | | ----------------------- the largest variant contains at least 480 bytes [INFO] [stdout] ... | [INFO] [stdout] 23 | | Example(Vec<(String, Item)>), [INFO] [stdout] | | ---------------------------- the second-largest variant contains at least 24 bytes [INFO] [stdout] 24 | | } [INFO] [stdout] | |_^ the entire enum is at least 480 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 19 - Practice(PracticeState), [INFO] [stdout] 19 + Practice(Box), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/ui.rs:27:1 [INFO] [stdout] | [INFO] [stdout] 27 | / enum PopupWindow { [INFO] [stdout] 28 | | None, [INFO] [stdout] 29 | | AddWord(String, String, Category, String, Option), [INFO] [stdout] | | ------------------------------------------------------ the largest variant contains at least 424 bytes [INFO] [stdout] 30 | | AddSentence(String, String, String, Option), [INFO] [stdout] | | ------------------------------------------------ the second-largest variant contains at least 80 bytes [INFO] [stdout] ... | [INFO] [stdout] 34 | | DeleteGroup(usize), [INFO] [stdout] 35 | | } [INFO] [stdout] | |_^ the entire enum is at least 424 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 29 - AddWord(String, String, Category, String, Option), [INFO] [stdout] 29 + AddWord(String, String, Box, String, Option), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/ui.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 121 | / let app = Self { [INFO] [stdout] 122 | | search_words, [INFO] [stdout] 123 | | search_sentences, [INFO] [stdout] 124 | | query_string: "".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 139 | | reset_scroll: false, [INFO] [stdout] 140 | | }; [INFO] [stdout] | |__________- unnecessary `let` binding [INFO] [stdout] 141 | app [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 121 ~ [INFO] [stdout] 122 ~ Self { [INFO] [stdout] 123 + search_words, [INFO] [stdout] 124 + search_sentences, [INFO] [stdout] 125 + query_string: "".to_string(), [INFO] [stdout] 126 + tab: Tab::Words, [INFO] [stdout] 127 + results_search: vec![], [INFO] [stdout] 128 + num_answers: 0, [INFO] [stdout] 129 + language: Language::French, [INFO] [stdout] 130 + popup: PopupWindow::None, [INFO] [stdout] 131 + search_words_file, [INFO] [stdout] 132 + search_sentences_file, [INFO] [stdout] 133 + categories: SearchCategories::new(), [INFO] [stdout] 134 + min_num_answers: 0, [INFO] [stdout] 135 + result_explain: vec![], [INFO] [stdout] 136 + practice: Practice::new(), [INFO] [stdout] 137 + practice_groups, [INFO] [stdout] 138 + practice_groups_file: practice_file, [INFO] [stdout] 139 + debug: false, [INFO] [stdout] 140 + reset_scroll: false, [INFO] [stdout] 141 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:731:56 [INFO] [stdout] | [INFO] [stdout] 731 | if let Some(string) = item.language_string(&query.language) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `query.language` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/search.rs:766:28 [INFO] [stdout] | [INFO] [stdout] 766 | ... if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 766 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 766 + if !(best_matches.contains(&list_item) || query.match_length && length != string.len()) { [INFO] [stdout] | [INFO] [stdout] 766 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 766 + if (length == string.len() || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/search.rs:766:28 [INFO] [stdout] | [INFO] [stdout] 766 | ... if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 766 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 766 + if !(query.match_length && length != string.len()) && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] 766 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 766 + if !query.match_length || length == string.len() && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:149:20 [INFO] [stdout] | [INFO] [stdout] 149 | if query.string.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!query.string.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:762:58 [INFO] [stdout] | [INFO] [stdout] 762 | if let Some(strings) = item.language_strings(&query.language) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `query.language` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:157:20 [INFO] [stdout] | [INFO] [stdout] 157 | if query.string.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!query.string.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ui.rs:175:9 [INFO] [stdout] | [INFO] [stdout] 175 | / match &mut self.tab { [INFO] [stdout] 176 | | Tab::Practice(ref mut state) => { [INFO] [stdout] 177 | | if let PracticeState::Question(question) = state { [INFO] [stdout] 178 | | if self.query_string == question.answer { [INFO] [stdout] ... | [INFO] [stdout] 191 | | _ => {} [INFO] [stdout] 192 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 175 ~ if let Tab::Practice(ref mut state) = &mut self.tab { [INFO] [stdout] 176 + if let PracticeState::Question(question) = state { [INFO] [stdout] 177 + if self.query_string == question.answer { [INFO] [stdout] 178 + self.query_string.clear(); [INFO] [stdout] 179 + if self.practice.answer(true) { [INFO] [stdout] 180 + *state = PracticeState::AskContinue; [INFO] [stdout] 181 + } else { [INFO] [stdout] 182 + *state = PracticeState::Question(self.practice.get_question(&self.search_words, &self.search_sentences)); [INFO] [stdout] 183 + } [INFO] [stdout] 184 + } else { [INFO] [stdout] 185 + let _ = self.practice.answer(false); [INFO] [stdout] 186 + *state = PracticeState::Wrong(question.string.clone(), question.answer.clone(), self.query_string.clone(), levenshtein(&question.answer, &self.query_string), question.item.clone()); [INFO] [stdout] 187 + } [INFO] [stdout] 188 + } [INFO] [stdout] 189 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:767:56 [INFO] [stdout] | [INFO] [stdout] 767 | ... let distance = levenshtein(&query.string, &list_item.0); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `query.string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:767:71 [INFO] [stdout] | [INFO] [stdout] 767 | ... let distance = levenshtein(&query.string, &list_item.0); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `list_item.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/search.rs:797:28 [INFO] [stdout] | [INFO] [stdout] 797 | ... if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 797 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 797 + if !(best_matches.contains(&list_item) || query.match_length && length != string.len()) { [INFO] [stdout] | [INFO] [stdout] 797 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 797 + if (length == string.len() || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/search.rs:797:28 [INFO] [stdout] | [INFO] [stdout] 797 | ... if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 797 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 797 + if !(query.match_length && length != string.len()) && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] 797 - if ((query.match_length && length == string.len()) || !query.match_length) && !best_matches.contains(&list_item) { [INFO] [stdout] 797 + if !query.match_length || length == string.len() && !best_matches.contains(&list_item) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:793:58 [INFO] [stdout] | [INFO] [stdout] 793 | if let Some(strings) = item.language_strings(&query.language) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `query.language` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:798:56 [INFO] [stdout] | [INFO] [stdout] 798 | ... let distance = levenshtein(&query.string, &list_item.0); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `query.string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/search.rs:798:71 [INFO] [stdout] | [INFO] [stdout] 798 | ... let distance = levenshtein(&query.string, &list_item.0); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `list_item.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/ui.rs:295:9 [INFO] [stdout] | [INFO] [stdout] 295 | / match self.tab { [INFO] [stdout] 296 | | Tab::Words => { [INFO] [stdout] 297 | | egui::SidePanel::left("side_panel").resizable(false).show(ctx, |ui| { [INFO] [stdout] 298 | | ui.heading("Categories"); [INFO] [stdout] ... | [INFO] [stdout] 316 | | _ => {} [INFO] [stdout] 317 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 295 ~ if self.tab == Tab::Words { [INFO] [stdout] 296 + egui::SidePanel::left("side_panel").resizable(false).show(ctx, |ui| { [INFO] [stdout] 297 + ui.heading("Categories"); [INFO] [stdout] 298 + [INFO] [stdout] 299 + if ui.checkbox(&mut self.categories.noun, "Nouns").changed() | [INFO] [stdout] 300 + ui.checkbox(&mut self.categories.verb, "Verbs").changed() | [INFO] [stdout] 301 + ui.checkbox(&mut self.categories.adjective, "Adjectives").changed() | [INFO] [stdout] 302 + ui.checkbox(&mut self.categories.adverb, "Adverbs").changed() | [INFO] [stdout] 303 + ui.checkbox(&mut self.categories.article, "Articles").changed() | [INFO] [stdout] 304 + ui.checkbox(&mut self.categories.conjunction, "Conjunctions").changed() | [INFO] [stdout] 305 + ui.checkbox(&mut self.categories.interjection, "Interjections").changed() | [INFO] [stdout] 306 + ui.checkbox(&mut self.categories.preposition, "Prepositions").changed() | [INFO] [stdout] 307 + ui.checkbox(&mut self.categories.pronoun, "Pronouns").changed() | [INFO] [stdout] 308 + ui.checkbox(&mut self.categories.number, "Numbers").changed() | [INFO] [stdout] 309 + ui.checkbox(&mut self.categories.other, "Other").changed() { [INFO] [stdout] 310 + self.reset_scroll = true; [INFO] [stdout] 311 + self.gen_results(); [INFO] [stdout] 312 + } [INFO] [stdout] 313 + }); [INFO] [stdout] 314 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/search.rs:880:9 [INFO] [stdout] | [INFO] [stdout] 880 | / if let Some(i) = self.get_index(uid) { [INFO] [stdout] 881 | | Some(self.items[i].clone()) [INFO] [stdout] 882 | | } else { [INFO] [stdout] 883 | | None [INFO] [stdout] 884 | | } [INFO] [stdout] | |_________^ help: try: `self.get_index(uid).map(|i| self.items[i].clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/ui.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | / enum Tab { [INFO] [stdout] 16 | | Words, [INFO] [stdout] 17 | | Sentences, [INFO] [stdout] 18 | | Details(u32), [INFO] [stdout] 19 | | Practice(PracticeState), [INFO] [stdout] | | ----------------------- the largest variant contains at least 480 bytes [INFO] [stdout] ... | [INFO] [stdout] 23 | | Example(Vec<(String, Item)>), [INFO] [stdout] | | ---------------------------- the second-largest variant contains at least 24 bytes [INFO] [stdout] 24 | | } [INFO] [stdout] | |_^ the entire enum is at least 480 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 19 - Practice(PracticeState), [INFO] [stdout] 19 + Practice(Box), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/ui.rs:27:1 [INFO] [stdout] | [INFO] [stdout] 27 | / enum PopupWindow { [INFO] [stdout] 28 | | None, [INFO] [stdout] 29 | | AddWord(String, String, Category, String, Option), [INFO] [stdout] | | ------------------------------------------------------ the largest variant contains at least 424 bytes [INFO] [stdout] 30 | | AddSentence(String, String, String, Option), [INFO] [stdout] | | ------------------------------------------------ the second-largest variant contains at least 80 bytes [INFO] [stdout] ... | [INFO] [stdout] 34 | | DeleteGroup(usize), [INFO] [stdout] 35 | | } [INFO] [stdout] | |_^ the entire enum is at least 424 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 29 - AddWord(String, String, Category, String, Option), [INFO] [stdout] 29 + AddWord(String, String, Box, String, Option), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/ui.rs:429:79 [INFO] [stdout] | [INFO] [stdout] 429 | ... ui.label(format!("{} adjective", adjective.to_string())); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/ui.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 121 | / let app = Self { [INFO] [stdout] 122 | | search_words, [INFO] [stdout] 123 | | search_sentences, [INFO] [stdout] 124 | | query_string: "".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 139 | | reset_scroll: false, [INFO] [stdout] 140 | | }; [INFO] [stdout] | |__________- unnecessary `let` binding [INFO] [stdout] 141 | app [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 121 ~ [INFO] [stdout] 122 ~ Self { [INFO] [stdout] 123 + search_words, [INFO] [stdout] 124 + search_sentences, [INFO] [stdout] 125 + query_string: "".to_string(), [INFO] [stdout] 126 + tab: Tab::Words, [INFO] [stdout] 127 + results_search: vec![], [INFO] [stdout] 128 + num_answers: 0, [INFO] [stdout] 129 + language: Language::French, [INFO] [stdout] 130 + popup: PopupWindow::None, [INFO] [stdout] 131 + search_words_file, [INFO] [stdout] 132 + search_sentences_file, [INFO] [stdout] 133 + categories: SearchCategories::new(), [INFO] [stdout] 134 + min_num_answers: 0, [INFO] [stdout] 135 + result_explain: vec![], [INFO] [stdout] 136 + practice: Practice::new(), [INFO] [stdout] 137 + practice_groups, [INFO] [stdout] 138 + practice_groups_file: practice_file, [INFO] [stdout] 139 + debug: false, [INFO] [stdout] 140 + reset_scroll: false, [INFO] [stdout] 141 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:149:20 [INFO] [stdout] | [INFO] [stdout] 149 | if query.string.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!query.string.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:157:20 [INFO] [stdout] | [INFO] [stdout] 157 | if query.string.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!query.string.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ui.rs:175:9 [INFO] [stdout] | [INFO] [stdout] 175 | / match &mut self.tab { [INFO] [stdout] 176 | | Tab::Practice(ref mut state) => { [INFO] [stdout] 177 | | if let PracticeState::Question(question) = state { [INFO] [stdout] 178 | | if self.query_string == question.answer { [INFO] [stdout] ... | [INFO] [stdout] 191 | | _ => {} [INFO] [stdout] 192 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 175 ~ if let Tab::Practice(ref mut state) = &mut self.tab { [INFO] [stdout] 176 + if let PracticeState::Question(question) = state { [INFO] [stdout] 177 + if self.query_string == question.answer { [INFO] [stdout] 178 + self.query_string.clear(); [INFO] [stdout] 179 + if self.practice.answer(true) { [INFO] [stdout] 180 + *state = PracticeState::AskContinue; [INFO] [stdout] 181 + } else { [INFO] [stdout] 182 + *state = PracticeState::Question(self.practice.get_question(&self.search_words, &self.search_sentences)); [INFO] [stdout] 183 + } [INFO] [stdout] 184 + } else { [INFO] [stdout] 185 + let _ = self.practice.answer(false); [INFO] [stdout] 186 + *state = PracticeState::Wrong(question.string.clone(), question.answer.clone(), self.query_string.clone(), levenshtein(&question.answer, &self.query_string), question.item.clone()); [INFO] [stdout] 187 + } [INFO] [stdout] 188 + } [INFO] [stdout] 189 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:593:50 [INFO] [stdout] | [INFO] [stdout] 593 | ... ui.label(&format!("1/{}", item.swedish.clone().unwrap())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("1/{}", item.swedish.clone().unwrap())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:623:46 [INFO] [stdout] | [INFO] [stdout] 623 | ... ui.label(&format!("{} pronoun", pronoun.to_string())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{} pronoun", pronoun.to_string())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/ui.rs:623:76 [INFO] [stdout] | [INFO] [stdout] 623 | ... ui.label(&format!("{} pronoun", pronoun.to_string())); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/ui.rs:295:9 [INFO] [stdout] | [INFO] [stdout] 295 | / match self.tab { [INFO] [stdout] 296 | | Tab::Words => { [INFO] [stdout] 297 | | egui::SidePanel::left("side_panel").resizable(false).show(ctx, |ui| { [INFO] [stdout] 298 | | ui.heading("Categories"); [INFO] [stdout] ... | [INFO] [stdout] 316 | | _ => {} [INFO] [stdout] 317 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 295 ~ if self.tab == Tab::Words { [INFO] [stdout] 296 + egui::SidePanel::left("side_panel").resizable(false).show(ctx, |ui| { [INFO] [stdout] 297 + ui.heading("Categories"); [INFO] [stdout] 298 + [INFO] [stdout] 299 + if ui.checkbox(&mut self.categories.noun, "Nouns").changed() | [INFO] [stdout] 300 + ui.checkbox(&mut self.categories.verb, "Verbs").changed() | [INFO] [stdout] 301 + ui.checkbox(&mut self.categories.adjective, "Adjectives").changed() | [INFO] [stdout] 302 + ui.checkbox(&mut self.categories.adverb, "Adverbs").changed() | [INFO] [stdout] 303 + ui.checkbox(&mut self.categories.article, "Articles").changed() | [INFO] [stdout] 304 + ui.checkbox(&mut self.categories.conjunction, "Conjunctions").changed() | [INFO] [stdout] 305 + ui.checkbox(&mut self.categories.interjection, "Interjections").changed() | [INFO] [stdout] 306 + ui.checkbox(&mut self.categories.preposition, "Prepositions").changed() | [INFO] [stdout] 307 + ui.checkbox(&mut self.categories.pronoun, "Pronouns").changed() | [INFO] [stdout] 308 + ui.checkbox(&mut self.categories.number, "Numbers").changed() | [INFO] [stdout] 309 + ui.checkbox(&mut self.categories.other, "Other").changed() { [INFO] [stdout] 310 + self.reset_scroll = true; [INFO] [stdout] 311 + self.gen_results(); [INFO] [stdout] 312 + } [INFO] [stdout] 313 + }); [INFO] [stdout] 314 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ui.rs:741:58 [INFO] [stdout] | [INFO] [stdout] 741 | ... ui.label(format!("{}", item.tooltip())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `item.tooltip().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ui.rs:785:41 [INFO] [stdout] | [INFO] [stdout] 785 | / ... if row_range.end == self.results_search.len() + 1 { [INFO] [stdout] 786 | | ... if ui.add_enabled(self.results_search.len() == self.num_answers, egui::Button::new("Load more")).clicked() { [INFO] [stdout] 787 | | ... self.min_num_answers += 100; [INFO] [stdout] 788 | | ... } [INFO] [stdout] 789 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 785 ~ if row_range.end == self.results_search.len() + 1 [INFO] [stdout] 786 ~ && ui.add_enabled(self.results_search.len() == self.num_answers, egui::Button::new("Load more")).clicked() { [INFO] [stdout] 787 | self.min_num_answers += 100; [INFO] [stdout] 788 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ui.rs:812:58 [INFO] [stdout] | [INFO] [stdout] 812 | ... ui.label(format!("{}", item.tooltip())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `item.tooltip().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/ui.rs:429:79 [INFO] [stdout] | [INFO] [stdout] 429 | ... ui.label(format!("{} adjective", adjective.to_string())); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ui.rs:856:41 [INFO] [stdout] | [INFO] [stdout] 856 | / ... if row_range.end == self.results_search.len() + 1 { [INFO] [stdout] 857 | | ... if ui.add_enabled(self.results_search.len() == self.num_answers, egui::Button::new("Load more")).clicked() { [INFO] [stdout] 858 | | ... self.min_num_answers += 100; [INFO] [stdout] 859 | | ... } [INFO] [stdout] 860 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 856 ~ if row_range.end == self.results_search.len() + 1 [INFO] [stdout] 857 ~ && ui.add_enabled(self.results_search.len() == self.num_answers, egui::Button::new("Load more")).clicked() { [INFO] [stdout] 858 | self.min_num_answers += 100; [INFO] [stdout] 859 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ui.rs:920:42 [INFO] [stdout] | [INFO] [stdout] 920 | ... ui.label(format!("{}", item.tooltip())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `item.tooltip().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:593:50 [INFO] [stdout] | [INFO] [stdout] 593 | ... ui.label(&format!("1/{}", item.swedish.clone().unwrap())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("1/{}", item.swedish.clone().unwrap())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:623:46 [INFO] [stdout] | [INFO] [stdout] 623 | ... ui.label(&format!("{} pronoun", pronoun.to_string())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{} pronoun", pronoun.to_string())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/ui.rs:623:76 [INFO] [stdout] | [INFO] [stdout] 623 | ... ui.label(&format!("{} pronoun", pronoun.to_string())); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:1001:50 [INFO] [stdout] | [INFO] [stdout] 1001 | ... ui.label(&format!("{}?", part.matched[part.chosen].0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}?", part.matched[part.chosen].0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ui.rs:741:58 [INFO] [stdout] | [INFO] [stdout] 741 | ... ui.label(format!("{}", item.tooltip())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `item.tooltip().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:1033:86 [INFO] [stdout] | [INFO] [stdout] 1033 | ... ui.selectable_value(&mut part.chosen, i, &format!("{}?", matched.0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}?", matched.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ui.rs:785:41 [INFO] [stdout] | [INFO] [stdout] 785 | / ... if row_range.end == self.results_search.len() + 1 { [INFO] [stdout] 786 | | ... if ui.add_enabled(self.results_search.len() == self.num_answers, egui::Button::new("Load more")).clicked() { [INFO] [stdout] 787 | | ... self.min_num_answers += 100; [INFO] [stdout] 788 | | ... } [INFO] [stdout] 789 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 785 ~ if row_range.end == self.results_search.len() + 1 [INFO] [stdout] 786 ~ && ui.add_enabled(self.results_search.len() == self.num_answers, egui::Button::new("Load more")).clicked() { [INFO] [stdout] 787 | self.min_num_answers += 100; [INFO] [stdout] 788 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:1084:50 [INFO] [stdout] | [INFO] [stdout] 1084 | ... ui.label(&format!("{}?", text)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}?", text)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ui.rs:812:58 [INFO] [stdout] | [INFO] [stdout] 812 | ... ui.label(format!("{}", item.tooltip())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `item.tooltip().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ui.rs:856:41 [INFO] [stdout] | [INFO] [stdout] 856 | / ... if row_range.end == self.results_search.len() + 1 { [INFO] [stdout] 857 | | ... if ui.add_enabled(self.results_search.len() == self.num_answers, egui::Button::new("Load more")).clicked() { [INFO] [stdout] 858 | | ... self.min_num_answers += 100; [INFO] [stdout] 859 | | ... } [INFO] [stdout] 860 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 856 ~ if row_range.end == self.results_search.len() + 1 [INFO] [stdout] 857 ~ && ui.add_enabled(self.results_search.len() == self.num_answers, egui::Button::new("Load more")).clicked() { [INFO] [stdout] 858 | self.min_num_answers += 100; [INFO] [stdout] 859 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ui.rs:920:42 [INFO] [stdout] | [INFO] [stdout] 920 | ... ui.label(format!("{}", item.tooltip())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `item.tooltip().to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:1001:50 [INFO] [stdout] | [INFO] [stdout] 1001 | ... ui.label(&format!("{}?", part.matched[part.chosen].0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}?", part.matched[part.chosen].0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:1033:86 [INFO] [stdout] | [INFO] [stdout] 1033 | ... ui.selectable_value(&mut part.chosen, i, &format!("{}?", matched.0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}?", matched.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1375:55 [INFO] [stdout] | [INFO] [stdout] 1375 | ... changed = &any_verb; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `any_verb` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1381:55 [INFO] [stdout] | [INFO] [stdout] 1381 | ... changed = &je; [INFO] [stdout] | ^^^ help: change this to: `je` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1387:55 [INFO] [stdout] | [INFO] [stdout] 1387 | ... changed = &tu; [INFO] [stdout] | ^^^ help: change this to: `tu` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1393:55 [INFO] [stdout] | [INFO] [stdout] 1393 | ... changed = &il; [INFO] [stdout] | ^^^ help: change this to: `il` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1399:55 [INFO] [stdout] | [INFO] [stdout] 1399 | ... changed = &nous; [INFO] [stdout] | ^^^^^ help: change this to: `nous` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1405:55 [INFO] [stdout] | [INFO] [stdout] 1405 | ... changed = &vous; [INFO] [stdout] | ^^^^^ help: change this to: `vous` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1411:55 [INFO] [stdout] | [INFO] [stdout] 1411 | ... changed = &ils; [INFO] [stdout] | ^^^^ help: change this to: `ils` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1418:55 [INFO] [stdout] | [INFO] [stdout] 1418 | ... changed = &pc; [INFO] [stdout] | ^^^ help: change this to: `pc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1425:55 [INFO] [stdout] | [INFO] [stdout] 1425 | ... changed = &imp_je; [INFO] [stdout] | ^^^^^^^ help: change this to: `imp_je` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1431:55 [INFO] [stdout] | [INFO] [stdout] 1431 | ... changed = &imp_tu; [INFO] [stdout] | ^^^^^^^ help: change this to: `imp_tu` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ui.rs:1084:50 [INFO] [stdout] | [INFO] [stdout] 1084 | ... ui.label(&format!("{}?", text)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}?", text)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1437:55 [INFO] [stdout] | [INFO] [stdout] 1437 | ... changed = &imp_il; [INFO] [stdout] | ^^^^^^^ help: change this to: `imp_il` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1443:55 [INFO] [stdout] | [INFO] [stdout] 1443 | ... changed = &imp_nous; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `imp_nous` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1449:55 [INFO] [stdout] | [INFO] [stdout] 1449 | ... changed = &imp_vous; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `imp_vous` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1455:55 [INFO] [stdout] | [INFO] [stdout] 1455 | ... changed = &imp_ils; [INFO] [stdout] | ^^^^^^^^ help: change this to: `imp_ils` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ui.rs:1459:40 [INFO] [stdout] | [INFO] [stdout] 1459 | ... if changed != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!changed.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1571:54 [INFO] [stdout] | [INFO] [stdout] 1571 | ... let mut elision = if let Some(_) = vowel { [INFO] [stdout] | -------^^^^^^^-------- help: try: `if vowel.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1643:64 [INFO] [stdout] | [INFO] [stdout] 1643 | ... let mut do_and_io = if let Some(_) = others { [INFO] [stdout] | -------^^^^^^^--------- help: try: `if others.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1690:63 [INFO] [stdout] | [INFO] [stdout] 1690 | ... let mut bendable = if let Some(_) = others { [INFO] [stdout] | -------^^^^^^^--------- help: try: `if others.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1727:53 [INFO] [stdout] | [INFO] [stdout] 1727 | ... let mut female = if let Some(_) = cardinal_female { [INFO] [stdout] | -------^^^^^^^------------------ help: try: `if cardinal_female.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1775:65 [INFO] [stdout] | [INFO] [stdout] 1775 | ... let mut use_multiplicative = if let Some(_) = multiplicative { [INFO] [stdout] | -------^^^^^^^----------------- help: try: `if multiplicative.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1375:55 [INFO] [stdout] | [INFO] [stdout] 1375 | ... changed = &any_verb; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `any_verb` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1381:55 [INFO] [stdout] | [INFO] [stdout] 1381 | ... changed = &je; [INFO] [stdout] | ^^^ help: change this to: `je` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1792:62 [INFO] [stdout] | [INFO] [stdout] 1792 | ... let mut use_approximate = if let Some(_) = approximate { [INFO] [stdout] | -------^^^^^^^-------------- help: try: `if approximate.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1387:55 [INFO] [stdout] | [INFO] [stdout] 1387 | ... changed = &tu; [INFO] [stdout] | ^^^ help: change this to: `tu` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1393:55 [INFO] [stdout] | [INFO] [stdout] 1393 | ... changed = &il; [INFO] [stdout] | ^^^ help: change this to: `il` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1399:55 [INFO] [stdout] | [INFO] [stdout] 1399 | ... changed = &nous; [INFO] [stdout] | ^^^^^ help: change this to: `nous` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1809:59 [INFO] [stdout] | [INFO] [stdout] 1809 | ... let mut use_fraction = if let Some(_) = fraction { [INFO] [stdout] | -------^^^^^^^----------- help: try: `if fraction.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1405:55 [INFO] [stdout] | [INFO] [stdout] 1405 | ... changed = &vous; [INFO] [stdout] | ^^^^^ help: change this to: `vous` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1821:54 [INFO] [stdout] | [INFO] [stdout] 1821 | ... let mut two = if let Some(_) = fraction_other { [INFO] [stdout] | -------^^^^^^^----------------- help: try: `if fraction_other.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1411:55 [INFO] [stdout] | [INFO] [stdout] 1411 | ... changed = &ils; [INFO] [stdout] | ^^^^ help: change this to: `ils` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1418:55 [INFO] [stdout] | [INFO] [stdout] 1418 | ... changed = &pc; [INFO] [stdout] | ^^^ help: change this to: `pc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1425:55 [INFO] [stdout] | [INFO] [stdout] 1425 | ... changed = &imp_je; [INFO] [stdout] | ^^^^^^^ help: change this to: `imp_je` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1431:55 [INFO] [stdout] | [INFO] [stdout] 1431 | ... changed = &imp_tu; [INFO] [stdout] | ^^^^^^^ help: change this to: `imp_tu` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1849:58 [INFO] [stdout] | [INFO] [stdout] 1849 | ... let swedish_val = if swedish.len() > 0 { Some(swedish.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!swedish.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1850:58 [INFO] [stdout] | [INFO] [stdout] 1850 | ... let english_val = if english.len() > 0 { Some(english.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!english.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1860:58 [INFO] [stdout] | [INFO] [stdout] 1860 | ... let swedish_val = if swedish.len() > 0 { Some(swedish.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!swedish.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1861:58 [INFO] [stdout] | [INFO] [stdout] 1861 | ... let english_val = if english.len() > 0 { Some(english.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!english.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1437:55 [INFO] [stdout] | [INFO] [stdout] 1437 | ... changed = &imp_il; [INFO] [stdout] | ^^^^^^^ help: change this to: `imp_il` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1443:55 [INFO] [stdout] | [INFO] [stdout] 1443 | ... changed = &imp_nous; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `imp_nous` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1449:55 [INFO] [stdout] | [INFO] [stdout] 1449 | ... changed = &imp_vous; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `imp_vous` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ui.rs:1455:55 [INFO] [stdout] | [INFO] [stdout] 1455 | ... changed = &imp_ils; [INFO] [stdout] | ^^^^^^^^ help: change this to: `imp_ils` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ui.rs:1459:40 [INFO] [stdout] | [INFO] [stdout] 1459 | ... if changed != "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!changed.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1896:58 [INFO] [stdout] | [INFO] [stdout] 1896 | ... let swedish_val = if swedish.len() > 0 { Some(swedish.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!swedish.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1897:58 [INFO] [stdout] | [INFO] [stdout] 1897 | ... let english_val = if english.len() > 0 { Some(english.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!english.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1907:58 [INFO] [stdout] | [INFO] [stdout] 1907 | ... let swedish_val = if swedish.len() > 0 { Some(swedish.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!swedish.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1908:58 [INFO] [stdout] | [INFO] [stdout] 1908 | ... let english_val = if english.len() > 0 { Some(english.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!english.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1571:54 [INFO] [stdout] | [INFO] [stdout] 1571 | ... let mut elision = if let Some(_) = vowel { [INFO] [stdout] | -------^^^^^^^-------- help: try: `if vowel.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1643:64 [INFO] [stdout] | [INFO] [stdout] 1643 | ... let mut do_and_io = if let Some(_) = others { [INFO] [stdout] | -------^^^^^^^--------- help: try: `if others.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1690:63 [INFO] [stdout] | [INFO] [stdout] 1690 | ... let mut bendable = if let Some(_) = others { [INFO] [stdout] | -------^^^^^^^--------- help: try: `if others.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1727:53 [INFO] [stdout] | [INFO] [stdout] 1727 | ... let mut female = if let Some(_) = cardinal_female { [INFO] [stdout] | -------^^^^^^^------------------ help: try: `if cardinal_female.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1775:65 [INFO] [stdout] | [INFO] [stdout] 1775 | ... let mut use_multiplicative = if let Some(_) = multiplicative { [INFO] [stdout] | -------^^^^^^^----------------- help: try: `if multiplicative.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1792:62 [INFO] [stdout] | [INFO] [stdout] 1792 | ... let mut use_approximate = if let Some(_) = approximate { [INFO] [stdout] | -------^^^^^^^-------------- help: try: `if approximate.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1809:59 [INFO] [stdout] | [INFO] [stdout] 1809 | ... let mut use_fraction = if let Some(_) = fraction { [INFO] [stdout] | -------^^^^^^^----------- help: try: `if fraction.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ui.rs:1821:54 [INFO] [stdout] | [INFO] [stdout] 1821 | ... let mut two = if let Some(_) = fraction_other { [INFO] [stdout] | -------^^^^^^^----------------- help: try: `if fraction_other.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1849:58 [INFO] [stdout] | [INFO] [stdout] 1849 | ... let swedish_val = if swedish.len() > 0 { Some(swedish.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!swedish.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1850:58 [INFO] [stdout] | [INFO] [stdout] 1850 | ... let english_val = if english.len() > 0 { Some(english.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!english.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1860:58 [INFO] [stdout] | [INFO] [stdout] 1860 | ... let swedish_val = if swedish.len() > 0 { Some(swedish.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!swedish.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1861:58 [INFO] [stdout] | [INFO] [stdout] 1861 | ... let english_val = if english.len() > 0 { Some(english.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!english.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1896:58 [INFO] [stdout] | [INFO] [stdout] 1896 | ... let swedish_val = if swedish.len() > 0 { Some(swedish.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!swedish.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1897:58 [INFO] [stdout] | [INFO] [stdout] 1897 | ... let english_val = if english.len() > 0 { Some(english.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!english.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1907:58 [INFO] [stdout] | [INFO] [stdout] 1907 | ... let swedish_val = if swedish.len() > 0 { Some(swedish.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!swedish.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ui.rs:1908:58 [INFO] [stdout] | [INFO] [stdout] 1908 | ... let english_val = if english.len() > 0 { Some(english.clone()) } else { None }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!english.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/practice.rs:210:12 [INFO] [stdout] | [INFO] [stdout] 210 | if self.to_repeat.len() != 0 && rng.gen_bool(0.3) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.to_repeat.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/practice.rs:236:16 [INFO] [stdout] | [INFO] [stdout] 236 | } else if !self.continuing && self.answers.iter().all(|x| *x) { [INFO] [stdout] | ________________^ [INFO] [stdout] 237 | | true [INFO] [stdout] 238 | | } else { [INFO] [stdout] 239 | | false [INFO] [stdout] 240 | | } [INFO] [stdout] | |_________^ help: you can reduce it to: `{ !self.continuing && self.answers.iter().all(|x| *x) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/sentence.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | if sentence.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!sentence.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui.rs:170:18 [INFO] [stdout] | [INFO] [stdout] 170 | fn gen_query(&self) -> Query { [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] 170 | fn gen_query(&self) -> Query<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/practice.rs:210:12 [INFO] [stdout] | [INFO] [stdout] 210 | if self.to_repeat.len() != 0 && rng.gen_bool(0.3) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.to_repeat.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/practice.rs:236:16 [INFO] [stdout] | [INFO] [stdout] 236 | } else if !self.continuing && self.answers.iter().all(|x| *x) { [INFO] [stdout] | ________________^ [INFO] [stdout] 237 | | true [INFO] [stdout] 238 | | } else { [INFO] [stdout] 239 | | false [INFO] [stdout] 240 | | } [INFO] [stdout] | |_________^ help: you can reduce it to: `{ !self.continuing && self.answers.iter().all(|x| *x) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/sentence.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | if sentence.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!sentence.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ui.rs:170:18 [INFO] [stdout] | [INFO] [stdout] 170 | fn gen_query(&self) -> Query { [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] 170 | fn gen_query(&self) -> Query<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 20s [INFO] running `Command { std: "docker" "inspect" "aa33218d04a5a3fe01987f6549989cfed8c0d4df78fcff5cc0e32378888a73a8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa33218d04a5a3fe01987f6549989cfed8c0d4df78fcff5cc0e32378888a73a8", kill_on_drop: false }` [INFO] [stdout] aa33218d04a5a3fe01987f6549989cfed8c0d4df78fcff5cc0e32378888a73a8