[INFO] updating cached repository blazern/svg-bot [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/blazern/svg-bot [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/blazern/svg-bot" "work/ex/clippy-test-run/sources/stable/gh/blazern/svg-bot"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/blazern/svg-bot'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/blazern/svg-bot" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/blazern/svg-bot"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/blazern/svg-bot'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 55c54d33e5b229998de5705ae52cdf8d5f44439b [INFO] sha for GitHub repo blazern/svg-bot: 55c54d33e5b229998de5705ae52cdf8d5f44439b [INFO] validating manifest of blazern/svg-bot 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 blazern/svg-bot 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 blazern/svg-bot [INFO] finished frobbing blazern/svg-bot [INFO] frobbed toml for blazern/svg-bot written to work/ex/clippy-test-run/sources/stable/gh/blazern/svg-bot/Cargo.toml [INFO] started frobbing blazern/svg-bot [INFO] finished frobbing blazern/svg-bot [INFO] frobbed toml for blazern/svg-bot written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/blazern/svg-bot/Cargo.toml [INFO] crate blazern/svg-bot 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 blazern/svg-bot against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/blazern/svg-bot:/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 -Dclippy::into_iter_on_array" "-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] 92fca1affb040189366e2c0e3b4004e3e1b3ca3a9d189806f55e5147da322dd6 [INFO] running `"docker" "start" "-a" "92fca1affb040189366e2c0e3b4004e3e1b3ca3a9d189806f55e5147da322dd6"` [INFO] [stderr] Checking svg v0.5.6 [INFO] [stderr] Checking svg-bot v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/my_error.rs:10:18 [INFO] [stderr] | [INFO] [stderr] 10 | MyError{ message: message } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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/rect.rs:11:15 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/rect.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/rect.rs:11:27 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/rect.rs:11:41 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/point.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | SvgPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/point.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | SvgPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/point.rs:68:22 [INFO] [stderr] | [INFO] [stderr] 68 | ScreenPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/point.rs:68:28 [INFO] [stderr] | [INFO] [stderr] 68 | ScreenPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/my_error.rs:10:18 [INFO] [stderr] | [INFO] [stderr] 10 | MyError{ message: message } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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/rect.rs:11:15 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/rect.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/rect.rs:11:27 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/rect.rs:11:41 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/point.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | SvgPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/point.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | SvgPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/point.rs:68:22 [INFO] [stderr] | [INFO] [stderr] 68 | ScreenPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/point.rs:68:28 [INFO] [stderr] | [INFO] [stderr] 68 | ScreenPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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: single-character string constant used as pattern [INFO] [stderr] --> src/mouse.rs:13:42 [INFO] [stderr] | [INFO] [stderr] 13 | let mut top_left_strs = output.split(" "); [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: single-character string constant used as pattern [INFO] [stderr] --> src/mouse.rs:13:42 [INFO] [stderr] | [INFO] [stderr] 13 | let mut top_left_strs = output.split(" "); [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: redundant field names in struct initialization [INFO] [stderr] --> src/point.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | SvgPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/point.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | SvgPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/point.rs:68:22 [INFO] [stderr] | [INFO] [stderr] 68 | ScreenPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/point.rs:68:28 [INFO] [stderr] | [INFO] [stderr] 68 | ScreenPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/rect.rs:11:15 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/rect.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/rect.rs:11:27 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/rect.rs:11:41 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/my_error.rs:10:18 [INFO] [stderr] | [INFO] [stderr] 10 | MyError{ message: message } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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/painter.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | svg_area: svg_area, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `svg_area` [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/painter.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | screen_area: screen_area [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `screen_area` [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/point.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | SvgPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/point.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | SvgPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/point.rs:68:22 [INFO] [stderr] | [INFO] [stderr] 68 | ScreenPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/point.rs:68:28 [INFO] [stderr] | [INFO] [stderr] 68 | ScreenPoint{ x: x, y: y, svg_area: svg_area.clone(), screen_area: screen_area.clone() } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/rect.rs:11:15 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/rect.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/rect.rs:11:27 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/rect.rs:11:41 [INFO] [stderr] | [INFO] [stderr] 11 | Rect{ x: x, y: y, width: width, height: height } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/my_error.rs:10:18 [INFO] [stderr] | [INFO] [stderr] 10 | MyError{ message: message } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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/painter.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | svg_area: svg_area, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `svg_area` [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/painter.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | screen_area: screen_area [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `screen_area` [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/painter.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | return self.perform_line(position_type, ¶ms) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.perform_line(position_type, ¶ms)` [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] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/painter.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: floating-point types cannot be used in patterns [INFO] [stderr] --> tests/mouse_test.rs:27:10 [INFO] [stderr] | [INFO] [stderr] 27 | (0f32, 0f32) => { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(illegal_floating_point_literal_pattern)] on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> tests/mouse_test.rs:27:16 [INFO] [stderr] | [INFO] [stderr] 27 | (0f32, 0f32) => { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> tests/mouse_test.rs:27:10 [INFO] [stderr] | [INFO] [stderr] 27 | (0f32, 0f32) => { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/painter.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | return self.perform_line(position_type, ¶ms) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.perform_line(position_type, ¶ms)` [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] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/painter.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: single-character string constant used as pattern [INFO] [stderr] --> src/mouse.rs:13:42 [INFO] [stderr] | [INFO] [stderr] 13 | let mut top_left_strs = output.split(" "); [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> tests/rect_test.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | assert_eq!(x, rect.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/rect_test.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | assert_eq!(x, rect.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: strict comparison of f32 or f64 [INFO] [stderr] --> tests/rect_test.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | assert_eq!(y, rect.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/rect_test.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | assert_eq!(y, rect.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: strict comparison of f32 or f64 [INFO] [stderr] --> tests/rect_test.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | assert_eq!(width, rect.width()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/rect_test.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | assert_eq!(width, rect.width()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: strict comparison of f32 or f64 [INFO] [stderr] --> tests/rect_test.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | assert_eq!(height, rect.height()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match command { [INFO] [stderr] 26 | | &Command::Move(ref position_type, ref params) => { [INFO] [stderr] 27 | | let params = params.to_vec(); [INFO] [stderr] 28 | | self.reset_subpath_initial_point_by_move_command(&position_type, ¶ms); [INFO] [stderr] ... | [INFO] [stderr] 66 | | }, [INFO] [stderr] 67 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> tests/point_test.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | assert_eq!(x, point.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/point_test.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | assert_eq!(x, point.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: strict comparison of f32 or f64 [INFO] [stderr] --> tests/point_test.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | assert_eq!(y, point.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/point_test.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | assert_eq!(y, point.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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] | [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] 25 | match *command { [INFO] [stderr] 26 | Command::Move(ref position_type, ref params) => { [INFO] [stderr] 27 | let params = params.to_vec(); [INFO] [stderr] 28 | self.reset_subpath_initial_point_by_move_command(&position_type, ¶ms); [INFO] [stderr] 29 | self.perform_move(&position_type, ¶ms.to_vec())?; [INFO] [stderr] 30 | }, [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/painter.rs:71:107 [INFO] [stderr] | [INFO] [stderr] 71 | fn reset_subpath_initial_point_by_move_command(&mut self, move_position_type: &Position, move_params: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn reset_subpath_initial_point_by_move_command(&mut self, move_position_type: &Position, move_params: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/rect_test.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | assert_eq!(height, rect.height()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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] = 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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | / match move_position_type { [INFO] [stderr] 77 | | &Position::Absolute => { [INFO] [stderr] 78 | | new_initial_x = *move_params.get(0).unwrap(); [INFO] [stderr] 79 | | new_initial_y = *move_params.get(1).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 84 | | } [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] | [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] 76 | match *move_position_type { [INFO] [stderr] 77 | Position::Absolute => { [INFO] [stderr] 78 | new_initial_x = *move_params.get(0).unwrap(); [INFO] [stderr] 79 | new_initial_y = *move_params.get(1).unwrap(); [INFO] [stderr] 80 | } [INFO] [stderr] 81 | Position::Relative => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:78:34 [INFO] [stderr] | [INFO] [stderr] 78 | new_initial_x = *move_params.get(0).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&move_params[0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:79:34 [INFO] [stderr] | [INFO] [stderr] 79 | new_initial_y = *move_params.get(1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&move_params[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:82:34 [INFO] [stderr] | [INFO] [stderr] 82 | new_initial_x = *move_params.get(0).unwrap() + self.current_point.x(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&move_params[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:83:34 [INFO] [stderr] | [INFO] [stderr] 83 | new_initial_y = *move_params.get(1).unwrap() + self.current_point.y(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&move_params[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/painter.rs:89:66 [INFO] [stderr] | [INFO] [stderr] 89 | fn perform_move(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 89 | fn perform_move(&mut self, position_type: &Position, params: &[f32]) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `params.clone()` to [INFO] [stderr] | [INFO] [stderr] 96 | let mut params = params.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:89:47 [INFO] [stderr] | [INFO] [stderr] 89 | fn perform_move(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:93:45 [INFO] [stderr] | [INFO] [stderr] 93 | self.current_point = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:93:70 [INFO] [stderr] | [INFO] [stderr] 93 | self.current_point = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/painter.rs:111:66 [INFO] [stderr] | [INFO] [stderr] 111 | fn perform_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:111:47 [INFO] [stderr] | [INFO] [stderr] 111 | fn perform_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:125:22 [INFO] [stderr] | [INFO] [stderr] 125 | let x = *params.get(index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `params[index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:126:22 [INFO] [stderr] | [INFO] [stderr] 126 | let y = *params.get(index + 1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `params[index + 1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | / match position_type { [INFO] [stderr] 128 | | &Position::Relative => { [INFO] [stderr] 129 | | current_point = current_point.offset(x, y); [INFO] [stderr] 130 | | } [INFO] [stderr] ... | [INFO] [stderr] 133 | | } [INFO] [stderr] 134 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 127 | match *position_type { [INFO] [stderr] 128 | Position::Relative => { [INFO] [stderr] 129 | current_point = current_point.offset(x, y); [INFO] [stderr] 130 | } [INFO] [stderr] 131 | Position::Absolute => { [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/painter.rs:144:73 [INFO] [stderr] | [INFO] [stderr] 144 | fn perform_cubic_curve(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:144:54 [INFO] [stderr] | [INFO] [stderr] 144 | fn perform_cubic_curve(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> tests/point_test.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | assert_eq!(x, point.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | / match position_type { [INFO] [stderr] 154 | | &Position::Absolute => { [INFO] [stderr] 155 | | pos1 = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] 156 | | pos2 = SvgPoint::new(*params.get(2).unwrap(), *params.get(3).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] ... | [INFO] [stderr] 163 | | } [INFO] [stderr] 164 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 153 | match *position_type { [INFO] [stderr] 154 | Position::Absolute => { [INFO] [stderr] 155 | pos1 = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] 156 | pos2 = SvgPoint::new(*params.get(2).unwrap(), *params.get(3).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] 157 | pos3 = SvgPoint::new(*params.get(4).unwrap(), *params.get(5).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] 158 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:155:43 [INFO] [stderr] | [INFO] [stderr] 155 | pos1 = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:155:68 [INFO] [stderr] | [INFO] [stderr] 155 | pos1 = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:156:43 [INFO] [stderr] | [INFO] [stderr] 156 | pos2 = SvgPoint::new(*params.get(2).unwrap(), *params.get(3).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/point_test.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | assert_eq!(x, point.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:156:68 [INFO] [stderr] | [INFO] [stderr] 156 | pos2 = SvgPoint::new(*params.get(2).unwrap(), *params.get(3).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[3]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:157:43 [INFO] [stderr] | [INFO] [stderr] 157 | pos3 = SvgPoint::new(*params.get(4).unwrap(), *params.get(5).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[4]` [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> tests/point_test.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | assert_eq!(y, point.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:157:68 [INFO] [stderr] | [INFO] [stderr] 157 | pos3 = SvgPoint::new(*params.get(4).unwrap(), *params.get(5).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[5]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: Could not compile `svg-bot`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/point_test.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | assert_eq!(y, point.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:160:43 [INFO] [stderr] | [INFO] [stderr] 160 | pos1 = SvgPoint::new(*params.get(0).unwrap() + pos0.x(), *params.get(1).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:160:79 [INFO] [stderr] | [INFO] [stderr] 160 | pos1 = SvgPoint::new(*params.get(0).unwrap() + pos0.x(), *params.get(1).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:161:43 [INFO] [stderr] | [INFO] [stderr] 161 | pos2 = SvgPoint::new(*params.get(2).unwrap() + pos0.x(), *params.get(3).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:161:79 [INFO] [stderr] | [INFO] [stderr] 161 | pos2 = SvgPoint::new(*params.get(2).unwrap() + pos0.x(), *params.get(3).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[3]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:162:43 [INFO] [stderr] | [INFO] [stderr] 162 | pos3 = SvgPoint::new(*params.get(4).unwrap() + pos0.x(), *params.get(5).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[4]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:162:79 [INFO] [stderr] | [INFO] [stderr] 162 | pos3 = SvgPoint::new(*params.get(4).unwrap() + pos0.x(), *params.get(5).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[5]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/painter.rs:179:77 [INFO] [stderr] | [INFO] [stderr] 179 | fn perform_horizontal_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:179:58 [INFO] [stderr] | [INFO] [stderr] 179 | fn perform_horizontal_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | / match position_type { [INFO] [stderr] 184 | | &Position::Relative => { [INFO] [stderr] 185 | | current_point = current_point.offset(param, 0f32); [INFO] [stderr] 186 | | } [INFO] [stderr] ... | [INFO] [stderr] 189 | | } [INFO] [stderr] 190 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 183 | match *position_type { [INFO] [stderr] 184 | Position::Relative => { [INFO] [stderr] 185 | current_point = current_point.offset(param, 0f32); [INFO] [stderr] 186 | } [INFO] [stderr] 187 | Position::Absolute => { [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/painter.rs:197:75 [INFO] [stderr] | [INFO] [stderr] 197 | fn perform_vertical_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:197:56 [INFO] [stderr] | [INFO] [stderr] 197 | fn perform_vertical_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:201:13 [INFO] [stderr] | [INFO] [stderr] 201 | / match position_type { [INFO] [stderr] 202 | | &Position::Relative => { [INFO] [stderr] 203 | | current_point = current_point.offset(0f32, param); [INFO] [stderr] 204 | | } [INFO] [stderr] ... | [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 201 | match *position_type { [INFO] [stderr] 202 | Position::Relative => { [INFO] [stderr] 203 | current_point = current_point.offset(0f32, param); [INFO] [stderr] 204 | } [INFO] [stderr] 205 | Position::Absolute => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> tests/point_test.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | assert_ne!(svg_point.x(), screen_point.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/point_test.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | assert_ne!(svg_point.x(), screen_point.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: strict comparison of f32 or f64 [INFO] [stderr] --> tests/point_test.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | assert_ne!(svg_point.y(), screen_point.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/point_test.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | assert_ne!(svg_point.y(), screen_point.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | / match event { [INFO] [stderr] 34 | | Event::Tag(svg::node::element::tag::Path, _, attributes) => { [INFO] [stderr] 35 | | let data = attributes.get("d").unwrap(); [INFO] [stderr] 36 | | let data = Data::parse(data).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 43 | | _ => {} [INFO] [stderr] 44 | | } [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] 33 | if let Event::Tag(svg::node::element::tag::Path, _, attributes) = event { [INFO] [stderr] 34 | let data = attributes.get("d").unwrap(); [INFO] [stderr] 35 | let data = Data::parse(data).unwrap(); [INFO] [stderr] 36 | let mut painter = Painter::new(svg_area.clone(), paint_area.clone()); [INFO] [stderr] 37 | [INFO] [stderr] 38 | for command in data.iter() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:35:28 [INFO] [stderr] | [INFO] [stderr] 35 | let data = attributes.get("d").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&attributes["d"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> tests/point_test.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | assert_ne!(svg_point.x(), screen_point.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/point_test.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | assert_ne!(svg_point.x(), screen_point.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: strict comparison of f32 or f64 [INFO] [stderr] --> tests/point_test.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | assert_ne!(svg_point.y(), screen_point.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/point_test.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | assert_ne!(svg_point.y(), screen_point.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | / match event { [INFO] [stderr] 64 | | Event::Tag(svg::node::element::tag::SVG, _, attributes) => { [INFO] [stderr] 65 | | let view_box = attributes.get("viewBox"); [INFO] [stderr] 66 | | if view_box.is_none() { [INFO] [stderr] ... | [INFO] [stderr] 77 | | _ => {} [INFO] [stderr] 78 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 63 | if let Event::Tag(svg::node::element::tag::SVG, _, attributes) = event { [INFO] [stderr] 64 | let view_box = attributes.get("viewBox"); [INFO] [stderr] 65 | if view_box.is_none() { [INFO] [stderr] 66 | continue; [INFO] [stderr] 67 | } [INFO] [stderr] 68 | let view_box = view_box.unwrap().split(" "); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:69:56 [INFO] [stderr] | [INFO] [stderr] 69 | let view_box = view_box.unwrap().split(" "); [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | / match event { [INFO] [stderr] 83 | | Event::Tag(svg::node::element::tag::SVG, _, attributes) => { [INFO] [stderr] 84 | | let width = attributes.get("width"); [INFO] [stderr] 85 | | let height = attributes.get("height"); [INFO] [stderr] ... | [INFO] [stderr] 96 | | _ => {} [INFO] [stderr] 97 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 82 | if let Event::Tag(svg::node::element::tag::SVG, _, attributes) = event { [INFO] [stderr] 83 | let width = attributes.get("width"); [INFO] [stderr] 84 | let height = attributes.get("height"); [INFO] [stderr] 85 | if width.is_none() || height.is_none() { [INFO] [stderr] 86 | continue; [INFO] [stderr] 87 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `svg-bot`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/mouse.rs:13:42 [INFO] [stderr] | [INFO] [stderr] 13 | let mut top_left_strs = output.split(" "); [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match command { [INFO] [stderr] 26 | | &Command::Move(ref position_type, ref params) => { [INFO] [stderr] 27 | | let params = params.to_vec(); [INFO] [stderr] 28 | | self.reset_subpath_initial_point_by_move_command(&position_type, ¶ms); [INFO] [stderr] ... | [INFO] [stderr] 66 | | }, [INFO] [stderr] 67 | | } [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] 25 | match *command { [INFO] [stderr] 26 | Command::Move(ref position_type, ref params) => { [INFO] [stderr] 27 | let params = params.to_vec(); [INFO] [stderr] 28 | self.reset_subpath_initial_point_by_move_command(&position_type, ¶ms); [INFO] [stderr] 29 | self.perform_move(&position_type, ¶ms.to_vec())?; [INFO] [stderr] 30 | }, [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/painter.rs:71:107 [INFO] [stderr] | [INFO] [stderr] 71 | fn reset_subpath_initial_point_by_move_command(&mut self, move_position_type: &Position, move_params: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn reset_subpath_initial_point_by_move_command(&mut self, move_position_type: &Position, move_params: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | / match move_position_type { [INFO] [stderr] 77 | | &Position::Absolute => { [INFO] [stderr] 78 | | new_initial_x = *move_params.get(0).unwrap(); [INFO] [stderr] 79 | | new_initial_y = *move_params.get(1).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 84 | | } [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 76 | match *move_position_type { [INFO] [stderr] 77 | Position::Absolute => { [INFO] [stderr] 78 | new_initial_x = *move_params.get(0).unwrap(); [INFO] [stderr] 79 | new_initial_y = *move_params.get(1).unwrap(); [INFO] [stderr] 80 | } [INFO] [stderr] 81 | Position::Relative => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:78:34 [INFO] [stderr] | [INFO] [stderr] 78 | new_initial_x = *move_params.get(0).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&move_params[0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:79:34 [INFO] [stderr] | [INFO] [stderr] 79 | new_initial_y = *move_params.get(1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&move_params[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:82:34 [INFO] [stderr] | [INFO] [stderr] 82 | new_initial_x = *move_params.get(0).unwrap() + self.current_point.x(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&move_params[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:83:34 [INFO] [stderr] | [INFO] [stderr] 83 | new_initial_y = *move_params.get(1).unwrap() + self.current_point.y(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&move_params[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/painter.rs:89:66 [INFO] [stderr] | [INFO] [stderr] 89 | fn perform_move(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 89 | fn perform_move(&mut self, position_type: &Position, params: &[f32]) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `params.clone()` to [INFO] [stderr] | [INFO] [stderr] 96 | let mut params = params.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:89:47 [INFO] [stderr] | [INFO] [stderr] 89 | fn perform_move(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:93:45 [INFO] [stderr] | [INFO] [stderr] 93 | self.current_point = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:93:70 [INFO] [stderr] | [INFO] [stderr] 93 | self.current_point = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/painter.rs:111:66 [INFO] [stderr] | [INFO] [stderr] 111 | fn perform_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:111:47 [INFO] [stderr] | [INFO] [stderr] 111 | fn perform_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:125:22 [INFO] [stderr] | [INFO] [stderr] 125 | let x = *params.get(index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `params[index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:126:22 [INFO] [stderr] | [INFO] [stderr] 126 | let y = *params.get(index + 1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `params[index + 1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:127:13 [INFO] [stderr] | [INFO] [stderr] 127 | / match position_type { [INFO] [stderr] 128 | | &Position::Relative => { [INFO] [stderr] 129 | | current_point = current_point.offset(x, y); [INFO] [stderr] 130 | | } [INFO] [stderr] ... | [INFO] [stderr] 133 | | } [INFO] [stderr] 134 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 127 | match *position_type { [INFO] [stderr] 128 | Position::Relative => { [INFO] [stderr] 129 | current_point = current_point.offset(x, y); [INFO] [stderr] 130 | } [INFO] [stderr] 131 | Position::Absolute => { [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/painter.rs:144:73 [INFO] [stderr] | [INFO] [stderr] 144 | fn perform_cubic_curve(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:144:54 [INFO] [stderr] | [INFO] [stderr] 144 | fn perform_cubic_curve(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | / match position_type { [INFO] [stderr] 154 | | &Position::Absolute => { [INFO] [stderr] 155 | | pos1 = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] 156 | | pos2 = SvgPoint::new(*params.get(2).unwrap(), *params.get(3).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] ... | [INFO] [stderr] 163 | | } [INFO] [stderr] 164 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 153 | match *position_type { [INFO] [stderr] 154 | Position::Absolute => { [INFO] [stderr] 155 | pos1 = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] 156 | pos2 = SvgPoint::new(*params.get(2).unwrap(), *params.get(3).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] 157 | pos3 = SvgPoint::new(*params.get(4).unwrap(), *params.get(5).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] 158 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:155:43 [INFO] [stderr] | [INFO] [stderr] 155 | pos1 = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:155:68 [INFO] [stderr] | [INFO] [stderr] 155 | pos1 = SvgPoint::new(*params.get(0).unwrap(), *params.get(1).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:156:43 [INFO] [stderr] | [INFO] [stderr] 156 | pos2 = SvgPoint::new(*params.get(2).unwrap(), *params.get(3).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:156:68 [INFO] [stderr] | [INFO] [stderr] 156 | pos2 = SvgPoint::new(*params.get(2).unwrap(), *params.get(3).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[3]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:157:43 [INFO] [stderr] | [INFO] [stderr] 157 | pos3 = SvgPoint::new(*params.get(4).unwrap(), *params.get(5).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[4]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:157:68 [INFO] [stderr] | [INFO] [stderr] 157 | pos3 = SvgPoint::new(*params.get(4).unwrap(), *params.get(5).unwrap(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[5]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:160:43 [INFO] [stderr] | [INFO] [stderr] 160 | pos1 = SvgPoint::new(*params.get(0).unwrap() + pos0.x(), *params.get(1).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:160:79 [INFO] [stderr] | [INFO] [stderr] 160 | pos1 = SvgPoint::new(*params.get(0).unwrap() + pos0.x(), *params.get(1).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:161:43 [INFO] [stderr] | [INFO] [stderr] 161 | pos2 = SvgPoint::new(*params.get(2).unwrap() + pos0.x(), *params.get(3).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:161:79 [INFO] [stderr] | [INFO] [stderr] 161 | pos2 = SvgPoint::new(*params.get(2).unwrap() + pos0.x(), *params.get(3).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[3]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:162:43 [INFO] [stderr] | [INFO] [stderr] 162 | pos3 = SvgPoint::new(*params.get(4).unwrap() + pos0.x(), *params.get(5).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[4]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/painter.rs:162:79 [INFO] [stderr] | [INFO] [stderr] 162 | pos3 = SvgPoint::new(*params.get(4).unwrap() + pos0.x(), *params.get(5).unwrap() + pos0.y(), &self.svg_area, &self.screen_area); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms[5]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/painter.rs:179:77 [INFO] [stderr] | [INFO] [stderr] 179 | fn perform_horizontal_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:179:58 [INFO] [stderr] | [INFO] [stderr] 179 | fn perform_horizontal_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | / match position_type { [INFO] [stderr] 184 | | &Position::Relative => { [INFO] [stderr] 185 | | current_point = current_point.offset(param, 0f32); [INFO] [stderr] 186 | | } [INFO] [stderr] ... | [INFO] [stderr] 189 | | } [INFO] [stderr] 190 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 183 | match *position_type { [INFO] [stderr] 184 | Position::Relative => { [INFO] [stderr] 185 | current_point = current_point.offset(param, 0f32); [INFO] [stderr] 186 | } [INFO] [stderr] 187 | Position::Absolute => { [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/painter.rs:197:75 [INFO] [stderr] | [INFO] [stderr] 197 | fn perform_vertical_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/painter.rs:197:56 [INFO] [stderr] | [INFO] [stderr] 197 | fn perform_vertical_line(&mut self, position_type: &Position, params: &Vec) -> Result<(), MyError> { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `Position` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/painter.rs:201:13 [INFO] [stderr] | [INFO] [stderr] 201 | / match position_type { [INFO] [stderr] 202 | | &Position::Relative => { [INFO] [stderr] 203 | | current_point = current_point.offset(0f32, param); [INFO] [stderr] 204 | | } [INFO] [stderr] ... | [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 201 | match *position_type { [INFO] [stderr] 202 | Position::Relative => { [INFO] [stderr] 203 | current_point = current_point.offset(0f32, param); [INFO] [stderr] 204 | } [INFO] [stderr] 205 | Position::Absolute => { [INFO] [stderr] | [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/main.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | / match event { [INFO] [stderr] 34 | | Event::Tag(svg::node::element::tag::Path, _, attributes) => { [INFO] [stderr] 35 | | let data = attributes.get("d").unwrap(); [INFO] [stderr] 36 | | let data = Data::parse(data).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 43 | | _ => {} [INFO] [stderr] 44 | | } [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] 33 | if let Event::Tag(svg::node::element::tag::Path, _, attributes) = event { [INFO] [stderr] 34 | let data = attributes.get("d").unwrap(); [INFO] [stderr] 35 | let data = Data::parse(data).unwrap(); [INFO] [stderr] 36 | let mut painter = Painter::new(svg_area.clone(), paint_area.clone()); [INFO] [stderr] 37 | [INFO] [stderr] 38 | for command in data.iter() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:35:28 [INFO] [stderr] | [INFO] [stderr] 35 | let data = attributes.get("d").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&attributes["d"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [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/main.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | / match event { [INFO] [stderr] 64 | | Event::Tag(svg::node::element::tag::SVG, _, attributes) => { [INFO] [stderr] 65 | | let view_box = attributes.get("viewBox"); [INFO] [stderr] 66 | | if view_box.is_none() { [INFO] [stderr] ... | [INFO] [stderr] 77 | | _ => {} [INFO] [stderr] 78 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 63 | if let Event::Tag(svg::node::element::tag::SVG, _, attributes) = event { [INFO] [stderr] 64 | let view_box = attributes.get("viewBox"); [INFO] [stderr] 65 | if view_box.is_none() { [INFO] [stderr] 66 | continue; [INFO] [stderr] 67 | } [INFO] [stderr] 68 | let view_box = view_box.unwrap().split(" "); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:69:56 [INFO] [stderr] | [INFO] [stderr] 69 | let view_box = view_box.unwrap().split(" "); [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | / match event { [INFO] [stderr] 83 | | Event::Tag(svg::node::element::tag::SVG, _, attributes) => { [INFO] [stderr] 84 | | let width = attributes.get("width"); [INFO] [stderr] 85 | | let height = attributes.get("height"); [INFO] [stderr] ... | [INFO] [stderr] 96 | | _ => {} [INFO] [stderr] 97 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 82 | if let Event::Tag(svg::node::element::tag::SVG, _, attributes) = event { [INFO] [stderr] 83 | let width = attributes.get("width"); [INFO] [stderr] 84 | let height = attributes.get("height"); [INFO] [stderr] 85 | if width.is_none() || height.is_none() { [INFO] [stderr] 86 | continue; [INFO] [stderr] 87 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "92fca1affb040189366e2c0e3b4004e3e1b3ca3a9d189806f55e5147da322dd6"` [INFO] running `"docker" "rm" "-f" "92fca1affb040189366e2c0e3b4004e3e1b3ca3a9d189806f55e5147da322dd6"` [INFO] [stdout] 92fca1affb040189366e2c0e3b4004e3e1b3ca3a9d189806f55e5147da322dd6