[INFO] crate chimper 0.2.1 is already in cache [INFO] extracting crate chimper 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/chimper/0.2.1 [INFO] extracting crate chimper 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/chimper/0.2.1 [INFO] validating manifest of chimper-0.2.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of chimper-0.2.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing chimper-0.2.1 [INFO] finished frobbing chimper-0.2.1 [INFO] frobbed toml for chimper-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/chimper/0.2.1/Cargo.toml [INFO] started frobbing chimper-0.2.1 [INFO] finished frobbing chimper-0.2.1 [INFO] frobbed toml for chimper-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/chimper/0.2.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting chimper-0.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/chimper/0.2.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 74ec03135c6181c5e6e3a2f40a29e27af51938e59ae3e3919d894e2c86463d41 [INFO] running `"docker" "start" "-a" "74ec03135c6181c5e6e3a2f40a29e27af51938e59ae3e3919d894e2c86463d41"` [INFO] [stderr] Compiling cc v1.0.28 [INFO] [stderr] Compiling semver-parser v0.7.0 [INFO] [stderr] Compiling bitflags v1.0.4 [INFO] [stderr] Compiling autocfg v0.1.2 [INFO] [stderr] Checking rand_core v0.4.0 [INFO] [stderr] Compiling arrayvec v0.4.10 [INFO] [stderr] Checking downcast-rs v1.0.3 [INFO] [stderr] Compiling khronos_api v2.2.0 [INFO] [stderr] Checking void v1.0.2 [INFO] [stderr] Compiling num-traits v0.2.6 [INFO] [stderr] Compiling num-integer v0.1.39 [INFO] [stderr] Compiling proc-macro2 v0.4.26 [INFO] [stderr] Compiling cfg-if v0.1.6 [INFO] [stderr] Compiling pkg-config v0.3.14 [INFO] [stderr] Checking stable_deref_trait v1.1.1 [INFO] [stderr] Compiling byteorder v1.3.1 [INFO] [stderr] Compiling nix v0.11.0 [INFO] [stderr] Compiling serde v1.0.85 [INFO] [stderr] Checking remove_dir_all v0.5.1 [INFO] [stderr] Compiling unicode-xid v0.1.0 [INFO] [stderr] Compiling typenum v1.10.0 [INFO] [stderr] Compiling num-bigint v0.2.2 [INFO] [stderr] Compiling num-complex v0.2.1 [INFO] [stderr] Compiling num-iter v0.1.37 [INFO] [stderr] Compiling rayon v1.0.3 [INFO] [stderr] Compiling num-rational v0.2.1 [INFO] [stderr] Checking adler32 v1.0.3 [INFO] [stderr] Compiling num-derive v0.2.4 [INFO] [stderr] Checking percent-encoding v1.0.1 [INFO] [stderr] Compiling glob v0.2.11 [INFO] [stderr] Checking rustc-serialize v0.3.24 [INFO] [stderr] Checking piston-float v0.3.0 [INFO] [stderr] Checking byte-tools v0.2.0 [INFO] [stderr] Checking lzw v0.10.0 [INFO] [stderr] Checking color_quant v1.0.1 [INFO] [stderr] Checking linked-hash-map v0.5.1 [INFO] [stderr] Checking rustc-demangle v0.1.13 [INFO] [stderr] Checking fixedbitset v0.1.9 [INFO] [stderr] Checking fnv v1.0.6 [INFO] [stderr] Checking fake-simd v0.1.2 [INFO] [stderr] Checking scoped_threadpool v0.1.9 [INFO] [stderr] Checking dtoa v0.4.3 [INFO] [stderr] Checking approx v0.1.1 [INFO] [stderr] Checking crossbeam-utils v0.5.0 [INFO] [stderr] Checking rand_jitter v0.1.0 [INFO] [stderr] Compiling xml-rs v0.7.0 [INFO] [stderr] Checking rand_core v0.3.1 [INFO] [stderr] Checking unreachable v1.0.0 [INFO] [stderr] Checking log v0.4.6 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Compiling rand_chacha v0.1.1 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Compiling backtrace v0.3.13 [INFO] [stderr] Checking owning_ref v0.4.0 [INFO] [stderr] Compiling x11-dl v2.18.3 [INFO] [stderr] Compiling proc-macro2 v0.3.8 [INFO] [stderr] Compiling libloading v0.5.0 [INFO] [stderr] Compiling backtrace-sys v0.1.28 [INFO] [stderr] Checking itertools v0.7.11 [INFO] [stderr] Checking inflate v0.4.4 [INFO] [stderr] Checking piston-viewport v0.3.0 [INFO] [stderr] Checking gif v0.10.1 [INFO] [stderr] Checking yaml-rust v0.4.2 [INFO] [stderr] Checking multicache v0.5.0 [INFO] [stderr] Checking petgraph v0.4.13 [INFO] [stderr] Checking libc v0.2.48 [INFO] [stderr] Checking rand_hc v0.1.0 [INFO] [stderr] Checking rand_isaac v0.1.1 [INFO] [stderr] Checking rand_xorshift v0.1.1 [INFO] [stderr] Checking smallvec v0.6.8 [INFO] [stderr] Checking lock_api v0.1.5 [INFO] [stderr] Compiling rustc_version v0.2.3 [INFO] [stderr] Compiling wayland-scanner v0.20.12 [INFO] [stderr] Checking rand_os v0.1.1 [INFO] [stderr] Checking memmap v0.6.2 [INFO] [stderr] Checking num_cpus v1.9.0 [INFO] [stderr] Checking shared_library v0.1.9 [INFO] [stderr] Checking time v0.1.42 [INFO] [stderr] Checking rand v0.5.6 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking daggy v0.5.0 [INFO] [stderr] Compiling quote v0.5.2 [INFO] [stderr] Compiling gl_generator v0.9.0 [INFO] [stderr] Checking crossbeam-epoch v0.3.1 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking num-complex v0.1.43 [INFO] [stderr] Compiling rand_pcg v0.1.1 [INFO] [stderr] Compiling parking_lot_core v0.3.1 [INFO] [stderr] Checking deflate v0.7.19 [INFO] [stderr] Checking stb_truetype v0.2.5 [INFO] [stderr] Checking generic-array v0.8.3 [INFO] [stderr] Compiling quote v0.6.11 [INFO] [stderr] Compiling wayland-client v0.20.12 [INFO] [stderr] Compiling wayland-protocols v0.20.12 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Compiling toml v0.4.10 [INFO] [stderr] Checking bincode v1.0.1 [INFO] [stderr] Checking serde_yaml v0.7.5 [INFO] [stderr] Checking crossbeam-deque v0.2.0 [INFO] [stderr] Checking num-bigint v0.1.44 [INFO] [stderr] Compiling syn v0.13.11 [INFO] [stderr] Checking ordered-float v0.5.2 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Compiling glutin v0.17.0 [INFO] [stderr] Compiling glium v0.22.0 [INFO] [stderr] Checking dlib v0.4.1 [INFO] [stderr] Checking block-buffer v0.2.0 [INFO] [stderr] Checking digest v0.6.2 [INFO] [stderr] Compiling syn v0.15.26 [INFO] [stderr] Checking png v0.12.0 [INFO] [stderr] Checking rayon-core v1.4.1 [INFO] [stderr] Checking rusttype v0.5.2 [INFO] [stderr] Compiling rawloader v0.35.4 [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking sha2 v0.6.0 [INFO] [stderr] Checking wayland-sys v0.20.12 [INFO] [stderr] Checking num v0.1.42 [INFO] [stderr] Checking parking_lot v0.6.4 [INFO] [stderr] Checking num v0.2.0 [INFO] [stderr] Checking wayland-commons v0.20.12 [INFO] [stderr] Checking tempfile v3.0.5 [INFO] [stderr] Checking jpeg-decoder v0.1.15 [INFO] [stderr] Checking smithay-client-toolkit v0.2.6 [INFO] [stderr] Compiling conrod_derive v0.1.2 [INFO] [stderr] Checking winit v0.16.2 [INFO] [stderr] Compiling serde_derive v1.0.85 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking pistoncore-input v0.21.0 [INFO] [stderr] Checking imagepipe v0.2.0 [INFO] [stderr] Checking conrod v0.61.1 [INFO] [stderr] Checking chimper v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cache.rs:33:3 [INFO] [stderr] | [INFO] [stderr] 33 | return SIZES.len() - 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SIZES.len() - 1` [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: long literal lacking separators [INFO] [stderr] --> src/cache.rs:44:31 [INFO] [stderr] | [INFO] [stderr] 44 | images: MultiCache::new(100000000), [INFO] [stderr] | ^^^^^^^^^ help: consider: `100_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cache.rs:45:49 [INFO] [stderr] | [INFO] [stderr] 45 | opbuffers: imagepipe::Pipeline::new_cache(100000000), [INFO] [stderr] | ^^^^^^^^^ help: consider: `100_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cache::ImageCache` [INFO] [stderr] --> src/cache.rs:42:3 [INFO] [stderr] | [INFO] [stderr] 42 | / pub fn new() -> ImageCache { [INFO] [stderr] 43 | | ImageCache { // For now default to 100MiB for both caches [INFO] [stderr] 44 | | images: MultiCache::new(100000000), [INFO] [stderr] 45 | | opbuffers: imagepipe::Pipeline::new_cache(100000000), [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [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] 41 | impl Default for cache::ImageCache { [INFO] [stderr] 42 | fn default() -> Self { [INFO] [stderr] 43 | Self::new() [INFO] [stderr] 44 | } [INFO] [stderr] 45 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:31:61 [INFO] [stderr] | [INFO] [stderr] 31 | .with_dimensions(glium::glutin::dpi::LogicalSize::new(initial_width as f64, initial_height as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_width)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:31:83 [INFO] [stderr] | [INFO] [stderr] 31 | .with_dimensions(glium::glutin::dpi::LogicalSize::new(initial_width as f64, initial_height as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:60:42 [INFO] [stderr] | [INFO] [stderr] 60 | let mut ui = conrod::UiBuilder::new([initial_width as f64, initial_height as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_width)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:60:64 [INFO] [stderr] | [INFO] [stderr] 60 | let mut ui = conrod::UiBuilder::new([initial_width as f64, initial_height as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/window.rs:163:11 [INFO] [stderr] | [INFO] [stderr] 163 | / match event { [INFO] [stderr] 164 | | Event::WindowEvent { event, .. } => match event { [INFO] [stderr] 165 | | // Break from the loop upon `Escape`. [INFO] [stderr] 166 | | WindowEvent::CloseRequested | [INFO] [stderr] ... | [INFO] [stderr] 194 | | _ => (), [INFO] [stderr] 195 | | } [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] 163 | if let Event::WindowEvent { event, .. } = event { match event { [INFO] [stderr] 164 | // Break from the loop upon `Escape`. [INFO] [stderr] 165 | WindowEvent::CloseRequested | [INFO] [stderr] 166 | WindowEvent::KeyboardInput { [INFO] [stderr] 167 | input: glium::glutin::KeyboardInput { [INFO] [stderr] 168 | virtual_keycode: Some(VirtualKeyCode::Escape), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bin/chimper.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | size: size, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `size` [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: unneeded return statement [INFO] [stderr] --> src/cache.rs:33:3 [INFO] [stderr] | [INFO] [stderr] 33 | return SIZES.len() - 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SIZES.len() - 1` [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: long literal lacking separators [INFO] [stderr] --> src/cache.rs:44:31 [INFO] [stderr] | [INFO] [stderr] 44 | images: MultiCache::new(100000000), [INFO] [stderr] | ^^^^^^^^^ help: consider: `100_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cache.rs:45:49 [INFO] [stderr] | [INFO] [stderr] 45 | opbuffers: imagepipe::Pipeline::new_cache(100000000), [INFO] [stderr] | ^^^^^^^^^ help: consider: `100_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cache::ImageCache` [INFO] [stderr] --> src/cache.rs:42:3 [INFO] [stderr] | [INFO] [stderr] 42 | / pub fn new() -> ImageCache { [INFO] [stderr] 43 | | ImageCache { // For now default to 100MiB for both caches [INFO] [stderr] 44 | | images: MultiCache::new(100000000), [INFO] [stderr] 45 | | opbuffers: imagepipe::Pipeline::new_cache(100000000), [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [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] 41 | impl Default for cache::ImageCache { [INFO] [stderr] 42 | fn default() -> Self { [INFO] [stderr] 43 | Self::new() [INFO] [stderr] 44 | } [INFO] [stderr] 45 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:31:61 [INFO] [stderr] | [INFO] [stderr] 31 | .with_dimensions(glium::glutin::dpi::LogicalSize::new(initial_width as f64, initial_height as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_width)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:31:83 [INFO] [stderr] | [INFO] [stderr] 31 | .with_dimensions(glium::glutin::dpi::LogicalSize::new(initial_width as f64, initial_height as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:60:42 [INFO] [stderr] | [INFO] [stderr] 60 | let mut ui = conrod::UiBuilder::new([initial_width as f64, initial_height as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_width)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:60:64 [INFO] [stderr] | [INFO] [stderr] 60 | let mut ui = conrod::UiBuilder::new([initial_width as f64, initial_height as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/window.rs:163:11 [INFO] [stderr] | [INFO] [stderr] 163 | / match event { [INFO] [stderr] 164 | | Event::WindowEvent { event, .. } => match event { [INFO] [stderr] 165 | | // Break from the loop upon `Escape`. [INFO] [stderr] 166 | | WindowEvent::CloseRequested | [INFO] [stderr] ... | [INFO] [stderr] 194 | | _ => (), [INFO] [stderr] 195 | | } [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] 163 | if let Event::WindowEvent { event, .. } = event { match event { [INFO] [stderr] 164 | // Break from the loop upon `Escape`. [INFO] [stderr] 165 | WindowEvent::CloseRequested | [INFO] [stderr] 166 | WindowEvent::KeyboardInput { [INFO] [stderr] 167 | input: glium::glutin::KeyboardInput { [INFO] [stderr] 168 | virtual_keycode: Some(VirtualKeyCode::Escape), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cache.rs:33:3 [INFO] [stderr] | [INFO] [stderr] 33 | return SIZES.len() - 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SIZES.len() - 1` [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: long literal lacking separators [INFO] [stderr] --> src/cache.rs:44:31 [INFO] [stderr] | [INFO] [stderr] 44 | images: MultiCache::new(100000000), [INFO] [stderr] | ^^^^^^^^^ help: consider: `100_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cache.rs:45:49 [INFO] [stderr] | [INFO] [stderr] 45 | opbuffers: imagepipe::Pipeline::new_cache(100000000), [INFO] [stderr] | ^^^^^^^^^ help: consider: `100_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cache::ImageCache` [INFO] [stderr] --> src/cache.rs:42:3 [INFO] [stderr] | [INFO] [stderr] 42 | / pub fn new() -> ImageCache { [INFO] [stderr] 43 | | ImageCache { // For now default to 100MiB for both caches [INFO] [stderr] 44 | | images: MultiCache::new(100000000), [INFO] [stderr] 45 | | opbuffers: imagepipe::Pipeline::new_cache(100000000), [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [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] 41 | impl Default for cache::ImageCache { [INFO] [stderr] 42 | fn default() -> Self { [INFO] [stderr] 43 | Self::new() [INFO] [stderr] 44 | } [INFO] [stderr] 45 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:31:61 [INFO] [stderr] | [INFO] [stderr] 31 | .with_dimensions(glium::glutin::dpi::LogicalSize::new(initial_width as f64, initial_height as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_width)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:31:83 [INFO] [stderr] | [INFO] [stderr] 31 | .with_dimensions(glium::glutin::dpi::LogicalSize::new(initial_width as f64, initial_height as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:60:42 [INFO] [stderr] | [INFO] [stderr] 60 | let mut ui = conrod::UiBuilder::new([initial_width as f64, initial_height as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_width)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/window.rs:60:64 [INFO] [stderr] | [INFO] [stderr] 60 | let mut ui = conrod::UiBuilder::new([initial_width as f64, initial_height as f64]).build(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(initial_height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/window.rs:163:11 [INFO] [stderr] | [INFO] [stderr] 163 | / match event { [INFO] [stderr] 164 | | Event::WindowEvent { event, .. } => match event { [INFO] [stderr] 165 | | // Break from the loop upon `Escape`. [INFO] [stderr] 166 | | WindowEvent::CloseRequested | [INFO] [stderr] ... | [INFO] [stderr] 194 | | _ => (), [INFO] [stderr] 195 | | } [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] 163 | if let Event::WindowEvent { event, .. } = event { match event { [INFO] [stderr] 164 | // Break from the loop upon `Escape`. [INFO] [stderr] 165 | WindowEvent::CloseRequested | [INFO] [stderr] 166 | WindowEvent::KeyboardInput { [INFO] [stderr] 167 | input: glium::glutin::KeyboardInput { [INFO] [stderr] 168 | virtual_keycode: Some(VirtualKeyCode::Escape), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bin/chimper.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | size: size, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `size` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bin/test_awakened.rs:114:7 [INFO] [stderr] | [INFO] [stderr] 114 | / match event { [INFO] [stderr] 115 | | glium::glutin::Event::Awakened => { [INFO] [stderr] 116 | | awake_count += 1; [INFO] [stderr] 117 | | eprintln!("Awakening num {}", awake_count); [INFO] [stderr] ... | [INFO] [stderr] 120 | | _ => (), [INFO] [stderr] 121 | | } [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] 114 | if let glium::glutin::Event::Awakened = event { [INFO] [stderr] 115 | awake_count += 1; [INFO] [stderr] 116 | eprintln!("Awakening num {}", awake_count); [INFO] [stderr] 117 | return glium::glutin::ControlFlow::Break [INFO] [stderr] 118 | } [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/bin/test_awakened.rs:114:7 [INFO] [stderr] | [INFO] [stderr] 114 | / match event { [INFO] [stderr] 115 | | glium::glutin::Event::Awakened => { [INFO] [stderr] 116 | | awake_count += 1; [INFO] [stderr] 117 | | eprintln!("Awakening num {}", awake_count); [INFO] [stderr] ... | [INFO] [stderr] 120 | | _ => (), [INFO] [stderr] 121 | | } [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] 114 | if let glium::glutin::Event::Awakened = event { [INFO] [stderr] 115 | awake_count += 1; [INFO] [stderr] 116 | eprintln!("Awakening num {}", awake_count); [INFO] [stderr] 117 | return glium::glutin::ControlFlow::Break [INFO] [stderr] 118 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/bin/chimper.rs:72:3 [INFO] [stderr] | [INFO] [stderr] 72 | Requested{request: RequestedImage, current: Option}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/bin/chimper.rs:72:3 [INFO] [stderr] | [INFO] [stderr] 72 | Requested{request: RequestedImage, current: Option}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:92:38 [INFO] [stderr] | [INFO] [stderr] 92 | let sidewidth = self.sidewidth * ((self.use_sidepane as u8) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((self.use_sidepane as u8))` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:93:38 [INFO] [stderr] | [INFO] [stderr] 93 | let dragwidth = self.dragwidth * ((self.use_sidepane as u8) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((self.use_sidepane as u8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:156:21 [INFO] [stderr] | [INFO] [stderr] 156 | let scale = (image.width as f64)/(image.height as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.width)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:156:42 [INFO] [stderr] | [INFO] [stderr] 156 | let scale = (image.width as f64)/(image.height as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:157:83 [INFO] [stderr] | [INFO] [stderr] 157 | let mut width = (ui.w_of(ids.imgcanvas).unwrap() - self.imagepadding).min(image.width as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.width)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:158:84 [INFO] [stderr] | [INFO] [stderr] 158 | let mut height = (ui.h_of(ids.imgcanvas).unwrap() - self.imagepadding).min(image.height as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bin/chimper.rs:195:11 [INFO] [stderr] | [INFO] [stderr] 195 | / match event { [INFO] [stderr] 196 | | conrod::widget::file_navigator::Event::ChangeSelection(pbuf) => { [INFO] [stderr] 197 | | if pbuf.len() > 0 { [INFO] [stderr] 198 | | let path = pbuf[0].as_path(); [INFO] [stderr] ... | [INFO] [stderr] 206 | | _ => {}, [INFO] [stderr] 207 | | } [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] 195 | if let conrod::widget::file_navigator::Event::ChangeSelection(pbuf) = event { [INFO] [stderr] 196 | if pbuf.len() > 0 { [INFO] [stderr] 197 | let path = pbuf[0].as_path(); [INFO] [stderr] 198 | if path.is_file() { [INFO] [stderr] 199 | eprintln!("Loading file {:?}", path); [INFO] [stderr] 200 | self.file = Some(path.to_str().unwrap().to_string()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bin/chimper.rs:197:18 [INFO] [stderr] | [INFO] [stderr] 197 | if pbuf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!pbuf.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] error: for loop over `widget::drop_down_list::DropDownList::new(&ORIENTATION_NAMES, Some(self.orientation)) [INFO] [stderr] .w_h(130.0, 30.0) [INFO] [stderr] .top_left_with_margin_on(ids.setcont, 6.0) [INFO] [stderr] .set(ids.dropdown, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/bin/chimper.rs:210:22 [INFO] [stderr] | [INFO] [stderr] 210 | for event in widget::drop_down_list::DropDownList::new(&ORIENTATION_NAMES, Some(self.orientation)) [INFO] [stderr] | ______________________^ [INFO] [stderr] 211 | | .w_h(130.0, 30.0) [INFO] [stderr] 212 | | .top_left_with_margin_on(ids.setcont, 6.0) [INFO] [stderr] 213 | | .set(ids.dropdown, ui) [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_option)] on by default [INFO] [stderr] = help: consider replacing `for event in widget::drop_down_list::DropDownList::new(&ORIENTATION_NAMES, Some(self.orientation)) [INFO] [stderr] .w_h(130.0, 30.0) [INFO] [stderr] .top_left_with_margin_on(ids.setcont, 6.0) [INFO] [stderr] .set(ids.dropdown, ui)` with `if let Some(event) = widget::drop_down_list::DropDownList::new(&ORIENTATION_NAMES, Some(self.orientation)) [INFO] [stderr] .w_h(130.0, 30.0) [INFO] [stderr] .top_left_with_margin_on(ids.setcont, 6.0) [INFO] [stderr] .set(ids.dropdown, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [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/bin/chimper.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | / match *event { [INFO] [stderr] 226 | | conrod::event::Input::Press(conrod::input::Button::Keyboard(conrod::input::Key::Tab)) => { [INFO] [stderr] 227 | | self.use_sidepane = !self.use_sidepane; [INFO] [stderr] 228 | | }, [INFO] [stderr] 229 | | _ => (), [INFO] [stderr] 230 | | } [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] 225 | if let conrod::event::Input::Press(conrod::input::Button::Keyboard(conrod::input::Key::Tab)) = *event { [INFO] [stderr] 226 | self.use_sidepane = !self.use_sidepane; [INFO] [stderr] 227 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `chimper`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bin/test.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / match *event { [INFO] [stderr] 62 | | conrod::event::Input::Press(conrod::input::Button::Keyboard(conrod::input::Key::Tab)) => { [INFO] [stderr] 63 | | self.show = !self.show; [INFO] [stderr] 64 | | }, [INFO] [stderr] 65 | | _ => (), [INFO] [stderr] 66 | | } [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] 61 | if let conrod::event::Input::Press(conrod::input::Button::Keyboard(conrod::input::Key::Tab)) = *event { [INFO] [stderr] 62 | self.show = !self.show; [INFO] [stderr] 63 | } [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/bin/test.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / match *event { [INFO] [stderr] 62 | | conrod::event::Input::Press(conrod::input::Button::Keyboard(conrod::input::Key::Tab)) => { [INFO] [stderr] 63 | | self.show = !self.show; [INFO] [stderr] 64 | | }, [INFO] [stderr] 65 | | _ => (), [INFO] [stderr] 66 | | } [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] 61 | if let conrod::event::Input::Press(conrod::input::Button::Keyboard(conrod::input::Key::Tab)) = *event { [INFO] [stderr] 62 | self.show = !self.show; [INFO] [stderr] 63 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/bin/chimper.rs:72:3 [INFO] [stderr] | [INFO] [stderr] 72 | Requested{request: RequestedImage, current: Option}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/bin/chimper.rs:72:3 [INFO] [stderr] | [INFO] [stderr] 72 | Requested{request: RequestedImage, current: Option}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:92:38 [INFO] [stderr] | [INFO] [stderr] 92 | let sidewidth = self.sidewidth * ((self.use_sidepane as u8) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((self.use_sidepane as u8))` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:93:38 [INFO] [stderr] | [INFO] [stderr] 93 | let dragwidth = self.dragwidth * ((self.use_sidepane as u8) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((self.use_sidepane as u8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:156:21 [INFO] [stderr] | [INFO] [stderr] 156 | let scale = (image.width as f64)/(image.height as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.width)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:156:42 [INFO] [stderr] | [INFO] [stderr] 156 | let scale = (image.width as f64)/(image.height as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:157:83 [INFO] [stderr] | [INFO] [stderr] 157 | let mut width = (ui.w_of(ids.imgcanvas).unwrap() - self.imagepadding).min(image.width as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.width)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/bin/chimper.rs:158:84 [INFO] [stderr] | [INFO] [stderr] 158 | let mut height = (ui.h_of(ids.imgcanvas).unwrap() - self.imagepadding).min(image.height as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.height)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bin/chimper.rs:195:11 [INFO] [stderr] | [INFO] [stderr] 195 | / match event { [INFO] [stderr] 196 | | conrod::widget::file_navigator::Event::ChangeSelection(pbuf) => { [INFO] [stderr] 197 | | if pbuf.len() > 0 { [INFO] [stderr] 198 | | let path = pbuf[0].as_path(); [INFO] [stderr] ... | [INFO] [stderr] 206 | | _ => {}, [INFO] [stderr] 207 | | } [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] 195 | if let conrod::widget::file_navigator::Event::ChangeSelection(pbuf) = event { [INFO] [stderr] 196 | if pbuf.len() > 0 { [INFO] [stderr] 197 | let path = pbuf[0].as_path(); [INFO] [stderr] 198 | if path.is_file() { [INFO] [stderr] 199 | eprintln!("Loading file {:?}", path); [INFO] [stderr] 200 | self.file = Some(path.to_str().unwrap().to_string()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bin/chimper.rs:197:18 [INFO] [stderr] | [INFO] [stderr] 197 | if pbuf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!pbuf.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] error: for loop over `widget::drop_down_list::DropDownList::new(&ORIENTATION_NAMES, Some(self.orientation)) [INFO] [stderr] .w_h(130.0, 30.0) [INFO] [stderr] .top_left_with_margin_on(ids.setcont, 6.0) [INFO] [stderr] .set(ids.dropdown, ui)`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/bin/chimper.rs:210:22 [INFO] [stderr] | [INFO] [stderr] 210 | for event in widget::drop_down_list::DropDownList::new(&ORIENTATION_NAMES, Some(self.orientation)) [INFO] [stderr] | ______________________^ [INFO] [stderr] 211 | | .w_h(130.0, 30.0) [INFO] [stderr] 212 | | .top_left_with_margin_on(ids.setcont, 6.0) [INFO] [stderr] 213 | | .set(ids.dropdown, ui) [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_option)] on by default [INFO] [stderr] = help: consider replacing `for event in widget::drop_down_list::DropDownList::new(&ORIENTATION_NAMES, Some(self.orientation)) [INFO] [stderr] .w_h(130.0, 30.0) [INFO] [stderr] .top_left_with_margin_on(ids.setcont, 6.0) [INFO] [stderr] .set(ids.dropdown, ui)` with `if let Some(event) = widget::drop_down_list::DropDownList::new(&ORIENTATION_NAMES, Some(self.orientation)) [INFO] [stderr] .w_h(130.0, 30.0) [INFO] [stderr] .top_left_with_margin_on(ids.setcont, 6.0) [INFO] [stderr] .set(ids.dropdown, ui)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [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/bin/chimper.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | / match *event { [INFO] [stderr] 226 | | conrod::event::Input::Press(conrod::input::Button::Keyboard(conrod::input::Key::Tab)) => { [INFO] [stderr] 227 | | self.use_sidepane = !self.use_sidepane; [INFO] [stderr] 228 | | }, [INFO] [stderr] 229 | | _ => (), [INFO] [stderr] 230 | | } [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] 225 | if let conrod::event::Input::Press(conrod::input::Button::Keyboard(conrod::input::Key::Tab)) = *event { [INFO] [stderr] 226 | self.use_sidepane = !self.use_sidepane; [INFO] [stderr] 227 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `chimper`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "74ec03135c6181c5e6e3a2f40a29e27af51938e59ae3e3919d894e2c86463d41"` [INFO] running `"docker" "rm" "-f" "74ec03135c6181c5e6e3a2f40a29e27af51938e59ae3e3919d894e2c86463d41"` [INFO] [stdout] 74ec03135c6181c5e6e3a2f40a29e27af51938e59ae3e3919d894e2c86463d41