[INFO] updating cached repository mklf/word2vec-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mklf/word2vec-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mklf/word2vec-rs" "work/ex/clippy-test-run/sources/stable/gh/mklf/word2vec-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mklf/word2vec-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mklf/word2vec-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mklf/word2vec-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mklf/word2vec-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 6edce05dc677f2a7326eafe0e54e020254096eb2 [INFO] sha for GitHub repo mklf/word2vec-rs: 6edce05dc677f2a7326eafe0e54e020254096eb2 [INFO] validating manifest of mklf/word2vec-rs on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of mklf/word2vec-rs on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing mklf/word2vec-rs [INFO] finished frobbing mklf/word2vec-rs [INFO] frobbed toml for mklf/word2vec-rs written to work/ex/clippy-test-run/sources/stable/gh/mklf/word2vec-rs/Cargo.toml [INFO] started frobbing mklf/word2vec-rs [INFO] finished frobbing mklf/word2vec-rs [INFO] frobbed toml for mklf/word2vec-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mklf/word2vec-rs/Cargo.toml [INFO] crate mklf/word2vec-rs has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting mklf/word2vec-rs against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/mklf/word2vec-rs:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] b0e0588491c26d6905107fbdaf50472370f46a8fa63826d6fbf97d84a760f455 [INFO] running `"docker" "start" "-a" "b0e0588491c26d6905107fbdaf50472370f46a8fa63826d6fbf97d84a760f455"` [INFO] [stderr] Compiling word2vec v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking clap v2.20.5 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | output: output, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `output` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | dim: dim, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dim` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | lr: lr, [INFO] [stderr] | ^^^^^^ help: replace it with: `lr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | neg: neg, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `neg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matrix.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | row_size: row_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `row_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:272:13 [INFO] [stderr] | [INFO] [stderr] 272 | lr: lr, [INFO] [stderr] | ^^^^^^ help: replace it with: `lr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:274:13 [INFO] [stderr] | [INFO] [stderr] 274 | win: win, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `win` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:275:13 [INFO] [stderr] | [INFO] [stderr] 275 | epoch: epoch, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `epoch` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:276:13 [INFO] [stderr] | [INFO] [stderr] 276 | neg: neg, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `neg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:277:13 [INFO] [stderr] | [INFO] [stderr] 277 | nthreads: nthreads, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `nthreads` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:278:13 [INFO] [stderr] | [INFO] [stderr] 278 | min_count: min_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `min_count` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:279:13 [INFO] [stderr] | [INFO] [stderr] 279 | threshold: threshold, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `threshold` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:280:13 [INFO] [stderr] | [INFO] [stderr] 280 | lr_update: lr_update, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lr_update` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/w2v.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | syn0: syn0, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `syn0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/w2v.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | syn1neg: syn1neg, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `syn1neg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/w2v.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | dim: dim, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dim` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/w2v.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | dict: dict, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `dict` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | output: output, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `output` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | dim: dim, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dim` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | lr: lr, [INFO] [stderr] | ^^^^^^ help: replace it with: `lr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | neg: neg, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `neg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matrix.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | row_size: row_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `row_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | command: command, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `command` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:272:13 [INFO] [stderr] | [INFO] [stderr] 272 | lr: lr, [INFO] [stderr] | ^^^^^^ help: replace it with: `lr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:274:13 [INFO] [stderr] | [INFO] [stderr] 274 | win: win, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `win` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:275:13 [INFO] [stderr] | [INFO] [stderr] 275 | epoch: epoch, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `epoch` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:276:13 [INFO] [stderr] | [INFO] [stderr] 276 | neg: neg, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `neg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:277:13 [INFO] [stderr] | [INFO] [stderr] 277 | nthreads: nthreads, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `nthreads` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:278:13 [INFO] [stderr] | [INFO] [stderr] 278 | min_count: min_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `min_count` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:279:13 [INFO] [stderr] | [INFO] [stderr] 279 | threshold: threshold, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `threshold` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/utils.rs:280:13 [INFO] [stderr] | [INFO] [stderr] 280 | lr_update: lr_update, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lr_update` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/w2v.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | syn0: syn0, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `syn0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/w2v.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | syn1neg: syn1neg, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `syn1neg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/w2v.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | dim: dim, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dim` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/w2v.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | dict: dict, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `dict` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/dictionary.rs:124:30 [INFO] [stderr] | [INFO] [stderr] 124 | if ntokens % 1000000 == 0 { [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/dictionary.rs:125:58 [INFO] [stderr] | [INFO] [stderr] 125 | print!("\rRead {}M words", ntokens / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/dictionary.rs:150:54 [INFO] [stderr] | [INFO] [stderr] 150 | println!("\rRead {} M words", (ntokens / 1000000)); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:18:36 [INFO] [stderr] | [INFO] [stderr] 18 | const NEGATIVE_TABLE_SIZE: usize = 10000000; [INFO] [stderr] | ^^^^^^^^ help: consider: `10_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/dictionary.rs:124:30 [INFO] [stderr] | [INFO] [stderr] 124 | if ntokens % 1000000 == 0 { [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/dictionary.rs:125:58 [INFO] [stderr] | [INFO] [stderr] 125 | print!("\rRead {}M words", ntokens / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/dictionary.rs:150:54 [INFO] [stderr] | [INFO] [stderr] 150 | println!("\rRead {} M words", (ntokens / 1000000)); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:18:36 [INFO] [stderr] | [INFO] [stderr] 18 | const NEGATIVE_TABLE_SIZE: usize = 10000000; [INFO] [stderr] | ^^^^^^^^ help: consider: `10_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> src/train.rs:155:29 [INFO] [stderr] | [INFO] [stderr] 155 | let w2v = Word2vec::new(unsafe { input.inner.into_inner() }, [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_unsafe)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> src/train.rs:156:29 [INFO] [stderr] | [INFO] [stderr] 156 | unsafe { output.inner.into_inner() }, [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] [INFO] [stderr] warning: field is never used: `syn1neg` [INFO] [stderr] --> src/w2v.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | syn1neg: Matrix, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `sigmoid_table` [INFO] [stderr] --> src/model.rs:16:14 [INFO] [stderr] | [INFO] [stderr] 16 | for i in 0..SIGMOID_TABLE_SIZE + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 16 | for (i, ) in sigmoid_table.iter_mut().enumerate().take(SIGMOID_TABLE_SIZE + 1) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/model.rs:16:14 [INFO] [stderr] | [INFO] [stderr] 16 | for i in 0..SIGMOID_TABLE_SIZE + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=SIGMOID_TABLE_SIZE` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `log_table` [INFO] [stderr] --> src/model.rs:24:14 [INFO] [stderr] | [INFO] [stderr] 24 | for i in 0..LOG_TABLE_SIZE + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 24 | for (i, ) in log_table.iter_mut().enumerate().take(LOG_TABLE_SIZE + 1) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/model.rs:24:14 [INFO] [stderr] | [INFO] [stderr] 24 | for i in 0..LOG_TABLE_SIZE + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=LOG_TABLE_SIZE` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/model.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | for i in 0..self.neg + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: use: `0..=self.neg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/model.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | loss as f64 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(loss)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/dictionary.rs:43:18 [INFO] [stderr] | [INFO] [stderr] 43 | z += (*c as f64).powf(NEG_POW); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/dictionary.rs:46:21 [INFO] [stderr] | [INFO] [stderr] 46 | let c = (i as f64).powf(NEG_POW); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dictionary.rs:98:13 [INFO] [stderr] | [INFO] [stderr] 98 | / match self.word2ent.get(word) { [INFO] [stderr] 99 | | Some(e) => { [INFO] [stderr] 100 | | if self.discard_table[e.index] > between.ind_sample(&mut rng) { [INFO] [stderr] 101 | | lines.push(e.index); [INFO] [stderr] ... | [INFO] [stderr] 104 | | None => {} [INFO] [stderr] 105 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 98 | if let Some(e) = self.word2ent.get(word) { [INFO] [stderr] 99 | if self.discard_table[e.index] > between.ind_sample(&mut rng) { [INFO] [stderr] 100 | lines.push(e.index); [INFO] [stderr] 101 | } [INFO] [stderr] 102 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/dictionary.rs:126:21 [INFO] [stderr] | [INFO] [stderr] 126 | stdout().flush().ok().expect("Could not flush stdout"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/matrix.rs:67:17 [INFO] [stderr] | [INFO] [stderr] 67 | vec, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::not_unsafe_ptr_arg_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/matrix.rs:81:17 [INFO] [stderr] | [INFO] [stderr] 81 | vec, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:224:34 [INFO] [stderr] | [INFO] [stderr] 224 | pub fn parse_arguments<'a>(args: &'a Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/utils.rs:224:1 [INFO] [stderr] | [INFO] [stderr] 224 | / pub fn parse_arguments<'a>(args: &'a Vec) -> Result { [INFO] [stderr] 225 | | let app = clap_app!(word2vec => [INFO] [stderr] 226 | | (version: "1.0") [INFO] [stderr] 227 | | (author: "Frank Lee ") [INFO] [stderr] ... | [INFO] [stderr] 293 | | [INFO] [stderr] 294 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/utils.rs:257:14 [INFO] [stderr] | [INFO] [stderr] 257 | .ok_or(clap::Error::argument_not_found_auto("input"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| clap::Error::argument_not_found_auto("input"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/utils.rs:259:14 [INFO] [stderr] | [INFO] [stderr] 259 | .ok_or(clap::Error::argument_not_found_auto("output"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| clap::Error::argument_not_found_auto("output"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/utils.rs:286:14 [INFO] [stderr] | [INFO] [stderr] 286 | .ok_or(clap::Error::argument_not_found_auto("input"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| clap::Error::argument_not_found_auto("input"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/train.rs:15:38 [INFO] [stderr] | [INFO] [stderr] 15 | fn skipgram(model: &mut Model, line: &Vec, rng: &mut StdRng, unifrom: &Range) { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/train.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | for c in -bound..bound + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `-bound..=bound` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/train.rs:26:73 [INFO] [stderr] | [INFO] [stderr] 26 | fn print_progress(model: &Model, progress: f32, words: f32, start_time: &PreciseTime) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `PreciseTime` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/train.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | / fn train_thread(dict: &Dict, [INFO] [stderr] 37 | | mut input: &mut Matrix, [INFO] [stderr] 38 | | mut output: &mut Matrix, [INFO] [stderr] 39 | | arg: Argument, [INFO] [stderr] ... | [INFO] [stderr] 97 | | Ok(true) [INFO] [stderr] 98 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/train.rs:128:42 [INFO] [stderr] | [INFO] [stderr] 128 | let splits = split_file(&args.input, args.nthreads as u64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(args.nthreads)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/w2v.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | try!(file.write(&word.into_bytes()[..])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/w2v.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | try!(file.write(&s.into_bytes()[..])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/w2v.rs:59:23 [INFO] [stderr] | [INFO] [stderr] 59 | let ptr = mem::transmute::<*const f32,*const u8>(ptr); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `ptr as *const u8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/w2v.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | try!(file.write(u8data)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/ffi.rs:18:38 [INFO] [stderr] | [INFO] [stderr] 18 | let s = CStr::from_ptr(*(args.offset(i))).to_str(); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/ffi.rs:25:22 [INFO] [stderr] | [INFO] [stderr] 25 | *ptr = reason.into_raw(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/ffi.rs:43:26 [INFO] [stderr] | [INFO] [stderr] 43 | *ptr = reason.into_raw(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/ffi.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | *ptr = reason.into_raw(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `word2vec`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> src/train.rs:155:29 [INFO] [stderr] | [INFO] [stderr] 155 | let w2v = Word2vec::new(unsafe { input.inner.into_inner() }, [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_unsafe)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> src/train.rs:156:29 [INFO] [stderr] | [INFO] [stderr] 156 | unsafe { output.inner.into_inner() }, [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] [INFO] [stderr] warning: field is never used: `syn1neg` [INFO] [stderr] --> src/w2v.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | syn1neg: Matrix, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `sigmoid_table` [INFO] [stderr] --> src/model.rs:16:14 [INFO] [stderr] | [INFO] [stderr] 16 | for i in 0..SIGMOID_TABLE_SIZE + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 16 | for (i, ) in sigmoid_table.iter_mut().enumerate().take(SIGMOID_TABLE_SIZE + 1) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/model.rs:16:14 [INFO] [stderr] | [INFO] [stderr] 16 | for i in 0..SIGMOID_TABLE_SIZE + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=SIGMOID_TABLE_SIZE` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `log_table` [INFO] [stderr] --> src/model.rs:24:14 [INFO] [stderr] | [INFO] [stderr] 24 | for i in 0..LOG_TABLE_SIZE + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 24 | for (i, ) in log_table.iter_mut().enumerate().take(LOG_TABLE_SIZE + 1) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/model.rs:24:14 [INFO] [stderr] | [INFO] [stderr] 24 | for i in 0..LOG_TABLE_SIZE + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=LOG_TABLE_SIZE` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/model.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | for i in 0..self.neg + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: use: `0..=self.neg` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/model.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | loss as f64 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(loss)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/dictionary.rs:43:18 [INFO] [stderr] | [INFO] [stderr] 43 | z += (*c as f64).powf(NEG_POW); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/dictionary.rs:46:21 [INFO] [stderr] | [INFO] [stderr] 46 | let c = (i as f64).powf(NEG_POW); [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dictionary.rs:98:13 [INFO] [stderr] | [INFO] [stderr] 98 | / match self.word2ent.get(word) { [INFO] [stderr] 99 | | Some(e) => { [INFO] [stderr] 100 | | if self.discard_table[e.index] > between.ind_sample(&mut rng) { [INFO] [stderr] 101 | | lines.push(e.index); [INFO] [stderr] ... | [INFO] [stderr] 104 | | None => {} [INFO] [stderr] 105 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 98 | if let Some(e) = self.word2ent.get(word) { [INFO] [stderr] 99 | if self.discard_table[e.index] > between.ind_sample(&mut rng) { [INFO] [stderr] 100 | lines.push(e.index); [INFO] [stderr] 101 | } [INFO] [stderr] 102 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/dictionary.rs:126:21 [INFO] [stderr] | [INFO] [stderr] 126 | stdout().flush().ok().expect("Could not flush stdout"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/matrix.rs:67:17 [INFO] [stderr] | [INFO] [stderr] 67 | vec, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::not_unsafe_ptr_arg_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/matrix.rs:81:17 [INFO] [stderr] | [INFO] [stderr] 81 | vec, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:224:34 [INFO] [stderr] | [INFO] [stderr] 224 | pub fn parse_arguments<'a>(args: &'a Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/utils.rs:224:1 [INFO] [stderr] | [INFO] [stderr] 224 | / pub fn parse_arguments<'a>(args: &'a Vec) -> Result { [INFO] [stderr] 225 | | let app = clap_app!(word2vec => [INFO] [stderr] 226 | | (version: "1.0") [INFO] [stderr] 227 | | (author: "Frank Lee ") [INFO] [stderr] ... | [INFO] [stderr] 293 | | [INFO] [stderr] 294 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/utils.rs:257:14 [INFO] [stderr] | [INFO] [stderr] 257 | .ok_or(clap::Error::argument_not_found_auto("input"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| clap::Error::argument_not_found_auto("input"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/utils.rs:259:14 [INFO] [stderr] | [INFO] [stderr] 259 | .ok_or(clap::Error::argument_not_found_auto("output"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| clap::Error::argument_not_found_auto("output"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/utils.rs:286:14 [INFO] [stderr] | [INFO] [stderr] 286 | .ok_or(clap::Error::argument_not_found_auto("input"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| clap::Error::argument_not_found_auto("input"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/train.rs:15:38 [INFO] [stderr] | [INFO] [stderr] 15 | fn skipgram(model: &mut Model, line: &Vec, rng: &mut StdRng, unifrom: &Range) { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/train.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | for c in -bound..bound + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `-bound..=bound` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/train.rs:26:73 [INFO] [stderr] | [INFO] [stderr] 26 | fn print_progress(model: &Model, progress: f32, words: f32, start_time: &PreciseTime) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `PreciseTime` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/train.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | / fn train_thread(dict: &Dict, [INFO] [stderr] 37 | | mut input: &mut Matrix, [INFO] [stderr] 38 | | mut output: &mut Matrix, [INFO] [stderr] 39 | | arg: Argument, [INFO] [stderr] ... | [INFO] [stderr] 97 | | Ok(true) [INFO] [stderr] 98 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/train.rs:128:42 [INFO] [stderr] | [INFO] [stderr] 128 | let splits = split_file(&args.input, args.nthreads as u64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(args.nthreads)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/w2v.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | try!(file.write(&word.into_bytes()[..])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/w2v.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | try!(file.write(&s.into_bytes()[..])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/w2v.rs:59:23 [INFO] [stderr] | [INFO] [stderr] 59 | let ptr = mem::transmute::<*const f32,*const u8>(ptr); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `ptr as *const u8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/w2v.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | try!(file.write(u8data)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/ffi.rs:18:38 [INFO] [stderr] | [INFO] [stderr] 18 | let s = CStr::from_ptr(*(args.offset(i))).to_str(); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/ffi.rs:25:22 [INFO] [stderr] | [INFO] [stderr] 25 | *ptr = reason.into_raw(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/ffi.rs:43:26 [INFO] [stderr] | [INFO] [stderr] 43 | *ptr = reason.into_raw(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/ffi.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | *ptr = reason.into_raw(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `word2vec`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b0e0588491c26d6905107fbdaf50472370f46a8fa63826d6fbf97d84a760f455"` [INFO] running `"docker" "rm" "-f" "b0e0588491c26d6905107fbdaf50472370f46a8fa63826d6fbf97d84a760f455"` [INFO] [stdout] b0e0588491c26d6905107fbdaf50472370f46a8fa63826d6fbf97d84a760f455