[INFO] crate mdblog 0.13.1 is already in cache [INFO] extracting crate mdblog 0.13.1 into work/ex/clippy-test-run/sources/stable/reg/mdblog/0.13.1 [INFO] extracting crate mdblog 0.13.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mdblog/0.13.1 [INFO] validating manifest of mdblog-0.13.1 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 mdblog-0.13.1 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 mdblog-0.13.1 [INFO] finished frobbing mdblog-0.13.1 [INFO] frobbed toml for mdblog-0.13.1 written to work/ex/clippy-test-run/sources/stable/reg/mdblog/0.13.1/Cargo.toml [INFO] started frobbing mdblog-0.13.1 [INFO] finished frobbing mdblog-0.13.1 [INFO] frobbed toml for mdblog-0.13.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mdblog/0.13.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 mdblog-0.13.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/mdblog/0.13.1:/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] ef171c6bca2ea760e60fff2e73758a1d409a7548b3987c0e700f0df45fd08ed2 [INFO] running `"docker" "start" "-a" "ef171c6bca2ea760e60fff2e73758a1d409a7548b3987c0e700f0df45fd08ed2"` [INFO] [stderr] Checking serde_yaml v0.7.5 [INFO] [stderr] Checking chrono v0.4.6 [INFO] [stderr] Checking config v0.8.0 [INFO] [stderr] Checking inotify v0.6.1 [INFO] [stderr] Checking tera v0.11.20 [INFO] [stderr] Checking notify v4.0.7 [INFO] [stderr] Checking mdblog v0.13.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/post.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | url: url, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `url` [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/post.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 94 | headers: headers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `headers` [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/post.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | content: content, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `content` [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/lib.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | settings: settings, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `settings` [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/lib.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | theme: theme, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `theme` [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/post.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | url: url, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `url` [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/post.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 94 | headers: headers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `headers` [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/post.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | content: content, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `content` [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/lib.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | settings: settings, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `settings` [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/lib.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | theme: theme, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `theme` [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: unneeded return statement [INFO] [stderr] --> src/settings.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | / return Settings { [INFO] [stderr] 34 | | site_url: String::from(""), [INFO] [stderr] 35 | | site_name: String::from("Mdblog"), [INFO] [stderr] 36 | | site_motto: String::from("Simple is Beautiful!"), [INFO] [stderr] ... | [INFO] [stderr] 43 | | posts_per_page: 20, [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 33 | Settings { [INFO] [stderr] 34 | site_url: String::from(""), [INFO] [stderr] 35 | site_name: String::from("Mdblog"), [INFO] [stderr] 36 | site_motto: String::from("Simple is Beautiful!"), [INFO] [stderr] 37 | footer_note: String::from("Keep It Simple, Stupid!"), [INFO] [stderr] 38 | media_dir: String::from("media"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/theme.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | return Ok(theme); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(theme)` [INFO] [stderr] | [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/settings.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | / return Settings { [INFO] [stderr] 34 | | site_url: String::from(""), [INFO] [stderr] 35 | | site_name: String::from("Mdblog"), [INFO] [stderr] 36 | | site_motto: String::from("Simple is Beautiful!"), [INFO] [stderr] ... | [INFO] [stderr] 43 | | posts_per_page: 20, [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 33 | Settings { [INFO] [stderr] 34 | site_url: String::from(""), [INFO] [stderr] 35 | site_name: String::from("Mdblog"), [INFO] [stderr] 36 | site_motto: String::from("Simple is Beautiful!"), [INFO] [stderr] 37 | footer_note: String::from("Keep It Simple, Stupid!"), [INFO] [stderr] 38 | media_dir: String::from("media"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/theme.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | return Ok(theme); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(theme)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:575:13 [INFO] [stderr] | [INFO] [stderr] 575 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:579:17 [INFO] [stderr] | [INFO] [stderr] 579 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:581:17 [INFO] [stderr] | [INFO] [stderr] 581 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:583:17 [INFO] [stderr] | [INFO] [stderr] 583 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:575:13 [INFO] [stderr] | [INFO] [stderr] 575 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:579:17 [INFO] [stderr] | [INFO] [stderr] 579 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:581:17 [INFO] [stderr] | [INFO] [stderr] 581 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:583:17 [INFO] [stderr] | [INFO] [stderr] 583 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:594:9 [INFO] [stderr] | [INFO] [stderr] 594 | return Ok(root.as_ref().join(&dir)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(root.as_ref().join(&dir))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:596:9 [INFO] [stderr] | [INFO] [stderr] 596 | return Ok(dir); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(dir)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:594:9 [INFO] [stderr] | [INFO] [stderr] 594 | return Ok(root.as_ref().join(&dir)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(root.as_ref().join(&dir))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:596:9 [INFO] [stderr] | [INFO] [stderr] 596 | return Ok(dir); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(dir)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:164:17 [INFO] [stderr] | [INFO] [stderr] 164 | context.add("now", &now.format("%Y-%m-%dT%H:%M:%S%:z").to_string()); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:164:17 [INFO] [stderr] | [INFO] [stderr] 164 | context.add("now", &now.format("%Y-%m-%dT%H:%M:%S%:z").to_string()); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:461:17 [INFO] [stderr] | [INFO] [stderr] 461 | context.add("now", &now); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:462:17 [INFO] [stderr] | [INFO] [stderr] 462 | context.add("posts", &self.posts[..10.min(self.posts.len())]); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:471:17 [INFO] [stderr] | [INFO] [stderr] 471 | context.add("config", &self.settings); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:472:17 [INFO] [stderr] | [INFO] [stderr] 472 | context.add("all_tags", &self.tags_map.values().collect::>()); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:484:17 [INFO] [stderr] | [INFO] [stderr] 484 | context.add("post", &post); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:485:17 [INFO] [stderr] | [INFO] [stderr] 485 | context.add("post_tags", &post_tags); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:493:17 [INFO] [stderr] | [INFO] [stderr] 493 | context.add("prev_name", prev_name); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:494:17 [INFO] [stderr] | [INFO] [stderr] 494 | context.add("next_name", next_name); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:495:17 [INFO] [stderr] | [INFO] [stderr] 495 | context.add("posts", posts); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:502:17 [INFO] [stderr] | [INFO] [stderr] 502 | context.add("title", title); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:503:17 [INFO] [stderr] | [INFO] [stderr] 503 | context.add("prev_name", prev_name); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:504:17 [INFO] [stderr] | [INFO] [stderr] 504 | context.add("next_name", next_name); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:505:17 [INFO] [stderr] | [INFO] [stderr] 505 | context.add("posts", posts); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:461:17 [INFO] [stderr] | [INFO] [stderr] 461 | context.add("now", &now); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:462:17 [INFO] [stderr] | [INFO] [stderr] 462 | context.add("posts", &self.posts[..10.min(self.posts.len())]); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:471:17 [INFO] [stderr] | [INFO] [stderr] 471 | context.add("config", &self.settings); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:472:17 [INFO] [stderr] | [INFO] [stderr] 472 | context.add("all_tags", &self.tags_map.values().collect::>()); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:484:17 [INFO] [stderr] | [INFO] [stderr] 484 | context.add("post", &post); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:485:17 [INFO] [stderr] | [INFO] [stderr] 485 | context.add("post_tags", &post_tags); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:493:17 [INFO] [stderr] | [INFO] [stderr] 493 | context.add("prev_name", prev_name); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:494:17 [INFO] [stderr] | [INFO] [stderr] 494 | context.add("next_name", next_name); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:495:17 [INFO] [stderr] | [INFO] [stderr] 495 | context.add("posts", posts); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:502:17 [INFO] [stderr] | [INFO] [stderr] 502 | context.add("title", title); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:503:17 [INFO] [stderr] | [INFO] [stderr] 503 | context.add("prev_name", prev_name); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:504:17 [INFO] [stderr] | [INFO] [stderr] 504 | context.add("next_name", next_name); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tera::Context::add': Use `insert` instead to keep consistency with std collections [INFO] [stderr] --> src/lib.rs:505:17 [INFO] [stderr] | [INFO] [stderr] 505 | context.add("posts", posts); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'failure::Fail::causes': please use the 'iter_chain()' method instead [INFO] [stderr] --> src/utils.rs:38:22 [INFO] [stderr] | [INFO] [stderr] 38 | for cause in err.causes() { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'failure::Fail::causes': please use the 'iter_chain()' method instead [INFO] [stderr] --> src/utils.rs:38:22 [INFO] [stderr] | [INFO] [stderr] 38 | for cause in err.causes() { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/post.rs:75:26 [INFO] [stderr] | [INFO] [stderr] 75 | .expect(&format!("post filename format error: {}", path.display())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("post filename format error: {}", path.display()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/utils.rs:16:8 [INFO] [stderr] | [INFO] [stderr] 16 | Ok(file.write_all(buf)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 16 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/service.rs:84:38 [INFO] [stderr] | [INFO] [stderr] 84 | let end = request_path.find('?').unwrap_or(request_path.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| request_path.len())` [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: single-character string constant used as pattern [INFO] [stderr] --> src/service.rs:91:49 [INFO] [stderr] | [INFO] [stderr] 91 | path.push(&final_path.trim_left_matches("/")); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/lib.rs:139:40 [INFO] [stderr] | [INFO] [stderr] 139 | .or_insert(Tag::new(tag_name, &format!("/tags/{}.html", tag_name))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| Tag::new(tag_name, &format!("/tags/{}.html", tag_name)))` [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: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:232:38 [INFO] [stderr] | [INFO] [stderr] 232 | let interval = Duration::new(self.settings.rebuild_interval as u64, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.settings.rebuild_interval)` [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: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:322:85 [INFO] [stderr] | [INFO] [stderr] 322 | patterns.push(Pattern::new(&format!("{}/**/*", build_dir.trim_right_matches("/")))?); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [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/lib.rs:327:50 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn create_post(&self, path: &Path, tags: &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: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:563:33 [INFO] [stderr] | [INFO] [stderr] 563 | .map(|s| s.starts_with(".")) [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib.rs:580:20 [INFO] [stderr] | [INFO] [stderr] 580 | } else if s.ends_with(".md") { [INFO] [stderr] | ____________________^ [INFO] [stderr] 581 | | return true; [INFO] [stderr] 582 | | } else { [INFO] [stderr] 583 | | return false; [INFO] [stderr] 584 | | } [INFO] [stderr] | |_____________^ help: you can reduce it to: `return s.ends_with(".md")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/post.rs:75:26 [INFO] [stderr] | [INFO] [stderr] 75 | .expect(&format!("post filename format error: {}", path.display())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("post filename format error: {}", path.display()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/utils.rs:16:8 [INFO] [stderr] | [INFO] [stderr] 16 | Ok(file.write_all(buf)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 16 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/service.rs:84:38 [INFO] [stderr] | [INFO] [stderr] 84 | let end = request_path.find('?').unwrap_or(request_path.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| request_path.len())` [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: single-character string constant used as pattern [INFO] [stderr] --> src/service.rs:91:49 [INFO] [stderr] | [INFO] [stderr] 91 | path.push(&final_path.trim_left_matches("/")); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/lib.rs:139:40 [INFO] [stderr] | [INFO] [stderr] 139 | .or_insert(Tag::new(tag_name, &format!("/tags/{}.html", tag_name))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| Tag::new(tag_name, &format!("/tags/{}.html", tag_name)))` [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: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:232:38 [INFO] [stderr] | [INFO] [stderr] 232 | let interval = Duration::new(self.settings.rebuild_interval as u64, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.settings.rebuild_interval)` [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: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:322:85 [INFO] [stderr] | [INFO] [stderr] 322 | patterns.push(Pattern::new(&format!("{}/**/*", build_dir.trim_right_matches("/")))?); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [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/lib.rs:327:50 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn create_post(&self, path: &Path, tags: &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: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:563:33 [INFO] [stderr] | [INFO] [stderr] 563 | .map(|s| s.starts_with(".")) [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lib.rs:580:20 [INFO] [stderr] | [INFO] [stderr] 580 | } else if s.ends_with(".md") { [INFO] [stderr] | ____________________^ [INFO] [stderr] 581 | | return true; [INFO] [stderr] 582 | | } else { [INFO] [stderr] 583 | | return false; [INFO] [stderr] 584 | | } [INFO] [stderr] | |_____________^ help: you can reduce it to: `return s.ends_with(".md")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [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/main.rs:102:27 [INFO] [stderr] | [INFO] [stderr] 102 | fn new(path: &Path, tags: &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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | / match cmd { [INFO] [stderr] 132 | | &SubCommandTheme::List => mb.list_blog_theme()?, [INFO] [stderr] 133 | | &SubCommandTheme::New { ref name } => mb.create_blog_theme(name)?, [INFO] [stderr] 134 | | &SubCommandTheme::Delete { ref name } => mb.delete_blog_theme(name)?, [INFO] [stderr] 135 | | &SubCommandTheme::Set { ref name } => mb.set_blog_theme(name)?, [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 131 | match *cmd { [INFO] [stderr] 132 | SubCommandTheme::List => mb.list_blog_theme()?, [INFO] [stderr] 133 | SubCommandTheme::New { ref name } => mb.create_blog_theme(name)?, [INFO] [stderr] 134 | SubCommandTheme::Delete { ref name } => mb.delete_blog_theme(name)?, [INFO] [stderr] 135 | SubCommandTheme::Set { ref name } => mb.set_blog_theme(name)?, [INFO] [stderr] | [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/main.rs:102:27 [INFO] [stderr] | [INFO] [stderr] 102 | fn new(path: &Path, tags: &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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | / match cmd { [INFO] [stderr] 132 | | &SubCommandTheme::List => mb.list_blog_theme()?, [INFO] [stderr] 133 | | &SubCommandTheme::New { ref name } => mb.create_blog_theme(name)?, [INFO] [stderr] 134 | | &SubCommandTheme::Delete { ref name } => mb.delete_blog_theme(name)?, [INFO] [stderr] 135 | | &SubCommandTheme::Set { ref name } => mb.set_blog_theme(name)?, [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 131 | match *cmd { [INFO] [stderr] 132 | SubCommandTheme::List => mb.list_blog_theme()?, [INFO] [stderr] 133 | SubCommandTheme::New { ref name } => mb.create_blog_theme(name)?, [INFO] [stderr] 134 | SubCommandTheme::Delete { ref name } => mb.delete_blog_theme(name)?, [INFO] [stderr] 135 | SubCommandTheme::Set { ref name } => mb.set_blog_theme(name)?, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 53.76s [INFO] running `"docker" "inspect" "ef171c6bca2ea760e60fff2e73758a1d409a7548b3987c0e700f0df45fd08ed2"` [INFO] running `"docker" "rm" "-f" "ef171c6bca2ea760e60fff2e73758a1d409a7548b3987c0e700f0df45fd08ed2"` [INFO] [stdout] ef171c6bca2ea760e60fff2e73758a1d409a7548b3987c0e700f0df45fd08ed2