[INFO] crate flo_canvas 0.1.0 is already in cache [INFO] extracting crate flo_canvas 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/flo_canvas/0.1.0 [INFO] extracting crate flo_canvas 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/flo_canvas/0.1.0 [INFO] validating manifest of flo_canvas-0.1.0 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 flo_canvas-0.1.0 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 flo_canvas-0.1.0 [INFO] finished frobbing flo_canvas-0.1.0 [INFO] frobbed toml for flo_canvas-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/flo_canvas/0.1.0/Cargo.toml [INFO] started frobbing flo_canvas-0.1.0 [INFO] finished frobbing flo_canvas-0.1.0 [INFO] frobbed toml for flo_canvas-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/flo_canvas/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting flo_canvas-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/flo_canvas/0.1.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] a52835f3e999792ac90f6e41382e428606e32c5ffe2dac2b4d0a3671ad9cecd3 [INFO] running `"docker" "start" "-a" "a52835f3e999792ac90f6e41382e428606e32c5ffe2dac2b4d0a3671ad9cecd3"` [INFO] [stderr] Checking rust-hsluv v0.1.3 [INFO] [stderr] Checking desync v0.1.2 [INFO] [stderr] Checking flo_curves v0.1.0 [INFO] [stderr] Checking flo_canvas v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/color.rs:30:22 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/color.rs:30:25 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/color.rs:30:28 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/color.rs:44:22 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/color.rs:44:25 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/color.rs:44:28 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/color.rs:60:22 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/color.rs:60:25 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/color.rs:60:28 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/canvas.rs:210:17 [INFO] [stderr] | [INFO] [stderr] 210 | core: core, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `core` [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/canvas.rs:428:31 [INFO] [stderr] | [INFO] [stderr] 428 | FragileCanvasStream { stream: stream } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/color.rs:30:22 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/color.rs:30:25 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/color.rs:30:28 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/color.rs:44:22 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/color.rs:44:25 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/color.rs:44:28 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/color.rs:60:22 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/color.rs:60:25 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/color.rs:60:28 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/canvas.rs:210:17 [INFO] [stderr] | [INFO] [stderr] 210 | core: core, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `core` [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/canvas.rs:428:31 [INFO] [stderr] | [INFO] [stderr] 428 | FragileCanvasStream { stream: stream } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/encoding.rs:217:32 [INFO] [stderr] | [INFO] [stderr] 217 | let test_number: u32 = 0xabcd1234; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xabcd_1234` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/gc.rs:140:63 [INFO] [stderr] | [INFO] [stderr] 140 | let circle = arc::Circle::new(Coord2(center_x as f64, center_y as f64), radius as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(center_x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/gc.rs:140:80 [INFO] [stderr] | [INFO] [stderr] 140 | let circle = arc::Circle::new(Coord2(center_x as f64, center_y as f64), radius as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(center_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/gc.rs:140:98 [INFO] [stderr] | [INFO] [stderr] 140 | let circle = arc::Circle::new(Coord2(center_x as f64, center_y as f64), radius as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(radius)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/color.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | / match self { [INFO] [stderr] 27 | | &Color::Rgba(r, g, b, a) => (r, g, b, a), [INFO] [stderr] 28 | | [INFO] [stderr] 29 | | &Color::Hsluv(h, s, l, a) => { [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [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] 26 | match *self { [INFO] [stderr] 27 | Color::Rgba(r, g, b, a) => (r, g, b, a), [INFO] [stderr] 28 | [INFO] [stderr] 29 | Color::Hsluv(h, s, l, a) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:30:47 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(h)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:30:57 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(s)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:30:67 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(l)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/color.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match self { [INFO] [stderr] 41 | | &Color::Hsluv(h, s, l, a) => (h, s, l, a), [INFO] [stderr] 42 | | [INFO] [stderr] 43 | | &Color::Rgba(r, g, b, a) => { [INFO] [stderr] ... | [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [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] 40 | match *self { [INFO] [stderr] 41 | Color::Hsluv(h, s, l, a) => (h, s, l, a), [INFO] [stderr] 42 | [INFO] [stderr] 43 | Color::Rgba(r, g, b, a) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:44:47 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(r)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:44:57 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:44:67 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:60:47 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(r)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:60:57 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:60:67 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/color.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &Color::Rgba(r, g, b, _) => Color::Rgba(r, g, b, new_alpha), [INFO] [stderr] 72 | | &Color::Hsluv(h, s, l, _) => Color::Hsluv(h, s, l, new_alpha) [INFO] [stderr] 73 | | } [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] 70 | match *self { [INFO] [stderr] 71 | Color::Rgba(r, g, b, _) => Color::Rgba(r, g, b, new_alpha), [INFO] [stderr] 72 | Color::Hsluv(h, s, l, _) => Color::Hsluv(h, s, l, new_alpha) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/canvas.rs:84:17 [INFO] [stderr] | [INFO] [stderr] 84 | / match drawing { [INFO] [stderr] 85 | | &(_, Draw::ClearCanvas) => true, [INFO] [stderr] 86 | | &(_, Draw::LayerBlend(_, _)) => true, [INFO] [stderr] 87 | | &(layer, _) => layer != layer_id [INFO] [stderr] 88 | | } [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] 84 | match *drawing { [INFO] [stderr] 85 | (_, Draw::ClearCanvas) => true, [INFO] [stderr] 86 | (_, Draw::LayerBlend(_, _)) => true, [INFO] [stderr] 87 | (layer, _) => layer != layer_id [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/canvas.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | / match draw { [INFO] [stderr] 107 | | &Draw::ClearCanvas => { [INFO] [stderr] 108 | | // Clearing the canvas empties the command list and updates the clear count [INFO] [stderr] 109 | | self.drawing_since_last_clear = vec![]; [INFO] [stderr] ... | [INFO] [stderr] 151 | | _ => self.drawing_since_last_clear.push((self.current_layer, *draw)) [INFO] [stderr] 152 | | } [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] 106 | match *draw { [INFO] [stderr] 107 | Draw::ClearCanvas => { [INFO] [stderr] 108 | // Clearing the canvas empties the command list and updates the clear count [INFO] [stderr] 109 | self.drawing_since_last_clear = vec![]; [INFO] [stderr] 110 | self.current_layer = 0; [INFO] [stderr] 111 | clear_pending = true; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/canvas.rs:163:65 [INFO] [stderr] | [INFO] [stderr] 163 | if !self.pending_streams[stream_index].send_drawing(new_drawing.iter().map(|draw| *draw), clear_pending) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `new_drawing.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `canvas::Canvas` [INFO] [stderr] --> src/canvas.rs:180:5 [INFO] [stderr] | [INFO] [stderr] 180 | / pub fn new() -> Canvas { [INFO] [stderr] 181 | | // A canvas is initially just a clear command [INFO] [stderr] 182 | | let core = CanvasCore { [INFO] [stderr] 183 | | drawing_since_last_clear: vec![ (0, Draw::ClearCanvas) ], [INFO] [stderr] ... | [INFO] [stderr] 190 | | } [INFO] [stderr] 191 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 176 | impl Default for canvas::Canvas { [INFO] [stderr] 177 | fn default() -> Self { [INFO] [stderr] 178 | Self::new() [INFO] [stderr] 179 | } [INFO] [stderr] 180 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/canvas.rs:198:12 [INFO] [stderr] | [INFO] [stderr] 198 | if to_draw.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!to_draw.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/canvas.rs:243:85 [INFO] [stderr] | [INFO] [stderr] 243 | self.core.sync(|core| core.drawing_since_last_clear.iter().map(|&(_, draw)| draw.clone()).collect()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `draw` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/encoding.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match self { [INFO] [stderr] 114 | | &Miter => 'M', [INFO] [stderr] 115 | | &Round => 'R', [INFO] [stderr] 116 | | &Bevel => 'B' [INFO] [stderr] 117 | | }.encode_canvas(append_to) [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] 113 | match *self { [INFO] [stderr] 114 | Miter => 'M', [INFO] [stderr] 115 | Round => 'R', [INFO] [stderr] 116 | Bevel => 'B' [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/encoding.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | / match self { [INFO] [stderr] 126 | | &Butt => 'B', [INFO] [stderr] 127 | | &Round => 'R', [INFO] [stderr] 128 | | &Square => 'S' [INFO] [stderr] 129 | | }.encode_canvas(append_to) [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] 125 | match *self { [INFO] [stderr] 126 | Butt => 'B', [INFO] [stderr] 127 | Round => 'R', [INFO] [stderr] 128 | Square => 'S' [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/encoding.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | / match self { [INFO] [stderr] 138 | | &SourceOver => ('S', 'V'), [INFO] [stderr] 139 | | &SourceIn => ('S', 'I'), [INFO] [stderr] 140 | | &SourceOut => ('S', 'O'), [INFO] [stderr] ... | [INFO] [stderr] 150 | | &Lighten => ('E', 'L') [INFO] [stderr] 151 | | }.encode_canvas(append_to) [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] 137 | match *self { [INFO] [stderr] 138 | SourceOver => ('S', 'V'), [INFO] [stderr] 139 | SourceIn => ('S', 'I'), [INFO] [stderr] 140 | SourceOut => ('S', 'O'), [INFO] [stderr] 141 | DestinationOver => ('D', 'V'), [INFO] [stderr] 142 | DestinationIn => ('D', 'I'), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/encoding.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | / match self { [INFO] [stderr] 169 | | &NewPath => ('N', 'p').encode_canvas(append_to), [INFO] [stderr] 170 | | &Move(x, y) => ('m', x, y).encode_canvas(append_to), [INFO] [stderr] 171 | | &Line(x, y) => ('l', x, y).encode_canvas(append_to), [INFO] [stderr] ... | [INFO] [stderr] 200 | | &ClearLayer => ('N', 'C').encode_canvas(append_to) [INFO] [stderr] 201 | | } [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] 168 | match *self { [INFO] [stderr] 169 | NewPath => ('N', 'p').encode_canvas(append_to), [INFO] [stderr] 170 | Move(x, y) => ('m', x, y).encode_canvas(append_to), [INFO] [stderr] 171 | Line(x, y) => ('l', x, y).encode_canvas(append_to), [INFO] [stderr] 172 | BezierCurve(p1, p2, p3) => ('c', p1, p2, p3).encode_canvas(append_to), [INFO] [stderr] 173 | ClosePath => ('.').encode_canvas(append_to), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/gc.rs:140:63 [INFO] [stderr] | [INFO] [stderr] 140 | let circle = arc::Circle::new(Coord2(center_x as f64, center_y as f64), radius as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(center_x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/gc.rs:140:80 [INFO] [stderr] | [INFO] [stderr] 140 | let circle = arc::Circle::new(Coord2(center_x as f64, center_y as f64), radius as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(center_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/gc.rs:140:98 [INFO] [stderr] | [INFO] [stderr] 140 | let circle = arc::Circle::new(Coord2(center_x as f64, center_y as f64), radius as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(radius)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/color.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | / match self { [INFO] [stderr] 27 | | &Color::Rgba(r, g, b, a) => (r, g, b, a), [INFO] [stderr] 28 | | [INFO] [stderr] 29 | | &Color::Hsluv(h, s, l, a) => { [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [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] 26 | match *self { [INFO] [stderr] 27 | Color::Rgba(r, g, b, a) => (r, g, b, a), [INFO] [stderr] 28 | [INFO] [stderr] 29 | Color::Hsluv(h, s, l, a) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:30:47 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(h)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:30:57 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(s)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:30:67 [INFO] [stderr] | [INFO] [stderr] 30 | let (r, g, b) = hsluv_to_rgb((h as f64, s as f64, l as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(l)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/color.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match self { [INFO] [stderr] 41 | | &Color::Hsluv(h, s, l, a) => (h, s, l, a), [INFO] [stderr] 42 | | [INFO] [stderr] 43 | | &Color::Rgba(r, g, b, a) => { [INFO] [stderr] ... | [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [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] 40 | match *self { [INFO] [stderr] 41 | Color::Hsluv(h, s, l, a) => (h, s, l, a), [INFO] [stderr] 42 | [INFO] [stderr] 43 | Color::Rgba(r, g, b, a) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:44:47 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(r)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:44:57 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:44:67 [INFO] [stderr] | [INFO] [stderr] 44 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:60:47 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(r)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:60:57 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(g)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color.rs:60:67 [INFO] [stderr] | [INFO] [stderr] 60 | let (h, s, l) = rgb_to_hsluv((r as f64, g as f64, b as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/color.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &Color::Rgba(r, g, b, _) => Color::Rgba(r, g, b, new_alpha), [INFO] [stderr] 72 | | &Color::Hsluv(h, s, l, _) => Color::Hsluv(h, s, l, new_alpha) [INFO] [stderr] 73 | | } [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] 70 | match *self { [INFO] [stderr] 71 | Color::Rgba(r, g, b, _) => Color::Rgba(r, g, b, new_alpha), [INFO] [stderr] 72 | Color::Hsluv(h, s, l, _) => Color::Hsluv(h, s, l, new_alpha) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/color.rs:90:21 [INFO] [stderr] | [INFO] [stderr] 90 | assert!(a == 0.9); [INFO] [stderr] | ^^^^^^^^ help: consider comparing them within some error: `(a - 0.9).abs() < error` [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] --> src/color.rs:90:21 [INFO] [stderr] | [INFO] [stderr] 90 | assert!(a == 0.9); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/color.rs:105:21 [INFO] [stderr] | [INFO] [stderr] 105 | assert!(a == 0.8); [INFO] [stderr] | ^^^^^^^^ help: consider comparing them within some error: `(a - 0.8).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/color.rs:105:21 [INFO] [stderr] | [INFO] [stderr] 105 | assert!(a == 0.8); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/color.rs:119:17 [INFO] [stderr] | [INFO] [stderr] 119 | assert!(a == 0.8); [INFO] [stderr] | ^^^^^^^^ help: consider comparing them within some error: `(a - 0.8).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/color.rs:119:17 [INFO] [stderr] | [INFO] [stderr] 119 | assert!(a == 0.8); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/canvas.rs:84:17 [INFO] [stderr] | [INFO] [stderr] 84 | / match drawing { [INFO] [stderr] 85 | | &(_, Draw::ClearCanvas) => true, [INFO] [stderr] 86 | | &(_, Draw::LayerBlend(_, _)) => true, [INFO] [stderr] 87 | | &(layer, _) => layer != layer_id [INFO] [stderr] 88 | | } [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] 84 | match *drawing { [INFO] [stderr] 85 | (_, Draw::ClearCanvas) => true, [INFO] [stderr] 86 | (_, Draw::LayerBlend(_, _)) => true, [INFO] [stderr] 87 | (layer, _) => layer != layer_id [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/canvas.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | / match draw { [INFO] [stderr] 107 | | &Draw::ClearCanvas => { [INFO] [stderr] 108 | | // Clearing the canvas empties the command list and updates the clear count [INFO] [stderr] 109 | | self.drawing_since_last_clear = vec![]; [INFO] [stderr] ... | [INFO] [stderr] 151 | | _ => self.drawing_since_last_clear.push((self.current_layer, *draw)) [INFO] [stderr] 152 | | } [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] 106 | match *draw { [INFO] [stderr] 107 | Draw::ClearCanvas => { [INFO] [stderr] 108 | // Clearing the canvas empties the command list and updates the clear count [INFO] [stderr] 109 | self.drawing_since_last_clear = vec![]; [INFO] [stderr] 110 | self.current_layer = 0; [INFO] [stderr] 111 | clear_pending = true; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/canvas.rs:163:65 [INFO] [stderr] | [INFO] [stderr] 163 | if !self.pending_streams[stream_index].send_drawing(new_drawing.iter().map(|draw| *draw), clear_pending) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `new_drawing.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `canvas::Canvas` [INFO] [stderr] --> src/canvas.rs:180:5 [INFO] [stderr] | [INFO] [stderr] 180 | / pub fn new() -> Canvas { [INFO] [stderr] 181 | | // A canvas is initially just a clear command [INFO] [stderr] 182 | | let core = CanvasCore { [INFO] [stderr] 183 | | drawing_since_last_clear: vec![ (0, Draw::ClearCanvas) ], [INFO] [stderr] ... | [INFO] [stderr] 190 | | } [INFO] [stderr] 191 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 176 | impl Default for canvas::Canvas { [INFO] [stderr] 177 | fn default() -> Self { [INFO] [stderr] 178 | Self::new() [INFO] [stderr] 179 | } [INFO] [stderr] 180 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/canvas.rs:198:12 [INFO] [stderr] | [INFO] [stderr] 198 | if to_draw.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!to_draw.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/canvas.rs:243:85 [INFO] [stderr] | [INFO] [stderr] 243 | self.core.sync(|core| core.drawing_since_last_clear.iter().map(|&(_, draw)| draw.clone()).collect()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `draw` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/encoding.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match self { [INFO] [stderr] 114 | | &Miter => 'M', [INFO] [stderr] 115 | | &Round => 'R', [INFO] [stderr] 116 | | &Bevel => 'B' [INFO] [stderr] 117 | | }.encode_canvas(append_to) [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] 113 | match *self { [INFO] [stderr] 114 | Miter => 'M', [INFO] [stderr] 115 | Round => 'R', [INFO] [stderr] 116 | Bevel => 'B' [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/encoding.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | / match self { [INFO] [stderr] 126 | | &Butt => 'B', [INFO] [stderr] 127 | | &Round => 'R', [INFO] [stderr] 128 | | &Square => 'S' [INFO] [stderr] 129 | | }.encode_canvas(append_to) [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] 125 | match *self { [INFO] [stderr] 126 | Butt => 'B', [INFO] [stderr] 127 | Round => 'R', [INFO] [stderr] 128 | Square => 'S' [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/encoding.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | / match self { [INFO] [stderr] 138 | | &SourceOver => ('S', 'V'), [INFO] [stderr] 139 | | &SourceIn => ('S', 'I'), [INFO] [stderr] 140 | | &SourceOut => ('S', 'O'), [INFO] [stderr] ... | [INFO] [stderr] 150 | | &Lighten => ('E', 'L') [INFO] [stderr] 151 | | }.encode_canvas(append_to) [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] 137 | match *self { [INFO] [stderr] 138 | SourceOver => ('S', 'V'), [INFO] [stderr] 139 | SourceIn => ('S', 'I'), [INFO] [stderr] 140 | SourceOut => ('S', 'O'), [INFO] [stderr] 141 | DestinationOver => ('D', 'V'), [INFO] [stderr] 142 | DestinationIn => ('D', 'I'), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/encoding.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | / match self { [INFO] [stderr] 169 | | &NewPath => ('N', 'p').encode_canvas(append_to), [INFO] [stderr] 170 | | &Move(x, y) => ('m', x, y).encode_canvas(append_to), [INFO] [stderr] 171 | | &Line(x, y) => ('l', x, y).encode_canvas(append_to), [INFO] [stderr] ... | [INFO] [stderr] 200 | | &ClearLayer => ('N', 'C').encode_canvas(append_to) [INFO] [stderr] 201 | | } [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] 168 | match *self { [INFO] [stderr] 169 | NewPath => ('N', 'p').encode_canvas(append_to), [INFO] [stderr] 170 | Move(x, y) => ('m', x, y).encode_canvas(append_to), [INFO] [stderr] 171 | Line(x, y) => ('l', x, y).encode_canvas(append_to), [INFO] [stderr] 172 | BezierCurve(p1, p2, p3) => ('c', p1, p2, p3).encode_canvas(append_to), [INFO] [stderr] 173 | ClosePath => ('.').encode_canvas(append_to), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/encoding.rs:222:28 [INFO] [stderr] | [INFO] [stderr] 222 | assert!(encoded == "0IRzrC".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `"0IRzrC"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/encoding.rs:227:32 [INFO] [stderr] | [INFO] [stderr] 227 | let test_number: f32 = 3.141; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/encoding.rs:232:28 [INFO] [stderr] | [INFO] [stderr] 232 | assert!(encoded == "lYQSAB".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `"lYQSAB"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `flo_canvas`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a52835f3e999792ac90f6e41382e428606e32c5ffe2dac2b4d0a3671ad9cecd3"` [INFO] running `"docker" "rm" "-f" "a52835f3e999792ac90f6e41382e428606e32c5ffe2dac2b4d0a3671ad9cecd3"` [INFO] [stdout] a52835f3e999792ac90f6e41382e428606e32c5ffe2dac2b4d0a3671ad9cecd3