[INFO] crate flo 0.1.0 is already in cache [INFO] extracting crate flo 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/flo/0.1.0 [INFO] extracting crate flo 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/flo/0.1.0 [INFO] validating manifest of flo-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-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-0.1.0 [INFO] finished frobbing flo-0.1.0 [INFO] frobbed toml for flo-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/flo/0.1.0/Cargo.toml [INFO] started frobbing flo-0.1.0 [INFO] finished frobbing flo-0.1.0 [INFO] frobbed toml for flo-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/flo/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-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-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/flo/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] 02b7117f39a21f7ced1d9a4b45a64d98a58f32850f0633e2810635ed56a906e3 [INFO] running `"docker" "start" "-a" "02b7117f39a21f7ced1d9a4b45a64d98a58f32850f0633e2810635ed56a906e3"` [INFO] [stderr] Checking rust-hsluv v0.1.3 [INFO] [stderr] Checking flo_float_encoder v0.1.0 [INFO] [stderr] Checking desync v0.2.4 [INFO] [stderr] Checking desync v0.1.2 [INFO] [stderr] Checking rulinalg v0.4.2 [INFO] [stderr] Checking flo_binding v0.1.1 [INFO] [stderr] Checking flo_curves v0.1.0 [INFO] [stderr] Checking flo_canvas v0.1.0 [INFO] [stderr] Checking flo_ui v0.1.0 [INFO] [stderr] Checking flo_animation v0.1.0 [INFO] [stderr] Checking flo v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/canvas_controller.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [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/editor/canvas_controller.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | tool_changed: tool_changed, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool_changed` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/canvas_controller.rs:74:17 [INFO] [stderr] | [INFO] [stderr] 74 | renderer: renderer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `renderer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/canvas_controller.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | canvas_tools: canvas_tools, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `canvas_tools` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/menu_controller.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | empty_menu: empty_menu [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `empty_menu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | anim_model: anim_model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `anim_model` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | virtual_scale: virtual_scale, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `virtual_scale` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | virtual_keyframes: virtual_keyframes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `virtual_keyframes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | canvases: canvases, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `canvases` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/toolbox_controller.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/toolbox_controller.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | images: images [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `images` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/mod.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | subcontrollers: subcontrollers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `subcontrollers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:200:17 [INFO] [stderr] | [INFO] [stderr] 200 | layer_frame: layer_frame, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `layer_frame` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | active_brush: active_brush, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `active_brush` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | animation: animation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `animation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | effective_tool: effective_tool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `effective_tool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | current_time: current_time, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_time` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | tool_runner: tool_runner, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool_runner` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tools/generic_tool.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | tool: tool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tools/tool_runner.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | view_model: view_model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `view_model` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/select.rs:328:21 [INFO] [stderr] | [INFO] [stderr] 328 | bounding_boxes: bounding_boxes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `bounding_boxes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/ink.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | size: size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/ink.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | opacity: opacity, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `opacity` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/ink.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/ink.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | brush_properties: brush_properties [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `brush_properties` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/ink.rs:188:13 [INFO] [stderr] | [INFO] [stderr] 188 | canvases: canvases, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `canvases` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/ink.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/ink.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | view_model: view_model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `view_model` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/ink.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | color_picker_open: color_picker_open, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `color_picker_open` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/eraser.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | canvases: canvases, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `canvases` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/eraser.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/eraser.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | view_model: view_model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `view_model` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/select.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | ui: ui [INFO] [stderr] | ^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/adjust.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | ui: ui [INFO] [stderr] | ^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/color/color_picker_controller.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/color/hsluv_picker_controller.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/color/hsluv_picker_controller.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | color: color [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/timeline.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | animation: animation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `animation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/timeline.rs:125:29 [INFO] [stderr] | [INFO] [stderr] 125 | layer_id: layer_id [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `layer_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | effective_tool: effective_tool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `effective_tool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | selected_tool: selected_tool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `selected_tool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | tool_sets: tool_sets, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool_sets` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | current_pointer: current_pointer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pointer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | tool_models: tool_models [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool_models` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/frame.rs:91:29 [INFO] [stderr] | [INFO] [stderr] 91 | layer_id: layer_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `layer_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/frame.rs:92:29 [INFO] [stderr] | [INFO] [stderr] 92 | frame: frame, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frame` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/selection.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | selected_element_binding: selected_element_binding [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `selected_element_binding` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | animation: animation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `animation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | tools: tools, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tools` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | timeline: timeline, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `timeline` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | frame_edit_counter: frame_edit_counter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frame_edit_counter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | frame: frame, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frame` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | selection: selection, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `selection` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | size_binding: size_binding [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_binding` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/canvas_controller.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [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/editor/canvas_controller.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | tool_changed: tool_changed, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool_changed` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/canvas_controller.rs:74:17 [INFO] [stderr] | [INFO] [stderr] 74 | renderer: renderer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `renderer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/canvas_controller.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | canvas_tools: canvas_tools, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `canvas_tools` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/menu_controller.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | empty_menu: empty_menu [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `empty_menu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | anim_model: anim_model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `anim_model` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | virtual_scale: virtual_scale, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `virtual_scale` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | virtual_keyframes: virtual_keyframes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `virtual_keyframes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/timeline_controller.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | canvases: canvases, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `canvases` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/toolbox_controller.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/toolbox_controller.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | images: images [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `images` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/editor/mod.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | subcontrollers: subcontrollers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `subcontrollers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:200:17 [INFO] [stderr] | [INFO] [stderr] 200 | layer_frame: layer_frame, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `layer_frame` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | active_brush: active_brush, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `active_brush` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | animation: animation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `animation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | effective_tool: effective_tool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `effective_tool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | current_time: current_time, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_time` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | tool_runner: tool_runner, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool_runner` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tools/generic_tool.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | tool: tool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tools/tool_runner.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | view_model: view_model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `view_model` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/select.rs:328:21 [INFO] [stderr] | [INFO] [stderr] 328 | bounding_boxes: bounding_boxes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `bounding_boxes` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/ink.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | size: size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/ink.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | opacity: opacity, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `opacity` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/ink.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/standard_tools/ink.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | brush_properties: brush_properties [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `brush_properties` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/ink.rs:188:13 [INFO] [stderr] | [INFO] [stderr] 188 | canvases: canvases, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `canvases` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/ink.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/ink.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | view_model: view_model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `view_model` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/ink.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | color_picker_open: color_picker_open, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `color_picker_open` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/eraser.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | canvases: canvases, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `canvases` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/eraser.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/eraser.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | view_model: view_model, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `view_model` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/select.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | ui: ui [INFO] [stderr] | ^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/menu/adjust.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | ui: ui [INFO] [stderr] | ^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/color/color_picker_controller.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/color/hsluv_picker_controller.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | ui: ui, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `ui` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/color/hsluv_picker_controller.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | color: color [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/timeline.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | animation: animation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `animation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/timeline.rs:125:29 [INFO] [stderr] | [INFO] [stderr] 125 | layer_id: layer_id [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `layer_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | effective_tool: effective_tool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `effective_tool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | selected_tool: selected_tool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `selected_tool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | tool_sets: tool_sets, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool_sets` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | current_pointer: current_pointer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pointer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/tools.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | tool_models: tool_models [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tool_models` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/frame.rs:91:29 [INFO] [stderr] | [INFO] [stderr] 91 | layer_id: layer_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `layer_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/frame.rs:92:29 [INFO] [stderr] | [INFO] [stderr] 92 | frame: frame, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frame` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/selection.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | selected_element_binding: selected_element_binding [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `selected_element_binding` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | animation: animation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `animation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | tools: tools, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tools` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | timeline: timeline, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `timeline` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | frame_edit_counter: frame_edit_counter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frame_edit_counter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | frame: frame, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frame` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | selection: selection, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `selection` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model/mod.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | size_binding: size_binding [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_binding` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/editor/timeline_controller.rs:356:58 [INFO] [stderr] | [INFO] [stderr] 356 | fn draw_frame_indicator(gc: &mut GraphicsPrimitives) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/editor/timeline_controller.rs:376:63 [INFO] [stderr] | [INFO] [stderr] 376 | fn draw_frame_indicator_line(gc: &mut GraphicsPrimitives) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/editor/timeline_controller.rs:424:9 [INFO] [stderr] | [INFO] [stderr] 424 | time_ns [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/editor/timeline_controller.rs:422:35 [INFO] [stderr] | [INFO] [stderr] 422 | let time_ns = frames * (frame_duration_ns as i64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/standard_tools/adjust.rs:32:61 [INFO] [stderr] | [INFO] [stderr] 32 | fn create_model(&self, _flo_model: Arc>) -> () { } [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/standard_tools/pan.rs:30:61 [INFO] [stderr] | [INFO] [stderr] 30 | fn create_model(&self, _flo_model: Arc>) -> () { } [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/standard_tools/pencil.rs:30:61 [INFO] [stderr] | [INFO] [stderr] 30 | fn create_model(&self, _flo_model: Arc>) -> () { } [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/model/animation.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/model/animation.rs:122:25 [INFO] [stderr] | [INFO] [stderr] 122 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/editor/timeline_controller.rs:356:58 [INFO] [stderr] | [INFO] [stderr] 356 | fn draw_frame_indicator(gc: &mut GraphicsPrimitives) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/editor/timeline_controller.rs:376:63 [INFO] [stderr] | [INFO] [stderr] 376 | fn draw_frame_indicator_line(gc: &mut GraphicsPrimitives) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/editor/timeline_controller.rs:424:9 [INFO] [stderr] | [INFO] [stderr] 424 | time_ns [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/editor/timeline_controller.rs:422:35 [INFO] [stderr] | [INFO] [stderr] 422 | let time_ns = frames * (frame_duration_ns as i64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/standard_tools/adjust.rs:32:61 [INFO] [stderr] | [INFO] [stderr] 32 | fn create_model(&self, _flo_model: Arc>) -> () { } [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/standard_tools/pan.rs:30:61 [INFO] [stderr] | [INFO] [stderr] 30 | fn create_model(&self, _flo_model: Arc>) -> () { } [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/standard_tools/pencil.rs:30:61 [INFO] [stderr] | [INFO] [stderr] 30 | fn create_model(&self, _flo_model: Arc>) -> () { } [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/model/animation.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/model/animation.rs:122:25 [INFO] [stderr] | [INFO] [stderr] 122 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `LAYER_PANEL_WIDTH` [INFO] [stderr] --> src/editor/timeline_controller.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | const LAYER_PANEL_WIDTH: f32 = 256.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Select` [INFO] [stderr] --> src/standard_tools/select.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | Select, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `RubberBand` [INFO] [stderr] --> src/standard_tools/select.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | RubberBand, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Drag` [INFO] [stderr] --> src/standard_tools/select.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | Drag [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `with_initial_position` [INFO] [stderr] --> src/standard_tools/select.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | fn with_initial_position(&self, new_initial_position: RawPoint) -> SelectData { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/editor/canvas_controller.rs:57:40 [INFO] [stderr] | [INFO] [stderr] 57 | let tool_changed = Arc::new(Mutex::new(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/editor/canvas_controller.rs:167:52 [INFO] [stderr] | [INFO] [stderr] 167 | fn paint(&self, device: &PaintDevice, actions: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Painting]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/editor/canvas_controller.rs:167:29 [INFO] [stderr] | [INFO] [stderr] 167 | fn paint(&self, device: &PaintDevice, actions: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `PaintDevice` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/editor/canvas_controller.rs:171:12 [INFO] [stderr] | [INFO] [stderr] 171 | if actions.len() > 0 && actions[0].action == PaintAction::Start { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!actions.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/editor/canvas_controller.rs:180:46 [INFO] [stderr] | [INFO] [stderr] 180 | .map(|painting| ToolInput::Paint(painting.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*painting` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/editor/canvas_controller.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | / match (action_id, action_parameter) { [INFO] [stderr] 243 | | (PAINT_ACTION, &Paint(ref device, ref painting)) => self.paint(device, painting), [INFO] [stderr] 244 | | _ => () [INFO] [stderr] 245 | | }; [INFO] [stderr] | |_________^ help: try this: `if let (PAINT_ACTION, &Paint(ref device, ref painting)) = (action_id, action_parameter) { self.paint(device, painting) }` [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] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/editor/menu_controller.rs:31:81 [INFO] [stderr] | [INFO] [stderr] 31 | let tool_controller = BindRef::from(computed(move || format!("Tool_{}", effective_tool.get().map(|tool| tool.tool_name()).unwrap_or(String::new())))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `effective_tool.get().map(|tool| tool.tool_name()).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/editor/menu_controller.rs:38:33 [INFO] [stderr] | [INFO] [stderr] 38 | ui: BindRef::from(ui), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider removing `BindRef::from()`: `ui` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:98:80 [INFO] [stderr] | [INFO] [stderr] 98 | let current_time_ns = current_time.as_secs() * 1_000_000_000 + (current_time.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(current_time.subsec_nanos())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:99:82 [INFO] [stderr] | [INFO] [stderr] 99 | let frame_duration_ns = frame_duration.as_secs() * 1_000_000_000 + (frame_duration.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(frame_duration.subsec_nanos())` [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/editor/timeline_controller.rs:103:39 [INFO] [stderr] | [INFO] [stderr] 103 | let tick_length = TICK_LENGTH as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(TICK_LENGTH)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:148:74 [INFO] [stderr] | [INFO] [stderr] 148 | let duration_ns = duration.as_secs()*1_000_000_000 + (duration.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(duration.subsec_nanos())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:149:80 [INFO] [stderr] | [INFO] [stderr] 149 | let frame_duration_ns = frame_duration.as_secs()*1_000_000_000 + (frame_duration.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(frame_duration.subsec_nanos())` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/editor/timeline_controller.rs:214:68 [INFO] [stderr] | [INFO] [stderr] 214 | fn create_draw_keyframes_fn(timeline: &TimelineModel) -> Box Box ()+Send+Sync>+Send+Sync> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/editor/timeline_controller.rs:319:25 [INFO] [stderr] | [INFO] [stderr] 319 | for tick in start_tick..(end_tick+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `start_tick..=end_tick` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:391:51 [INFO] [stderr] | [INFO] [stderr] 391 | (time.as_secs() * 1_000_000_000) as i64 + (time.subsec_nanos() as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(time.subsec_nanos())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:36:85 [INFO] [stderr] | [INFO] [stderr] 36 | PropertyValue::String(effective_tool.get().map(|tool| tool.tool_name()).unwrap_or("".to_string()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:39:105 [INFO] [stderr] | [INFO] [stderr] 39 | anim_model.tools().choose_tool_with_name(&viewmodel.get_property("SelectedTool").get().string().unwrap_or("".to_string())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/editor/toolbox_controller.rs:73:24 [INFO] [stderr] | [INFO] [stderr] 73 | if result.len() > 0 { result.push(Self::make_separator()); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:140:62 [INFO] [stderr] | [INFO] [stderr] 140 | let selected_tool = selected_tool.get().string().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:150:64 [INFO] [stderr] | [INFO] [stderr] 150 | let selected_tool = selected_tool.get().string().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:151:65 [INFO] [stderr] | [INFO] [stderr] 151 | let effective_tool = effective_tool.get().string().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/editor/mod.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | self.subcontrollers.get(&decoded_id).map(|controller_ref| controller_ref.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.subcontrollers.get(&decoded_id).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 deriving a `Default` implementation for `animation_canvas::canvas_renderer::CanvasRenderer` [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | / pub fn new() -> CanvasRenderer { [INFO] [stderr] 74 | | CanvasRenderer { [INFO] [stderr] 75 | | frame_layers: HashMap::new(), [INFO] [stderr] 76 | | overlay_layers: HashMap::new(), [INFO] [stderr] 77 | | annotated_layer: None [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 45 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:94:68 [INFO] [stderr] | [INFO] [stderr] 94 | .chain(self.overlay_layers.values().flat_map(|overlay| overlay.layers.values().map(|layer_id| *layer_id))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `overlay.layers.values().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:129:29 [INFO] [stderr] | [INFO] [stderr] 129 | .or_insert_with(|| OverlayLayer::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `OverlayLayer::new` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:133:79 [INFO] [stderr] | [INFO] [stderr] 133 | let canvas_layer = *overlay.layers.entry(active_layer).or_insert_with(|| next_free_layer()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `next_free_layer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:150:91 [INFO] [stderr] | [INFO] [stderr] 150 | let canvas_layer = *overlay.layers.entry(active_layer).or_insert_with(|| next_free_layer()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `next_free_layer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:156:92 [INFO] [stderr] | [INFO] [stderr] 156 | let canvas_layer = *overlay.layers.entry(overlay_layer).or_insert_with(|| next_free_layer()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `next_free_layer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:165:92 [INFO] [stderr] | [INFO] [stderr] 165 | let canvas_layer = *overlay.layers.entry(overlay_layer).or_insert_with(|| next_free_layer()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `next_free_layer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:302:33 [INFO] [stderr] | [INFO] [stderr] 302 | .or_insert_with(|| OverlayLayer::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `OverlayLayer::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:431:42 [INFO] [stderr] | [INFO] [stderr] 431 | (layer.active_brush.clone(), layer.active_properties.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `layer.active_properties` [INFO] [stderr] | [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: identical conversion [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:53:31 [INFO] [stderr] | [INFO] [stderr] 53 | let effective_tool = BindRef::from(view_model.tools().effective_tool.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `BindRef::from()`: `view_model.tools().effective_tool.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:76:48 [INFO] [stderr] | [INFO] [stderr] 76 | self.process_actions(canvas, renderer, deselect_actions.into_iter()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `deselect_actions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:88:48 [INFO] [stderr] | [INFO] [stderr] 88 | self.process_actions(canvas, renderer, select_actions.into_iter()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `select_actions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:178:12 [INFO] [stderr] | [INFO] [stderr] 178 | if animation_edits.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!animation_edits.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:227:117 [INFO] [stderr] | [INFO] [stderr] 227 | BrushPreviewAction::BrushDefinition(defn, style) => { self.brush_definition = (defn.clone(), style); self.preview.as_mut().map(move |preview| preview.select_brush(&defn, style)); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(preview) = self.preview.as_mut() { preview.select_brush(&defn, style) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:228:101 [INFO] [stderr] | [INFO] [stderr] 228 | BrushPreviewAction::BrushProperties(props) => { self.brush_properties = props; self.preview.as_mut().map(move |preview| preview.set_brush_properties(&props)); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(preview) = self.preview.as_mut() { preview.set_brush_properties(&props) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:229:70 [INFO] [stderr] | [INFO] [stderr] 229 | BrushPreviewAction::AddPoint(point) => { self.preview.as_mut().map(move |preview| preview.continue_brush_stroke(point)); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(preview) = self.preview.as_mut() { preview.continue_brush_stroke(point) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:265:103 [INFO] [stderr] | [INFO] [stderr] 265 | renderer.set_layer_brush(preview_layer, Some(self.brush_definition.clone()), Some(self.brush_properties.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.brush_properties` [INFO] [stderr] | [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: redundant closure found [INFO] [stderr] --> src/tools/generic_tool.rs:101:59 [INFO] [stderr] | [INFO] [stderr] 101 | Data(ref data) => data.convert_ref().map(|data| Data(data)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tools/generic_tool.rs:155:26 [INFO] [stderr] | [INFO] [stderr] 155 | .map(|action| GenericToolData::convert_action_to_generic(action))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `GenericToolData::convert_action_to_generic` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tools/generic_tool.rs:164:18 [INFO] [stderr] | [INFO] [stderr] 164 | .map(|input_item| GenericToolData::convert_input_from_generic(input_item)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `GenericToolData::convert_input_from_generic` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tools/generic_tool.rs:170:18 [INFO] [stderr] | [INFO] [stderr] 170 | .map(|action| GenericToolData::convert_action_to_generic(action))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `GenericToolData::convert_action_to_generic` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/tools/tool_runner.rs:30:20 [INFO] [stderr] | [INFO] [stderr] 30 | model_actions: Option, Error=()>+Send>>> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/standard_tools/select.rs:76:33 [INFO] [stderr] | [INFO] [stderr] 76 | initial_position: self.initial_position.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.initial_position` [INFO] [stderr] | [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 should consider deriving a `Default` implementation for `standard_tools::select::Select` [INFO] [stderr] --> src/standard_tools/select.rs:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | / pub fn new() -> Select { [INFO] [stderr] 98 | | Select {} [INFO] [stderr] 99 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 65 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/standard_tools/select.rs:244:62 [INFO] [stderr] | [INFO] [stderr] 244 | let paths = element.to_path(&properties).unwrap_or(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `standard_tools::adjust::Adjust` [INFO] [stderr] --> src/standard_tools/adjust.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> Adjust { [INFO] [stderr] 20 | | Adjust {} [INFO] [stderr] 21 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 13 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `standard_tools::pan::Pan` [INFO] [stderr] --> src/standard_tools/pan.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Pan { [INFO] [stderr] 18 | | Pan {} [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `standard_tools::pencil::Pencil` [INFO] [stderr] --> src/standard_tools/pencil.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Pencil { [INFO] [stderr] 18 | | Pencil {} [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `standard_tools::ink::Ink` [INFO] [stderr] --> src/standard_tools/ink.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | / pub fn new() -> Ink { [INFO] [stderr] 50 | | Ink {} [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 43 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `standard_tools::ink::InkModel` [INFO] [stderr] --> src/standard_tools/ink.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | / pub fn new() -> InkModel { [INFO] [stderr] 59 | | let size = bind(5.0); [INFO] [stderr] 60 | | let opacity = bind(1.0); [INFO] [stderr] 61 | | let color = bind(Color::Rgba(0.0, 0.0, 0.0, 1.0)); [INFO] [stderr] ... | [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [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] 54 | impl Default for standard_tools::ink::InkModel { [INFO] [stderr] 55 | fn default() -> Self { [INFO] [stderr] 56 | Self::new() [INFO] [stderr] 57 | } [INFO] [stderr] 58 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/standard_tools/ink.rs:135:39 [INFO] [stderr] | [INFO] [stderr] 135 | Box::new(follow(ink_data).map(|ink_data| ToolAction::Data(ink_data))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ToolAction::Data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/standard_tools/ink.rs:156:50 [INFO] [stderr] | [INFO] [stderr] 156 | BrushPreview(BrushProperties(ink_data.brush_properties.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ink_data.brush_properties` [INFO] [stderr] | [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 should consider adding a `Default` implementation for `standard_tools::eraser::Eraser` [INFO] [stderr] --> src/standard_tools/eraser.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Eraser { [INFO] [stderr] 35 | | Eraser { [INFO] [stderr] 36 | | ink: Ink::new() [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 30 | impl Default for standard_tools::eraser::Eraser { [INFO] [stderr] 31 | fn default() -> Self { [INFO] [stderr] 32 | Self::new() [INFO] [stderr] 33 | } [INFO] [stderr] 34 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/standard_tools/eraser.rs:76:39 [INFO] [stderr] | [INFO] [stderr] 76 | Box::new(follow(ink_data).map(|ink_data| ToolAction::Data(ink_data))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ToolAction::Data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `standard_tools::tool_sets::SelectionTools` [INFO] [stderr] --> src/standard_tools/tool_sets.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> SelectionTools { [INFO] [stderr] 28 | | SelectionTools { [INFO] [stderr] 29 | | select: Select::new().to_flo_tool(), [INFO] [stderr] 30 | | adjust: Adjust::new().to_flo_tool(), [INFO] [stderr] 31 | | pan: Pan::new().to_flo_tool() [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 26 | impl Default for standard_tools::tool_sets::SelectionTools { [INFO] [stderr] 27 | fn default() -> Self { [INFO] [stderr] 28 | Self::new() [INFO] [stderr] 29 | } [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `standard_tools::tool_sets::PaintTools` [INFO] [stderr] --> src/standard_tools/tool_sets.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> PaintTools { [INFO] [stderr] 38 | | PaintTools { [INFO] [stderr] 39 | | pencil: Pencil::new().to_flo_tool(), [INFO] [stderr] 40 | | ink: Ink::new().to_flo_tool(), [INFO] [stderr] 41 | | eraser: Eraser::new().to_flo_tool() [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 36 | impl Default for standard_tools::tool_sets::PaintTools { [INFO] [stderr] 37 | fn default() -> Self { [INFO] [stderr] 38 | Self::new() [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `menu::empty::EmptyMenuController` [INFO] [stderr] --> src/menu/empty.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn new() -> EmptyMenuController { [INFO] [stderr] 13 | | EmptyMenuController { [INFO] [stderr] 14 | | ui: BindRef::from(bind(Control::empty())) [INFO] [stderr] 15 | | } [INFO] [stderr] 16 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 11 | impl Default for menu::empty::EmptyMenuController { [INFO] [stderr] 12 | fn default() -> Self { [INFO] [stderr] 13 | Self::new() [INFO] [stderr] 14 | } [INFO] [stderr] 15 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/menu/ink.rs:39:70 [INFO] [stderr] | [INFO] [stderr] 39 | view_model.set_computed("Size", move || PropertyValue::Float(vm_size.get() as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(vm_size.get())` [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/menu/ink.rs:40:73 [INFO] [stderr] | [INFO] [stderr] 40 | view_model.set_computed("Opacity", move || PropertyValue::Float(vm_opacity.get() as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(vm_opacity.get())` [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: constant item is never used: `LAYER_PANEL_WIDTH` [INFO] [stderr] --> src/editor/timeline_controller.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | const LAYER_PANEL_WIDTH: f32 = 256.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Select` [INFO] [stderr] --> src/standard_tools/select.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | Select, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `RubberBand` [INFO] [stderr] --> src/standard_tools/select.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | RubberBand, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Drag` [INFO] [stderr] --> src/standard_tools/select.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | Drag [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `with_initial_position` [INFO] [stderr] --> src/standard_tools/select.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | fn with_initial_position(&self, new_initial_position: RawPoint) -> SelectData { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> src/editor/canvas_controller.rs:57:40 [INFO] [stderr] | [INFO] [stderr] 57 | let tool_changed = Arc::new(Mutex::new(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/editor/canvas_controller.rs:167:52 [INFO] [stderr] | [INFO] [stderr] 167 | fn paint(&self, device: &PaintDevice, actions: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Painting]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/editor/canvas_controller.rs:167:29 [INFO] [stderr] | [INFO] [stderr] 167 | fn paint(&self, device: &PaintDevice, actions: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `PaintDevice` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/editor/canvas_controller.rs:171:12 [INFO] [stderr] | [INFO] [stderr] 171 | if actions.len() > 0 && actions[0].action == PaintAction::Start { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!actions.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/editor/canvas_controller.rs:180:46 [INFO] [stderr] | [INFO] [stderr] 180 | .map(|painting| ToolInput::Paint(painting.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*painting` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/editor/canvas_controller.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | / match (action_id, action_parameter) { [INFO] [stderr] 243 | | (PAINT_ACTION, &Paint(ref device, ref painting)) => self.paint(device, painting), [INFO] [stderr] 244 | | _ => () [INFO] [stderr] 245 | | }; [INFO] [stderr] | |_________^ help: try this: `if let (PAINT_ACTION, &Paint(ref device, ref painting)) = (action_id, action_parameter) { self.paint(device, painting) }` [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] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/editor/menu_controller.rs:31:81 [INFO] [stderr] | [INFO] [stderr] 31 | let tool_controller = BindRef::from(computed(move || format!("Tool_{}", effective_tool.get().map(|tool| tool.tool_name()).unwrap_or(String::new())))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `effective_tool.get().map(|tool| tool.tool_name()).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/editor/menu_controller.rs:38:33 [INFO] [stderr] | [INFO] [stderr] 38 | ui: BindRef::from(ui), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider removing `BindRef::from()`: `ui` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:98:80 [INFO] [stderr] | [INFO] [stderr] 98 | let current_time_ns = current_time.as_secs() * 1_000_000_000 + (current_time.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(current_time.subsec_nanos())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:99:82 [INFO] [stderr] | [INFO] [stderr] 99 | let frame_duration_ns = frame_duration.as_secs() * 1_000_000_000 + (frame_duration.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(frame_duration.subsec_nanos())` [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/editor/timeline_controller.rs:103:39 [INFO] [stderr] | [INFO] [stderr] 103 | let tick_length = TICK_LENGTH as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(TICK_LENGTH)` [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/menu/eraser.rs:36:70 [INFO] [stderr] | [INFO] [stderr] 36 | view_model.set_computed("Size", move || PropertyValue::Float(vm_size.get() as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(vm_size.get())` [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/menu/eraser.rs:37:73 [INFO] [stderr] | [INFO] [stderr] 37 | view_model.set_computed("Opacity", move || PropertyValue::Float(vm_opacity.get() as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(vm_opacity.get())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:148:74 [INFO] [stderr] | [INFO] [stderr] 148 | let duration_ns = duration.as_secs()*1_000_000_000 + (duration.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(duration.subsec_nanos())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:149:80 [INFO] [stderr] | [INFO] [stderr] 149 | let frame_duration_ns = frame_duration.as_secs()*1_000_000_000 + (frame_duration.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(frame_duration.subsec_nanos())` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/editor/timeline_controller.rs:214:68 [INFO] [stderr] | [INFO] [stderr] 214 | fn create_draw_keyframes_fn(timeline: &TimelineModel) -> Box Box ()+Send+Sync>+Send+Sync> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/editor/timeline_controller.rs:319:25 [INFO] [stderr] | [INFO] [stderr] 319 | for tick in start_tick..(end_tick+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `start_tick..=end_tick` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/editor/timeline_controller.rs:391:51 [INFO] [stderr] | [INFO] [stderr] 391 | (time.as_secs() * 1_000_000_000) as i64 + (time.subsec_nanos() as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(time.subsec_nanos())` [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 should consider adding a `Default` implementation for `menu::select::SelectMenuController` [INFO] [stderr] --> src/menu/select.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> SelectMenuController { [INFO] [stderr] 18 | | let ui = Self::ui(); [INFO] [stderr] 19 | | [INFO] [stderr] 20 | | SelectMenuController { [INFO] [stderr] 21 | | ui: ui [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 13 | impl Default for menu::select::SelectMenuController { [INFO] [stderr] 14 | fn default() -> Self { [INFO] [stderr] 15 | Self::new() [INFO] [stderr] 16 | } [INFO] [stderr] 17 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:36:85 [INFO] [stderr] | [INFO] [stderr] 36 | PropertyValue::String(effective_tool.get().map(|tool| tool.tool_name()).unwrap_or("".to_string()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:39:105 [INFO] [stderr] | [INFO] [stderr] 39 | anim_model.tools().choose_tool_with_name(&viewmodel.get_property("SelectedTool").get().string().unwrap_or("".to_string())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `menu::adjust::AdjustMenuController` [INFO] [stderr] --> src/menu/adjust.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> AdjustMenuController { [INFO] [stderr] 18 | | let ui = Self::ui(); [INFO] [stderr] 19 | | [INFO] [stderr] 20 | | AdjustMenuController { [INFO] [stderr] 21 | | ui: ui [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 13 | impl Default for menu::adjust::AdjustMenuController { [INFO] [stderr] 14 | fn default() -> Self { [INFO] [stderr] 15 | Self::new() [INFO] [stderr] 16 | } [INFO] [stderr] 17 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/editor/toolbox_controller.rs:73:24 [INFO] [stderr] | [INFO] [stderr] 73 | if result.len() > 0 { result.push(Self::make_separator()); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color/generate_images.rs:13:27 [INFO] [stderr] | [INFO] [stderr] 13 | let radius = (size as f64)/2.0; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(size)` [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/color/generate_images.rs:14:27 [INFO] [stderr] | [INFO] [stderr] 14 | let inner_radius = inner_radius as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(inner_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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color/generate_images.rs:33:27 [INFO] [stderr] | [INFO] [stderr] 33 | let y = (y as f64)-radius; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(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: identical conversion [INFO] [stderr] --> src/color/generate_images.rs:66:32 [INFO] [stderr] | [INFO] [stderr] 66 | let colour_strip: Vec<_> = (0..1024) [INFO] [stderr] | ________________________________^ [INFO] [stderr] 67 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0..1024)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color/generate_images.rs:68:33 [INFO] [stderr] | [INFO] [stderr] 68 | .map(move |index| pixel((index as f64)/1024.0)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(index)` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:140:62 [INFO] [stderr] | [INFO] [stderr] 140 | let selected_tool = selected_tool.get().string().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:150:64 [INFO] [stderr] | [INFO] [stderr] 150 | let selected_tool = selected_tool.get().string().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/editor/toolbox_controller.rs:151:65 [INFO] [stderr] | [INFO] [stderr] 151 | let effective_tool = effective_tool.get().string().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color/hsluv_picker_controller.rs:35:34 [INFO] [stderr] | [INFO] [stderr] 35 | PropertyValue::Float(col.get().to_hsluv_components().0 as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(col.get().to_hsluv_components().0)` [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/hsluv_picker_controller.rs:39:34 [INFO] [stderr] | [INFO] [stderr] 39 | PropertyValue::Float(col.get().to_hsluv_components().1 as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(col.get().to_hsluv_components().1)` [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/hsluv_picker_controller.rs:43:34 [INFO] [stderr] | [INFO] [stderr] 43 | PropertyValue::Float(col.get().to_hsluv_components().2 as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(col.get().to_hsluv_components().2)` [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/editor/mod.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | self.subcontrollers.get(&decoded_id).map(|controller_ref| controller_ref.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.subcontrollers.get(&decoded_id).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 deriving a `Default` implementation for `animation_canvas::canvas_renderer::CanvasRenderer` [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | / pub fn new() -> CanvasRenderer { [INFO] [stderr] 74 | | CanvasRenderer { [INFO] [stderr] 75 | | frame_layers: HashMap::new(), [INFO] [stderr] 76 | | overlay_layers: HashMap::new(), [INFO] [stderr] 77 | | annotated_layer: None [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 45 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:94:68 [INFO] [stderr] | [INFO] [stderr] 94 | .chain(self.overlay_layers.values().flat_map(|overlay| overlay.layers.values().map(|layer_id| *layer_id))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `overlay.layers.values().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:129:29 [INFO] [stderr] | [INFO] [stderr] 129 | .or_insert_with(|| OverlayLayer::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `OverlayLayer::new` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:133:79 [INFO] [stderr] | [INFO] [stderr] 133 | let canvas_layer = *overlay.layers.entry(active_layer).or_insert_with(|| next_free_layer()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `next_free_layer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:150:91 [INFO] [stderr] | [INFO] [stderr] 150 | let canvas_layer = *overlay.layers.entry(active_layer).or_insert_with(|| next_free_layer()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `next_free_layer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:156:92 [INFO] [stderr] | [INFO] [stderr] 156 | let canvas_layer = *overlay.layers.entry(overlay_layer).or_insert_with(|| next_free_layer()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `next_free_layer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:165:92 [INFO] [stderr] | [INFO] [stderr] 165 | let canvas_layer = *overlay.layers.entry(overlay_layer).or_insert_with(|| next_free_layer()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `next_free_layer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:302:33 [INFO] [stderr] | [INFO] [stderr] 302 | .or_insert_with(|| OverlayLayer::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `OverlayLayer::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/animation_canvas/canvas_renderer.rs:431:42 [INFO] [stderr] | [INFO] [stderr] 431 | (layer.active_brush.clone(), layer.active_properties.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `layer.active_properties` [INFO] [stderr] | [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: identical conversion [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:53:31 [INFO] [stderr] | [INFO] [stderr] 53 | let effective_tool = BindRef::from(view_model.tools().effective_tool.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `BindRef::from()`: `view_model.tools().effective_tool.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:76:48 [INFO] [stderr] | [INFO] [stderr] 76 | self.process_actions(canvas, renderer, deselect_actions.into_iter()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `deselect_actions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:88:48 [INFO] [stderr] | [INFO] [stderr] 88 | self.process_actions(canvas, renderer, select_actions.into_iter()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `select_actions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/model/timeline.rs:36:16 [INFO] [stderr] | [INFO] [stderr] 36 | keyframes: Arc, Weak>>>>> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:178:12 [INFO] [stderr] | [INFO] [stderr] 178 | if animation_edits.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!animation_edits.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:227:117 [INFO] [stderr] | [INFO] [stderr] 227 | BrushPreviewAction::BrushDefinition(defn, style) => { self.brush_definition = (defn.clone(), style); self.preview.as_mut().map(move |preview| preview.select_brush(&defn, style)); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(preview) = self.preview.as_mut() { preview.select_brush(&defn, style) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:228:101 [INFO] [stderr] | [INFO] [stderr] 228 | BrushPreviewAction::BrushProperties(props) => { self.brush_properties = props; self.preview.as_mut().map(move |preview| preview.set_brush_properties(&props)); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(preview) = self.preview.as_mut() { preview.set_brush_properties(&props) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:229:70 [INFO] [stderr] | [INFO] [stderr] 229 | BrushPreviewAction::AddPoint(point) => { self.preview.as_mut().map(move |preview| preview.continue_brush_stroke(point)); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(preview) = self.preview.as_mut() { preview.continue_brush_stroke(point) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/animation_canvas/canvas_tools.rs:265:103 [INFO] [stderr] | [INFO] [stderr] 265 | renderer.set_layer_brush(preview_layer, Some(self.brush_definition.clone()), Some(self.brush_properties.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.brush_properties` [INFO] [stderr] | [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/model/timeline.rs:119:102 [INFO] [stderr] | [INFO] [stderr] 119 | let frame_duration_nanos: u64 = frame_duration.as_secs() * 1_000_000_000 + (frame_duration.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(frame_duration.subsec_nanos())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/model/timeline.rs:120:101 [INFO] [stderr] | [INFO] [stderr] 120 | let frame_time_nanos: u64 = keyframe_time.as_secs() * 1_000_000_000 + (keyframe_time.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(keyframe_time.subsec_nanos())` [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 should consider adding a `Default` implementation for `model::tools::ToolModel` [INFO] [stderr] --> src/model/tools.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | / pub fn new() -> ToolModel { [INFO] [stderr] 37 | | // Create the initial set of tools [INFO] [stderr] 38 | | let default_tool_sets: Vec>> = vec![ [INFO] [stderr] 39 | | Arc::new(SelectionTools::new()), [INFO] [stderr] ... | [INFO] [stderr] 57 | | } [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 32 | impl Default for model::tools::ToolModel { [INFO] [stderr] 33 | fn default() -> Self { [INFO] [stderr] 34 | Self::new() [INFO] [stderr] 35 | } [INFO] [stderr] 36 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tools/generic_tool.rs:101:59 [INFO] [stderr] | [INFO] [stderr] 101 | Data(ref data) => data.convert_ref().map(|data| Data(data)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Data` [INFO] [stderr] | [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/model/tools.rs:117:20 [INFO] [stderr] | [INFO] [stderr] 117 | if &tool.tool_name() == name { [INFO] [stderr] | -----------------^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `tool.tool_name()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tools/generic_tool.rs:155:26 [INFO] [stderr] | [INFO] [stderr] 155 | .map(|action| GenericToolData::convert_action_to_generic(action))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `GenericToolData::convert_action_to_generic` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tools/generic_tool.rs:164:18 [INFO] [stderr] | [INFO] [stderr] 164 | .map(|input_item| GenericToolData::convert_input_from_generic(input_item)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `GenericToolData::convert_input_from_generic` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/tools/generic_tool.rs:170:18 [INFO] [stderr] | [INFO] [stderr] 170 | .map(|action| GenericToolData::convert_action_to_generic(action))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `GenericToolData::convert_action_to_generic` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/model/frame.rs:55:42 [INFO] [stderr] | [INFO] [stderr] 55 | let deleted_layers: Vec<_> = layer_ids [INFO] [stderr] | __________________________________________^ [INFO] [stderr] 56 | | .iter() [INFO] [stderr] 57 | | .filter(|layer_id| !frames.contains_key(layer_id)) [INFO] [stderr] 58 | | .map(|layer_id_ref| *layer_id_ref) [INFO] [stderr] | |__________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 55 | let deleted_layers: Vec<_> = layer_ids [INFO] [stderr] 56 | .iter() [INFO] [stderr] 57 | .filter(|layer_id| !frames.contains_key(layer_id)).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/tools/generic_tool.rs:205:17 [INFO] [stderr] | [INFO] [stderr] 205 | / match &input[0] { [INFO] [stderr] 206 | | &ToolInput::Data(ref data) => { [INFO] [stderr] 207 | | if **data == 42 { [INFO] [stderr] 208 | | // Signals to the test that the data made the round trip [INFO] [stderr] ... | [INFO] [stderr] 217 | | _ => Box::new(vec![].into_iter()) [INFO] [stderr] 218 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 205 | match input[0] { [INFO] [stderr] 206 | ToolInput::Data(ref data) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `model::selection::SelectionModel` [INFO] [stderr] --> src/model/selection.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> SelectionModel { [INFO] [stderr] 21 | | // Create the binding for the selected element [INFO] [stderr] 22 | | let selected_element_binding = bind(vec![]); [INFO] [stderr] 23 | | [INFO] [stderr] ... | [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 16 | impl Default for model::selection::SelectionModel { [INFO] [stderr] 17 | fn default() -> Self { [INFO] [stderr] 18 | Self::new() [INFO] [stderr] 19 | } [INFO] [stderr] 20 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/model/animation.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | / fn get_layer_with_id<'a>(&'a self, layer_id: u64) -> Option> { [INFO] [stderr] 41 | | self.animation.get_layer_with_id(layer_id) [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/model/animation.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / fn get_log<'a>(&'a self) -> Reader<'a, EditLog> { [INFO] [stderr] 48 | | self.animation.get_log() [INFO] [stderr] 49 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/tools/generic_tool.rs:235:17 [INFO] [stderr] | [INFO] [stderr] 235 | assert!(match &actions[0] { [INFO] [stderr] | _________________^ [INFO] [stderr] 236 | | &ToolAction::Data(_) => true, [INFO] [stderr] 237 | | _ => false [INFO] [stderr] 238 | | }); [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: try [INFO] [stderr] | [INFO] [stderr] 235 | assert!(match actions[0] { [INFO] [stderr] 236 | ToolAction::Data(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/tools/generic_tool.rs:259:17 [INFO] [stderr] | [INFO] [stderr] 259 | assert!(match &feedback_actions[0] { [INFO] [stderr] | _________________^ [INFO] [stderr] 260 | | &ToolAction::BrushPreview(BrushPreviewAction::Clear) => true, [INFO] [stderr] 261 | | _ => false [INFO] [stderr] 262 | | }); [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: try [INFO] [stderr] | [INFO] [stderr] 259 | assert!(match feedback_actions[0] { [INFO] [stderr] 260 | ToolAction::BrushPreview(BrushPreviewAction::Clear) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/tools/tool_runner.rs:30:20 [INFO] [stderr] | [INFO] [stderr] 30 | model_actions: Option, Error=()>+Send>>> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/standard_tools/select.rs:76:33 [INFO] [stderr] | [INFO] [stderr] 76 | initial_position: self.initial_position.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.initial_position` [INFO] [stderr] | [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 should consider deriving a `Default` implementation for `standard_tools::select::Select` [INFO] [stderr] --> src/standard_tools/select.rs:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | / pub fn new() -> Select { [INFO] [stderr] 98 | | Select {} [INFO] [stderr] 99 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 65 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/standard_tools/select.rs:244:62 [INFO] [stderr] | [INFO] [stderr] 244 | let paths = element.to_path(&properties).unwrap_or(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `standard_tools::adjust::Adjust` [INFO] [stderr] --> src/standard_tools/adjust.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> Adjust { [INFO] [stderr] 20 | | Adjust {} [INFO] [stderr] 21 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 13 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `standard_tools::pan::Pan` [INFO] [stderr] --> src/standard_tools/pan.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Pan { [INFO] [stderr] 18 | | Pan {} [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `standard_tools::pencil::Pencil` [INFO] [stderr] --> src/standard_tools/pencil.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Pencil { [INFO] [stderr] 18 | | Pencil {} [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `standard_tools::ink::Ink` [INFO] [stderr] --> src/standard_tools/ink.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | / pub fn new() -> Ink { [INFO] [stderr] 50 | | Ink {} [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 43 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `standard_tools::ink::InkModel` [INFO] [stderr] --> src/standard_tools/ink.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | / pub fn new() -> InkModel { [INFO] [stderr] 59 | | let size = bind(5.0); [INFO] [stderr] 60 | | let opacity = bind(1.0); [INFO] [stderr] 61 | | let color = bind(Color::Rgba(0.0, 0.0, 0.0, 1.0)); [INFO] [stderr] ... | [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [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] 54 | impl Default for standard_tools::ink::InkModel { [INFO] [stderr] 55 | fn default() -> Self { [INFO] [stderr] 56 | Self::new() [INFO] [stderr] 57 | } [INFO] [stderr] 58 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/standard_tools/ink.rs:135:39 [INFO] [stderr] | [INFO] [stderr] 135 | Box::new(follow(ink_data).map(|ink_data| ToolAction::Data(ink_data))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ToolAction::Data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/standard_tools/ink.rs:156:50 [INFO] [stderr] | [INFO] [stderr] 156 | BrushPreview(BrushProperties(ink_data.brush_properties.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ink_data.brush_properties` [INFO] [stderr] | [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 should consider adding a `Default` implementation for `standard_tools::eraser::Eraser` [INFO] [stderr] --> src/standard_tools/eraser.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Eraser { [INFO] [stderr] 35 | | Eraser { [INFO] [stderr] 36 | | ink: Ink::new() [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 30 | impl Default for standard_tools::eraser::Eraser { [INFO] [stderr] 31 | fn default() -> Self { [INFO] [stderr] 32 | Self::new() [INFO] [stderr] 33 | } [INFO] [stderr] 34 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/standard_tools/eraser.rs:76:39 [INFO] [stderr] | [INFO] [stderr] 76 | Box::new(follow(ink_data).map(|ink_data| ToolAction::Data(ink_data))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ToolAction::Data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `standard_tools::tool_sets::SelectionTools` [INFO] [stderr] --> src/standard_tools/tool_sets.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> SelectionTools { [INFO] [stderr] 28 | | SelectionTools { [INFO] [stderr] 29 | | select: Select::new().to_flo_tool(), [INFO] [stderr] 30 | | adjust: Adjust::new().to_flo_tool(), [INFO] [stderr] 31 | | pan: Pan::new().to_flo_tool() [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 26 | impl Default for standard_tools::tool_sets::SelectionTools { [INFO] [stderr] 27 | fn default() -> Self { [INFO] [stderr] 28 | Self::new() [INFO] [stderr] 29 | } [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `standard_tools::tool_sets::PaintTools` [INFO] [stderr] --> src/standard_tools/tool_sets.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> PaintTools { [INFO] [stderr] 38 | | PaintTools { [INFO] [stderr] 39 | | pencil: Pencil::new().to_flo_tool(), [INFO] [stderr] 40 | | ink: Ink::new().to_flo_tool(), [INFO] [stderr] 41 | | eraser: Eraser::new().to_flo_tool() [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 36 | impl Default for standard_tools::tool_sets::PaintTools { [INFO] [stderr] 37 | fn default() -> Self { [INFO] [stderr] 38 | Self::new() [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `menu::empty::EmptyMenuController` [INFO] [stderr] --> src/menu/empty.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn new() -> EmptyMenuController { [INFO] [stderr] 13 | | EmptyMenuController { [INFO] [stderr] 14 | | ui: BindRef::from(bind(Control::empty())) [INFO] [stderr] 15 | | } [INFO] [stderr] 16 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 11 | impl Default for menu::empty::EmptyMenuController { [INFO] [stderr] 12 | fn default() -> Self { [INFO] [stderr] 13 | Self::new() [INFO] [stderr] 14 | } [INFO] [stderr] 15 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/menu/ink.rs:39:70 [INFO] [stderr] | [INFO] [stderr] 39 | view_model.set_computed("Size", move || PropertyValue::Float(vm_size.get() as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(vm_size.get())` [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/menu/ink.rs:40:73 [INFO] [stderr] | [INFO] [stderr] 40 | view_model.set_computed("Opacity", move || PropertyValue::Float(vm_opacity.get() as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(vm_opacity.get())` [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/menu/eraser.rs:36:70 [INFO] [stderr] | [INFO] [stderr] 36 | view_model.set_computed("Size", move || PropertyValue::Float(vm_size.get() as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(vm_size.get())` [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/menu/eraser.rs:37:73 [INFO] [stderr] | [INFO] [stderr] 37 | view_model.set_computed("Opacity", move || PropertyValue::Float(vm_opacity.get() as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(vm_opacity.get())` [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 should consider adding a `Default` implementation for `menu::select::SelectMenuController` [INFO] [stderr] --> src/menu/select.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> SelectMenuController { [INFO] [stderr] 18 | | let ui = Self::ui(); [INFO] [stderr] 19 | | [INFO] [stderr] 20 | | SelectMenuController { [INFO] [stderr] 21 | | ui: ui [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 13 | impl Default for menu::select::SelectMenuController { [INFO] [stderr] 14 | fn default() -> Self { [INFO] [stderr] 15 | Self::new() [INFO] [stderr] 16 | } [INFO] [stderr] 17 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `menu::adjust::AdjustMenuController` [INFO] [stderr] --> src/menu/adjust.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> AdjustMenuController { [INFO] [stderr] 18 | | let ui = Self::ui(); [INFO] [stderr] 19 | | [INFO] [stderr] 20 | | AdjustMenuController { [INFO] [stderr] 21 | | ui: ui [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 13 | impl Default for menu::adjust::AdjustMenuController { [INFO] [stderr] 14 | fn default() -> Self { [INFO] [stderr] 15 | Self::new() [INFO] [stderr] 16 | } [INFO] [stderr] 17 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color/generate_images.rs:13:27 [INFO] [stderr] | [INFO] [stderr] 13 | let radius = (size as f64)/2.0; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(size)` [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/color/generate_images.rs:14:27 [INFO] [stderr] | [INFO] [stderr] 14 | let inner_radius = inner_radius as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(inner_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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color/generate_images.rs:33:27 [INFO] [stderr] | [INFO] [stderr] 33 | let y = (y as f64)-radius; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(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: identical conversion [INFO] [stderr] --> src/color/generate_images.rs:66:32 [INFO] [stderr] | [INFO] [stderr] 66 | let colour_strip: Vec<_> = (0..1024) [INFO] [stderr] | ________________________________^ [INFO] [stderr] 67 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0..1024)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/color/generate_images.rs:68:33 [INFO] [stderr] | [INFO] [stderr] 68 | .map(move |index| pixel((index as f64)/1024.0)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(index)` [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/hsluv_picker_controller.rs:35:34 [INFO] [stderr] | [INFO] [stderr] 35 | PropertyValue::Float(col.get().to_hsluv_components().0 as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(col.get().to_hsluv_components().0)` [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/hsluv_picker_controller.rs:39:34 [INFO] [stderr] | [INFO] [stderr] 39 | PropertyValue::Float(col.get().to_hsluv_components().1 as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(col.get().to_hsluv_components().1)` [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/hsluv_picker_controller.rs:43:34 [INFO] [stderr] | [INFO] [stderr] 43 | PropertyValue::Float(col.get().to_hsluv_components().2 as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(col.get().to_hsluv_components().2)` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/model/timeline.rs:36:16 [INFO] [stderr] | [INFO] [stderr] 36 | keyframes: Arc, Weak>>>>> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/model/timeline.rs:119:102 [INFO] [stderr] | [INFO] [stderr] 119 | let frame_duration_nanos: u64 = frame_duration.as_secs() * 1_000_000_000 + (frame_duration.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(frame_duration.subsec_nanos())` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/model/timeline.rs:120:101 [INFO] [stderr] | [INFO] [stderr] 120 | let frame_time_nanos: u64 = keyframe_time.as_secs() * 1_000_000_000 + (keyframe_time.subsec_nanos() as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(keyframe_time.subsec_nanos())` [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 should consider adding a `Default` implementation for `model::tools::ToolModel` [INFO] [stderr] --> src/model/tools.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | / pub fn new() -> ToolModel { [INFO] [stderr] 37 | | // Create the initial set of tools [INFO] [stderr] 38 | | let default_tool_sets: Vec>> = vec![ [INFO] [stderr] 39 | | Arc::new(SelectionTools::new()), [INFO] [stderr] ... | [INFO] [stderr] 57 | | } [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 32 | impl Default for model::tools::ToolModel { [INFO] [stderr] 33 | fn default() -> Self { [INFO] [stderr] 34 | Self::new() [INFO] [stderr] 35 | } [INFO] [stderr] 36 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/model/tools.rs:117:20 [INFO] [stderr] | [INFO] [stderr] 117 | if &tool.tool_name() == name { [INFO] [stderr] | -----------------^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `tool.tool_name()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/model/frame.rs:55:42 [INFO] [stderr] | [INFO] [stderr] 55 | let deleted_layers: Vec<_> = layer_ids [INFO] [stderr] | __________________________________________^ [INFO] [stderr] 56 | | .iter() [INFO] [stderr] 57 | | .filter(|layer_id| !frames.contains_key(layer_id)) [INFO] [stderr] 58 | | .map(|layer_id_ref| *layer_id_ref) [INFO] [stderr] | |__________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 55 | let deleted_layers: Vec<_> = layer_ids [INFO] [stderr] 56 | .iter() [INFO] [stderr] 57 | .filter(|layer_id| !frames.contains_key(layer_id)).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `model::selection::SelectionModel` [INFO] [stderr] --> src/model/selection.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> SelectionModel { [INFO] [stderr] 21 | | // Create the binding for the selected element [INFO] [stderr] 22 | | let selected_element_binding = bind(vec![]); [INFO] [stderr] 23 | | [INFO] [stderr] ... | [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 16 | impl Default for model::selection::SelectionModel { [INFO] [stderr] 17 | fn default() -> Self { [INFO] [stderr] 18 | Self::new() [INFO] [stderr] 19 | } [INFO] [stderr] 20 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/model/animation.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | / fn get_layer_with_id<'a>(&'a self, layer_id: u64) -> Option> { [INFO] [stderr] 41 | | self.animation.get_layer_with_id(layer_id) [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/model/animation.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / fn get_log<'a>(&'a self) -> Reader<'a, EditLog> { [INFO] [stderr] 48 | | self.animation.get_log() [INFO] [stderr] 49 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/model/animation.rs:154:34 [INFO] [stderr] | [INFO] [stderr] 154 | edit_log.set_pending(&vec![AnimationEdit::SetSize(800.0, 600.0)]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[AnimationEdit::SetSize(800.0, 600.0)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 19.51s [INFO] running `"docker" "inspect" "02b7117f39a21f7ced1d9a4b45a64d98a58f32850f0633e2810635ed56a906e3"` [INFO] running `"docker" "rm" "-f" "02b7117f39a21f7ced1d9a4b45a64d98a58f32850f0633e2810635ed56a906e3"` [INFO] [stdout] 02b7117f39a21f7ced1d9a4b45a64d98a58f32850f0633e2810635ed56a906e3