{"$message_type":"diagnostic","message":"unused imports: `GridPoint` and `GridSize`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/shape/block.rs","byte_start":25820,"byte_end":25829,"line_start":638,"line_end":638,"column_start":29,"column_end":38,"is_primary":true,"text":[{"text":"        geometry::{FracVal, GridPoint, GridRect, GridSize, PinSlot},","highlight_start":29,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/shape/block.rs","byte_start":25841,"byte_end":25849,"line_start":638,"line_end":638,"column_start":50,"column_end":58,"is_primary":true,"text":[{"text":"        geometry::{FracVal, GridPoint, GridRect, GridSize, PinSlot},","highlight_start":50,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused imports","code":null,"level":"help","spans":[{"file_name":"src/shape/block.rs","byte_start":25818,"byte_end":25829,"line_start":638,"line_end":638,"column_start":27,"column_end":38,"is_primary":true,"text":[{"text":"        geometry::{FracVal, GridPoint, GridRect, GridSize, PinSlot},","highlight_start":27,"highlight_end":38}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/shape/block.rs","byte_start":25839,"byte_end":25849,"line_start":638,"line_end":638,"column_start":48,"column_end":58,"is_primary":true,"text":[{"text":"        geometry::{FracVal, GridPoint, GridRect, GridSize, PinSlot},","highlight_start":48,"highlight_end":58}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `GridPoint` and `GridSize`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/shape/block.rs:638:29\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m638\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         geometry::{FracVal, GridPoint, GridRect, GridSize, PinSlot},\n    \u001b[1m\u001b[94m|\u001b[0m                             \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m            \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"method `live_input` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/canvas/painter.rs","byte_start":4491,"byte_end":4503,"line_start":104,"line_end":104,"column_start":1,"column_end":13,"is_primary":false,"text":[{"text":"impl Painter {","highlight_start":1,"highlight_end":13}],"label":"method in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/canvas/painter.rs","byte_start":6483,"byte_end":6493,"line_start":159,"line_end":159,"column_start":12,"column_end":22,"is_primary":true,"text":[{"text":"    pub fn live_input(&self) -> Option<&egui::Context> {","highlight_start":12,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: method `live_input` is never used\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/canvas/painter.rs:159:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m104\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl Painter {\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m------------\u001b[0m \u001b[1m\u001b[94mmethod in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m159\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn live_input(&self) -> Option<&egui::Context> {\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"}
{"$message_type":"diagnostic","message":"enum `InterfaceLock` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/document/mod.rs","byte_start":4428,"byte_end":4441,"line_start":115,"line_end":115,"column_start":10,"column_end":23,"is_primary":true,"text":[{"text":"pub enum InterfaceLock {","highlight_start":10,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: enum `InterfaceLock` is never used\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/document/mod.rs:115:10\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m115\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub enum InterfaceLock {\n    \u001b[1m\u001b[94m|\u001b[0m          \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"method `is_locked` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/document/mod.rs","byte_start":4473,"byte_end":4491,"line_start":120,"line_end":120,"column_start":1,"column_end":19,"is_primary":false,"text":[{"text":"impl InterfaceLock {","highlight_start":1,"highlight_end":19}],"label":"method in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/document/mod.rs","byte_start":4505,"byte_end":4514,"line_start":121,"line_end":121,"column_start":12,"column_end":21,"is_primary":true,"text":[{"text":"    pub fn is_locked(self) -> bool {","highlight_start":12,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: method `is_locked` is never used\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/document/mod.rs:121:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m120\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl InterfaceLock {\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m------------------\u001b[0m \u001b[1m\u001b[94mmethod in this implementation\u001b[0m\n\u001b[1m\u001b[94m121\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn is_locked(self) -> bool {\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"trait `GridSizeExt` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/document/coord.rs","byte_start":4423,"byte_end":4434,"line_start":182,"line_end":182,"column_start":11,"column_end":22,"is_primary":true,"text":[{"text":"pub trait GridSizeExt {","highlight_start":11,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: trait `GridSizeExt` is never used\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/document/coord.rs:182:11\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m182\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait GridSizeExt {\n    \u001b[1m\u001b[94m|\u001b[0m           \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"method `with_pins` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/shape/mod.rs","byte_start":4143,"byte_end":4152,"line_start":118,"line_end":118,"column_start":11,"column_end":20,"is_primary":false,"text":[{"text":"pub trait BaseShape {","highlight_start":11,"highlight_end":20}],"label":"method in this trait","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/shape/mod.rs","byte_start":4735,"byte_end":4744,"line_start":137,"line_end":137,"column_start":8,"column_end":17,"is_primary":true,"text":[{"text":"    fn with_pins<'s>(&'s self, mut f: impl FnMut(PinId, &'s Pin)) {","highlight_start":8,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: method `with_pins` is never used\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/shape/mod.rs:137:8\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m118\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait BaseShape {\n    \u001b[1m\u001b[94m|\u001b[0m           \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mmethod in this trait\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m137\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     fn with_pins<'s>(&'s self, mut f: impl FnMut(PinId, &'s Pin)) {\n    \u001b[1m\u001b[94m|\u001b[0m        \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"method `retain_keys` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/store.rs","byte_start":2202,"byte_end":2210,"line_start":38,"line_end":38,"column_start":11,"column_end":19,"is_primary":false,"text":[{"text":"pub trait IdMapExt<K: KeyType, V> {","highlight_start":11,"highlight_end":19}],"label":"method in this trait","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/store.rs","byte_start":3021,"byte_end":3032,"line_start":50,"line_end":50,"column_start":8,"column_end":19,"is_primary":true,"text":[{"text":"    fn retain_keys(&mut self, keep: impl FnMut(K) -> bool);","highlight_start":8,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: method `retain_keys` is never used\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/store.rs:50:8\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m38\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait IdMapExt<K: KeyType, V> {\n   \u001b[1m\u001b[94m|\u001b[0m           \u001b[1m\u001b[94m--------\u001b[0m \u001b[1m\u001b[94mmethod in this trait\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m50\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     fn retain_keys(&mut self, keep: impl FnMut(K) -> bool);\n   \u001b[1m\u001b[94m|\u001b[0m        \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"method `live_input` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/theme/style.rs","byte_start":7545,"byte_end":7568,"line_start":208,"line_end":208,"column_start":1,"column_end":24,"is_primary":false,"text":[{"text":"impl Style<'_, Painter> {","highlight_start":1,"highlight_end":24}],"label":"method in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/theme/style.rs","byte_start":8250,"byte_end":8260,"line_start":227,"line_end":227,"column_start":12,"column_end":22,"is_primary":true,"text":[{"text":"    pub fn live_input(&self) -> Option<&egui::Context> {","highlight_start":12,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: method `live_input` is never used\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/theme/style.rs:227:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m208\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl Style<'_, Painter> {\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-----------------------\u001b[0m \u001b[1m\u001b[94mmethod in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m227\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn live_input(&self) -> Option<&egui::Context> {\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"method `taken` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/commands.rs","byte_start":7707,"byte_end":7722,"line_start":206,"line_end":206,"column_start":1,"column_end":16,"is_primary":false,"text":[{"text":"impl CommandSet {","highlight_start":1,"highlight_end":16}],"label":"method in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tools/commands.rs","byte_start":18992,"byte_end":18997,"line_start":508,"line_end":508,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    pub fn taken(&self) -> Option<CommandId> {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: method `taken` is never used\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/tools/commands.rs:508:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m206\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl CommandSet {\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------------\u001b[0m \u001b[1m\u001b[94mmethod in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m508\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn taken(&self) -> Option<CommandId> {\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[33m^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"method `move_blocked` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/movement.rs","byte_start":597,"byte_end":613,"line_start":22,"line_end":22,"column_start":1,"column_end":17,"is_primary":false,"text":[{"text":"impl Drawing<'_> {","highlight_start":1,"highlight_end":17}],"label":"method in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/widget/movement.rs","byte_start":1041,"byte_end":1053,"line_start":30,"line_end":30,"column_start":8,"column_end":20,"is_primary":true,"text":[{"text":"    fn move_blocked(&self, moving: ShapeId, rect: Rect) -> bool {","highlight_start":8,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: method `move_blocked` is never used\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/movement.rs:30:8\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m22\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl Drawing<'_> {\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m----------------\u001b[0m \u001b[1m\u001b[94mmethod in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m30\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     fn move_blocked(&self, moving: ShapeId, rect: Rect) -> bool {\n   \u001b[1m\u001b[94m|\u001b[0m        \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`","code":{"code":"clippy::single_match_else","explanation":null},"level":"warning","spans":[{"file_name":"src/app.rs","byte_start":52869,"byte_end":53780,"line_start":1350,"line_end":1372,"column_start":23,"column_end":10,"is_primary":true,"text":[{"text":"        let content = match selection.and_then(|shapes| self.selection_document(&shapes)) {","highlight_start":23,"highlight_end":92},{"text":"            Some(doc) => {","highlight_start":1,"highlight_end":27},{"text":"                let mut index = blockworx_doc::document::DocIndex::default();","highlight_start":1,"highlight_end":78},{"text":"                let mut presentation = crate::presentation::Presentation::default();","highlight_start":1,"highlight_end":85},{"text":"                crate::widget::display::render_svg(","highlight_start":1,"highlight_end":52},{"text":"                    &self.theme,","highlight_start":1,"highlight_end":33},{"text":"                    self.preferences.font,","highlight_start":1,"highlight_end":43},{"text":"                    index.view(&doc),","highlight_start":1,"highlight_end":38},{"text":"                    &BlockPath::empty(),","highlight_start":1,"highlight_end":41},{"text":"                    &mut presentation,","highlight_start":1,"highlight_end":39},{"text":"                )","highlight_start":1,"highlight_end":18},{"text":"            }","highlight_start":1,"highlight_end":14},{"text":"            None => {","highlight_start":1,"highlight_end":22},{"text":"                let doc = self.link.session().optimistic();","highlight_start":1,"highlight_end":60},{"text":"                crate::widget::display::render_svg(","highlight_start":1,"highlight_end":52},{"text":"                    &self.theme,","highlight_start":1,"highlight_end":33},{"text":"                    self.preferences.font,","highlight_start":1,"highlight_end":43},{"text":"                    self.doc_index.view(doc),","highlight_start":1,"highlight_end":46},{"text":"                    &self.path,","highlight_start":1,"highlight_end":32},{"text":"                    &mut self.presentation,","highlight_start":1,"highlight_end":44},{"text":"                )","highlight_start":1,"highlight_end":18},{"text":"            }","highlight_start":1,"highlight_end":14},{"text":"        };","highlight_start":1,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#single_match_else","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`-W clippy::single-match-else` implied by `-W clippy::pedantic`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"try","code":null,"level":"help","spans":[{"file_name":"src/app.rs","byte_start":52869,"byte_end":53780,"line_start":1350,"line_end":1372,"column_start":23,"column_end":10,"is_primary":true,"text":[{"text":"        let content = match selection.and_then(|shapes| self.selection_document(&shapes)) {","highlight_start":23,"highlight_end":92},{"text":"            Some(doc) => {","highlight_start":1,"highlight_end":27},{"text":"                let mut index = blockworx_doc::document::DocIndex::default();","highlight_start":1,"highlight_end":78},{"text":"                let mut presentation = crate::presentation::Presentation::default();","highlight_start":1,"highlight_end":85},{"text":"                crate::widget::display::render_svg(","highlight_start":1,"highlight_end":52},{"text":"                    &self.theme,","highlight_start":1,"highlight_end":33},{"text":"                    self.preferences.font,","highlight_start":1,"highlight_end":43},{"text":"                    index.view(&doc),","highlight_start":1,"highlight_end":38},{"text":"                    &BlockPath::empty(),","highlight_start":1,"highlight_end":41},{"text":"                    &mut presentation,","highlight_start":1,"highlight_end":39},{"text":"                )","highlight_start":1,"highlight_end":18},{"text":"            }","highlight_start":1,"highlight_end":14},{"text":"            None => {","highlight_start":1,"highlight_end":22},{"text":"                let doc = self.link.session().optimistic();","highlight_start":1,"highlight_end":60},{"text":"                crate::widget::display::render_svg(","highlight_start":1,"highlight_end":52},{"text":"                    &self.theme,","highlight_start":1,"highlight_end":33},{"text":"                    self.preferences.font,","highlight_start":1,"highlight_end":43},{"text":"                    self.doc_index.view(doc),","highlight_start":1,"highlight_end":46},{"text":"                    &self.path,","highlight_start":1,"highlight_end":32},{"text":"                    &mut self.presentation,","highlight_start":1,"highlight_end":44},{"text":"                )","highlight_start":1,"highlight_end":18},{"text":"            }","highlight_start":1,"highlight_end":14},{"text":"        };","highlight_start":1,"highlight_end":10}],"label":null,"suggested_replacement":"if let Some(doc) = selection.and_then(|shapes| self.selection_document(&shapes)) {\n            let mut index = blockworx_doc::document::DocIndex::default();\n            let mut presentation = crate::presentation::Presentation::default();\n            crate::widget::display::render_svg(\n                &self.theme,\n                self.preferences.font,\n                index.view(&doc),\n                &BlockPath::empty(),\n                &mut presentation,\n            )\n        } else {\n            let doc = self.link.session().optimistic();\n            crate::widget::display::render_svg(\n                &self.theme,\n                self.preferences.font,\n                self.doc_index.view(doc),\n                &self.path,\n                &mut self.presentation,\n            )\n        }","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`\u001b[0m\n    \u001b[1m\u001b[94m--> \u001b[0msrc/app.rs:1350:23\n     \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1350\u001b[0m \u001b[1m\u001b[94m|\u001b[0m           let content = match selection.and_then(|shapes| self.selection_document(&shapes)) {\n     \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m _______________________^\u001b[0m\n\u001b[1m\u001b[94m1351\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m             Some(doc) => {\n\u001b[1m\u001b[94m1352\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m                 let mut index = blockworx_doc::document::DocIndex::default();\n\u001b[1m\u001b[94m1353\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m                 let mut presentation = crate::presentation::Presentation::default();\n\u001b[1m\u001b[94m...\u001b[0m    \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m1372\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m         };\n     \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|_________^\u001b[0m\n     \u001b[1m\u001b[94m|\u001b[0m\n     \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#single_match_else\n     \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `-W clippy::single-match-else` implied by `-W clippy::pedantic`\n     \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]`\n\u001b[1m\u001b[96mhelp\u001b[0m: try\n     \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1350\u001b[0m \u001b[92m~ \u001b[0m        let content = \u001b[92mif let Some(doc) = selection.and_then(|shapes| self.selection_document(&shapes)) {\u001b[0m\n\u001b[1m\u001b[94m1351\u001b[0m \u001b[92m+             let mut index = blockworx_doc::document::DocIndex::default();\u001b[0m\n\u001b[1m\u001b[94m1352\u001b[0m \u001b[92m+             let mut presentation = crate::presentation::Presentation::default();\u001b[0m\n\u001b[1m\u001b[94m1353\u001b[0m \u001b[92m+             crate::widget::display::render_svg(\u001b[0m\n\u001b[1m\u001b[94m1354\u001b[0m \u001b[92m+                 &self.theme,\u001b[0m\n\u001b[1m\u001b[94m1355\u001b[0m \u001b[92m+                 self.preferences.font,\u001b[0m\n\u001b[1m\u001b[94m1356\u001b[0m \u001b[92m+                 index.view(&doc),\u001b[0m\n\u001b[1m\u001b[94m1357\u001b[0m \u001b[92m+                 &BlockPath::empty(),\u001b[0m\n\u001b[1m\u001b[94m1358\u001b[0m \u001b[92m+                 &mut presentation,\u001b[0m\n\u001b[1m\u001b[94m1359\u001b[0m \u001b[92m+             )\u001b[0m\n\u001b[1m\u001b[94m1360\u001b[0m \u001b[92m+         } else {\u001b[0m\n\u001b[1m\u001b[94m1361\u001b[0m \u001b[92m+             let doc = self.link.session().optimistic();\u001b[0m\n\u001b[1m\u001b[94m1362\u001b[0m \u001b[92m+             crate::widget::display::render_svg(\u001b[0m\n\u001b[1m\u001b[94m1363\u001b[0m \u001b[92m+                 &self.theme,\u001b[0m\n\u001b[1m\u001b[94m1364\u001b[0m \u001b[92m+                 self.preferences.font,\u001b[0m\n\u001b[1m\u001b[94m1365\u001b[0m \u001b[92m+                 self.doc_index.view(doc),\u001b[0m\n\u001b[1m\u001b[94m1366\u001b[0m \u001b[92m+                 &self.path,\u001b[0m\n\u001b[1m\u001b[94m1367\u001b[0m \u001b[92m+                 &mut self.presentation,\u001b[0m\n\u001b[1m\u001b[94m1368\u001b[0m \u001b[92m+             )\u001b[0m\n\u001b[1m\u001b[94m1369\u001b[0m \u001b[92m~         }\u001b[0m;\n     \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"consider adding a `;` to the last statement for consistent formatting","code":{"code":"clippy::semicolon_if_nothing_returned","explanation":null},"level":"warning","spans":[{"file_name":"src/app.rs","byte_start":54972,"byte_end":55037,"line_start":1395,"line_end":1395,"column_start":17,"column_end":82,"is_primary":true,"text":[{"text":"                tracing::error!(\"the export document refused a paste: {refusal}\")","highlight_start":17,"highlight_end":82}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#semicolon_if_nothing_returned","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`-W clippy::semicolon-if-nothing-returned` implied by `-W clippy::pedantic`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-W clippy::pedantic` add `#[allow(clippy::semicolon_if_nothing_returned)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"add a `;` here","code":null,"level":"help","spans":[{"file_name":"src/app.rs","byte_start":54972,"byte_end":55037,"line_start":1395,"line_end":1395,"column_start":17,"column_end":82,"is_primary":true,"text":[{"text":"                tracing::error!(\"the export document refused a paste: {refusal}\")","highlight_start":17,"highlight_end":82}],"label":null,"suggested_replacement":"tracing::error!(\"the export document refused a paste: {refusal}\");","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: consider adding a `;` to the last statement for consistent formatting\u001b[0m\n    \u001b[1m\u001b[94m--> \u001b[0msrc/app.rs:1395:17\n     \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1395\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 tracing::error!(\"the export document refused a paste: {refusal}\")\n     \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: add a `;` here: `tracing::error!(\"the export document refused a paste: {refusal}\");`\u001b[0m\n     \u001b[1m\u001b[94m|\u001b[0m\n     \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#semicolon_if_nothing_returned\n     \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `-W clippy::semicolon-if-nothing-returned` implied by `-W clippy::pedantic`\n     \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to override `-W clippy::pedantic` add `#[allow(clippy::semicolon_if_nothing_returned)]`\n\n"}
{"$message_type":"diagnostic","message":"methods called `as_*` usually take `self` by reference or `self` by mutable reference","code":{"code":"clippy::wrong_self_convention","explanation":null},"level":"warning","spans":[{"file_name":"src/edit/clipboard.rs","byte_start":7641,"byte_end":7645,"line_start":194,"line_end":194,"column_start":20,"column_end":24,"is_primary":true,"text":[{"text":"    pub fn as_pins(self) -> Self {","highlight_start":20,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider choosing a less ambiguous name","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#wrong_self_convention","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::wrong_self_convention)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods called `as_*` usually take `self` by reference or `self` by mutable reference\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/edit/clipboard.rs:194:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m194\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn as_pins(self) -> Self {\n    \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[33m^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider choosing a less ambiguous name\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#wrong_self_convention\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::wrong_self_convention)]` on by default\n\n"}
{"$message_type":"diagnostic","message":"use of `Option<Option<T>>`","code":{"code":"clippy::option_option","explanation":null},"level":"warning","spans":[{"file_name":"src/edit/create.rs","byte_start":8414,"byte_end":8439,"line_start":231,"line_end":231,"column_start":6,"column_end":31,"is_primary":true,"text":[{"text":") -> Option<Option<&'a Block>> {","highlight_start":6,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider using `Option<&'a Block>`, or a custom enum if you need to distinguish all 3 cases","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#option_option","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`-W clippy::option-option` implied by `-W clippy::pedantic`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-W clippy::pedantic` add `#[allow(clippy::option_option)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: use of `Option<Option<T>>`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/edit/create.rs:231:6\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m231\u001b[0m \u001b[1m\u001b[94m|\u001b[0m ) -> Option<Option<&'a Block>> {\n    \u001b[1m\u001b[94m|\u001b[0m      \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider using `Option<&'a Block>`, or a custom enum if you need to distinguish all 3 cases\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#option_option\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `-W clippy::option-option` implied by `-W clippy::pedantic`\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to override `-W clippy::pedantic` add `#[allow(clippy::option_option)]`\n\n"}
{"$message_type":"diagnostic","message":"this function has too many arguments (7/5)","code":{"code":"clippy::too_many_arguments","explanation":null},"level":"warning","spans":[{"file_name":"src/script/driver.rs","byte_start":8292,"byte_end":8527,"line_start":216,"line_end":224,"column_start":1,"column_end":25,"is_primary":true,"text":[{"text":"fn dispatch(","highlight_start":1,"highlight_end":13},{"text":"    action: Action,","highlight_start":1,"highlight_end":20},{"text":"    link: &mut Link,","highlight_start":1,"highlight_end":21},{"text":"    index: &mut DocIndex,","highlight_start":1,"highlight_end":26},{"text":"    path: &BlockPath,","highlight_start":1,"highlight_end":22},{"text":"    presentation: &mut crate::presentation::Presentation,","highlight_start":1,"highlight_end":58},{"text":"    sink: &mut CommitBuilder,","highlight_start":1,"highlight_end":30},{"text":"    tool: &mut Tool,","highlight_start":1,"highlight_end":21},{"text":") -> Option<Box<Action>> {","highlight_start":1,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#too_many_arguments","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::too_many_arguments)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this function has too many arguments (7/5)\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/script/driver.rs:216:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m216\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m fn dispatch(\n\u001b[1m\u001b[94m217\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     action: Action,\n\u001b[1m\u001b[94m218\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     link: &mut Link,\n\u001b[1m\u001b[94m219\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     index: &mut DocIndex,\n\u001b[1m\u001b[94m...\u001b[0m   \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m223\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     tool: &mut Tool,\n\u001b[1m\u001b[94m224\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m ) -> Option<Box<Action>> {\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|________________________^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#too_many_arguments\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::too_many_arguments)]` on by default\n\n"}
{"$message_type":"diagnostic","message":"this function has too many arguments (7/5)","code":{"code":"clippy::too_many_arguments","explanation":null},"level":"warning","spans":[{"file_name":"src/script/driver.rs","byte_start":9413,"byte_end":9624,"line_start":247,"line_end":255,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"fn run_command(","highlight_start":1,"highlight_end":16},{"text":"    name: &str,","highlight_start":1,"highlight_end":16},{"text":"    link: &mut Link,","highlight_start":1,"highlight_end":21},{"text":"    index: &mut DocIndex,","highlight_start":1,"highlight_end":26},{"text":"    path: &BlockPath,","highlight_start":1,"highlight_end":22},{"text":"    presentation: &mut crate::presentation::Presentation,","highlight_start":1,"highlight_end":58},{"text":"    sink: &mut CommitBuilder,","highlight_start":1,"highlight_end":30},{"text":"    tool: &mut Tool,","highlight_start":1,"highlight_end":21},{"text":") {","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#too_many_arguments","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this function has too many arguments (7/5)\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/script/driver.rs:247:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m247\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m fn run_command(\n\u001b[1m\u001b[94m248\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     name: &str,\n\u001b[1m\u001b[94m249\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     link: &mut Link,\n\u001b[1m\u001b[94m250\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     index: &mut DocIndex,\n\u001b[1m\u001b[94m...\u001b[0m   \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m254\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     tool: &mut Tool,\n\u001b[1m\u001b[94m255\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m ) {\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|_^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#too_many_arguments\n\n"}
{"$message_type":"diagnostic","message":"the `Err`-variant returned from this closure is very large","code":{"code":"clippy::result_large_err","explanation":null},"level":"warning","spans":[{"file_name":"src/schema/error.rs","byte_start":872,"byte_end":1042,"line_start":25,"line_end":32,"column_start":5,"column_end":6,"is_primary":false,"text":[{"text":"    Kdl {","highlight_start":5,"highlight_end":10},{"text":"        message: String,","highlight_start":1,"highlight_end":25},{"text":"        #[label(\"{label}\")]","highlight_start":1,"highlight_end":28},{"text":"        span: SourceSpan,","highlight_start":1,"highlight_end":26},{"text":"        label: String,","highlight_start":1,"highlight_end":23},{"text":"        #[source_code]","highlight_start":1,"highlight_end":23},{"text":"        src: NamedSource<String>,","highlight_start":1,"highlight_end":34},{"text":"    },","highlight_start":1,"highlight_end":6}],"label":"the largest variant contains at least 136 bytes","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/script/session.rs","byte_start":2024,"byte_end":2068,"line_start":51,"line_end":51,"column_start":45,"column_end":89,"is_primary":true,"text":[{"text":"        let lowered = match initial_kdl.map(|src| schema::Document::parse_kdl(src, name)) {","highlight_start":45,"highlight_end":89}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try reducing the size of `schema::error::SchemaError`, for example by boxing large elements or replacing it with `Box<schema::error::SchemaError>`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#result_large_err","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::result_large_err)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: the `Err`-variant returned from this closure is very large\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/script/session.rs:51:45\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m51\u001b[0m \u001b[1m\u001b[94m|\u001b[0m           let lowered = match initial_kdl.map(|src| schema::Document::parse_kdl(src, name)) {\n   \u001b[1m\u001b[94m|\u001b[0m                                               \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n  \u001b[1m\u001b[94m::: \u001b[0msrc/schema/error.rs:25:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m25\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m/\u001b[0m     Kdl {\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         message: String,\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         #[label(\"{label}\")]\n\u001b[1m\u001b[94m28\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         span: SourceSpan,\n\u001b[1m\u001b[94m...\u001b[0m  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m31\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         src: NamedSource<String>,\n\u001b[1m\u001b[94m32\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     },\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m|_____-\u001b[0m \u001b[1m\u001b[94mthe largest variant contains at least 136 bytes\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: try reducing the size of `schema::error::SchemaError`, for example by boxing large elements or replacing it with `Box<schema::error::SchemaError>`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#result_large_err\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::result_large_err)]` on by default\n\n"}
{"$message_type":"diagnostic","message":"unused `self` argument","code":{"code":"clippy::unused_self","explanation":null},"level":"warning","spans":[{"file_name":"src/script/step.rs","byte_start":5616,"byte_end":5621,"line_start":162,"line_end":162,"column_start":16,"column_end":21,"is_primary":true,"text":[{"text":"    fn rect_of(&self, block: &Block) -> egui::Rect {","highlight_start":16,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider refactoring to an associated function","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unused_self","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`-W clippy::unused-self` implied by `-W clippy::pedantic`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-W clippy::pedantic` add `#[allow(clippy::unused_self)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused `self` argument\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/script/step.rs:162:16\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m162\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     fn rect_of(&self, block: &Block) -> egui::Rect {\n    \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[33m^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider refactoring to an associated function\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#unused_self\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `-W clippy::unused-self` implied by `-W clippy::pedantic`\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to override `-W clippy::pedantic` add `#[allow(clippy::unused_self)]`\n\n"}
{"$message_type":"diagnostic","message":"calling `Id::default()` is more clear than this expression","code":{"code":"clippy::default_trait_access","explanation":null},"level":"warning","spans":[{"file_name":"src/shape/block.rs","byte_start":26231,"byte_end":26249,"line_start":649,"line_end":649,"column_start":24,"column_end":42,"is_primary":true,"text":[{"text":"                owner: Default::default(),","highlight_start":24,"highlight_end":42}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#default_trait_access","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`-W clippy::default-trait-access` implied by `-W clippy::pedantic`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-W clippy::pedantic` add `#[allow(clippy::default_trait_access)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"try","code":null,"level":"help","spans":[{"file_name":"src/shape/block.rs","byte_start":26231,"byte_end":26249,"line_start":649,"line_end":649,"column_start":24,"column_end":42,"is_primary":true,"text":[{"text":"                owner: Default::default(),","highlight_start":24,"highlight_end":42}],"label":null,"suggested_replacement":"Id::default()","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: calling `Id::default()` is more clear than this expression\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/shape/block.rs:649:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m649\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 owner: Default::default(),\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: try: `Id::default()`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#default_trait_access\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `-W clippy::default-trait-access` implied by `-W clippy::pedantic`\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to override `-W clippy::pedantic` add `#[allow(clippy::default_trait_access)]`\n\n"}
{"$message_type":"diagnostic","message":"calling `Id::default()` is more clear than this expression","code":{"code":"clippy::default_trait_access","explanation":null},"level":"warning","spans":[{"file_name":"src/shape/block.rs","byte_start":27047,"byte_end":27065,"line_start":674,"line_end":674,"column_start":25,"column_end":43,"is_primary":true,"text":[{"text":"                parent: Default::default(),","highlight_start":25,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#default_trait_access","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"try","code":null,"level":"help","spans":[{"file_name":"src/shape/block.rs","byte_start":27047,"byte_end":27065,"line_start":674,"line_end":674,"column_start":25,"column_end":43,"is_primary":true,"text":[{"text":"                parent: Default::default(),","highlight_start":25,"highlight_end":43}],"label":null,"suggested_replacement":"Id::default()","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: calling `Id::default()` is more clear than this expression\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/shape/block.rs:674:25\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m674\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 parent: Default::default(),\n    \u001b[1m\u001b[94m|\u001b[0m                         \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: try: `Id::default()`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#default_trait_access\n\n"}
{"$message_type":"diagnostic","message":"calling `Icon::default()` is more clear than this expression","code":{"code":"clippy::default_trait_access","explanation":null},"level":"warning","spans":[{"file_name":"src/shape/block.rs","byte_start":27344,"byte_end":27362,"line_start":680,"line_end":680,"column_start":23,"column_end":41,"is_primary":true,"text":[{"text":"                icon: Default::default(),","highlight_start":23,"highlight_end":41}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#default_trait_access","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"try","code":null,"level":"help","spans":[{"file_name":"src/shape/block.rs","byte_start":27344,"byte_end":27362,"line_start":680,"line_end":680,"column_start":23,"column_end":41,"is_primary":true,"text":[{"text":"                icon: Default::default(),","highlight_start":23,"highlight_end":41}],"label":null,"suggested_replacement":"Icon::default()","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: calling `Icon::default()` is more clear than this expression\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/shape/block.rs:680:23\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m680\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 icon: Default::default(),\n    \u001b[1m\u001b[94m|\u001b[0m                       \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: try: `Icon::default()`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#default_trait_access\n\n"}
{"$message_type":"diagnostic","message":"more than 0 bools in function parameters","code":{"code":"clippy::fn_params_excessive_bools","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/commands.rs","byte_start":22120,"byte_end":22331,"line_start":586,"line_end":593,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"fn tag_visibility(hidden: bool) -> crate::edit::naming::TagVisibility {","highlight_start":1,"highlight_end":72},{"text":"    use crate::edit::naming::TagVisibility;","highlight_start":1,"highlight_end":44},{"text":"    if hidden {","highlight_start":1,"highlight_end":16},{"text":"        TagVisibility::Hidden","highlight_start":1,"highlight_end":30},{"text":"    } else {","highlight_start":1,"highlight_end":13},{"text":"        TagVisibility::Shown","highlight_start":1,"highlight_end":29},{"text":"    }","highlight_start":1,"highlight_end":6},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider refactoring bools into two-variant enums","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#fn_params_excessive_bools","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`-W clippy::fn-params-excessive-bools` implied by `-W clippy::pedantic`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-W clippy::pedantic` add `#[allow(clippy::fn_params_excessive_bools)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: more than 0 bools in function parameters\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/tools/commands.rs:586:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m586\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m fn tag_visibility(hidden: bool) -> crate::edit::naming::TagVisibility {\n\u001b[1m\u001b[94m587\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     use crate::edit::naming::TagVisibility;\n\u001b[1m\u001b[94m588\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     if hidden {\n\u001b[1m\u001b[94m589\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m         TagVisibility::Hidden\n\u001b[1m\u001b[94m...\u001b[0m   \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m593\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m }\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|_^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider refactoring bools into two-variant enums\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#fn_params_excessive_bools\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `-W clippy::fn-params-excessive-bools` implied by `-W clippy::pedantic`\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to override `-W clippy::pedantic` add `#[allow(clippy::fn_params_excessive_bools)]`\n\n"}
{"$message_type":"diagnostic","message":"more than 0 bools in function parameters","code":{"code":"clippy::fn_params_excessive_bools","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/commands.rs","byte_start":22333,"byte_end":22547,"line_start":595,"line_end":602,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"fn interface_lock(locked: bool) -> crate::edit::naming::InterfaceLock {","highlight_start":1,"highlight_end":72},{"text":"    use crate::edit::naming::InterfaceLock;","highlight_start":1,"highlight_end":44},{"text":"    if locked {","highlight_start":1,"highlight_end":16},{"text":"        InterfaceLock::Locked","highlight_start":1,"highlight_end":30},{"text":"    } else {","highlight_start":1,"highlight_end":13},{"text":"        InterfaceLock::Unlocked","highlight_start":1,"highlight_end":32},{"text":"    }","highlight_start":1,"highlight_end":6},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider refactoring bools into two-variant enums","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#fn_params_excessive_bools","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: more than 0 bools in function parameters\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/tools/commands.rs:595:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m595\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m fn interface_lock(locked: bool) -> crate::edit::naming::InterfaceLock {\n\u001b[1m\u001b[94m596\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     use crate::edit::naming::InterfaceLock;\n\u001b[1m\u001b[94m597\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     if locked {\n\u001b[1m\u001b[94m598\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m         InterfaceLock::Locked\n\u001b[1m\u001b[94m...\u001b[0m   \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m602\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m }\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|_^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider refactoring bools into two-variant enums\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#fn_params_excessive_bools\n\n"}
{"$message_type":"diagnostic","message":"these match arms have identical bodies","code":{"code":"clippy::match_same_arms","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/tool.rs","byte_start":10737,"byte_end":10791,"line_start":268,"line_end":268,"column_start":13,"column_end":67,"is_primary":true,"text":[{"text":"            Action::SetPinTags { hidden: true, .. } => \"hide-tags\",","highlight_start":13,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tools/tool.rs","byte_start":10874,"byte_end":10935,"line_start":270,"line_end":270,"column_start":13,"column_end":74,"is_primary":true,"text":[{"text":"            Action::SetShapeTagHidden { hidden: true, .. } => \"hide-tags\",","highlight_start":13,"highlight_end":74}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is unintentional make the arms return different values","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#match_same_arms","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`-W clippy::match-same-arms` implied by `-W clippy::pedantic`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-W clippy::pedantic` add `#[allow(clippy::match_same_arms)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"otherwise merge the patterns into a single arm","code":null,"level":"help","spans":[{"file_name":"src/tools/tool.rs","byte_start":10874,"byte_end":10949,"line_start":270,"line_end":271,"column_start":13,"column_end":13,"is_primary":true,"text":[{"text":"            Action::SetShapeTagHidden { hidden: true, .. } => \"hide-tags\",","highlight_start":13,"highlight_end":75},{"text":"            Action::SetShapeTagHidden { hidden: false, .. } => \"show-tags\",","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":"","suggestion_applicability":"MaybeIncorrect","expansion":null},{"file_name":"src/tools/tool.rs","byte_start":10737,"byte_end":10776,"line_start":268,"line_end":268,"column_start":13,"column_end":52,"is_primary":true,"text":[{"text":"            Action::SetPinTags { hidden: true, .. } => \"hide-tags\",","highlight_start":13,"highlight_end":52}],"label":null,"suggested_replacement":"Action::SetPinTags { hidden: true, .. } | Action::SetShapeTagHidden { hidden: true, .. }","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: these match arms have identical bodies\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/tools/tool.rs:268:13\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m268\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SetPinTags { hidden: true, .. } => \"hide-tags\",\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m269\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SetPinTags { hidden: false, .. } => \"show-tags\",\n\u001b[1m\u001b[94m270\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SetShapeTagHidden { hidden: true, .. } => \"hide-tags\",\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if this is unintentional make the arms return different values\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#match_same_arms\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `-W clippy::match-same-arms` implied by `-W clippy::pedantic`\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to override `-W clippy::pedantic` add `#[allow(clippy::match_same_arms)]`\n\u001b[1m\u001b[96mhelp\u001b[0m: otherwise merge the patterns into a single arm\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m268\u001b[0m \u001b[92m~ \u001b[0m            Action::SetPinTags { hidden: true, .. }\u001b[92m | Action::SetShapeTagHidden { hidden: true, .. }\u001b[0m => \"hide-tags\",\n\u001b[1m\u001b[94m269\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SetPinTags { hidden: false, .. } => \"show-tags\",\n\u001b[1m\u001b[94m270\u001b[0m \u001b[92m~ \u001b[0m            Action::SetShapeTagHidden { hidden: false, .. } => \"show-tags\",\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"these match arms have identical bodies","code":{"code":"clippy::match_same_arms","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/tool.rs","byte_start":10805,"byte_end":10860,"line_start":269,"line_end":269,"column_start":13,"column_end":68,"is_primary":true,"text":[{"text":"            Action::SetPinTags { hidden: false, .. } => \"show-tags\",","highlight_start":13,"highlight_end":68}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tools/tool.rs","byte_start":10949,"byte_end":11011,"line_start":271,"line_end":271,"column_start":13,"column_end":75,"is_primary":true,"text":[{"text":"            Action::SetShapeTagHidden { hidden: false, .. } => \"show-tags\",","highlight_start":13,"highlight_end":75}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is unintentional make the arms return different values","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#match_same_arms","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"otherwise merge the patterns into a single arm","code":null,"level":"help","spans":[{"file_name":"src/tools/tool.rs","byte_start":10949,"byte_end":11025,"line_start":271,"line_end":272,"column_start":13,"column_end":13,"is_primary":true,"text":[{"text":"            Action::SetShapeTagHidden { hidden: false, .. } => \"show-tags\",","highlight_start":13,"highlight_end":76},{"text":"            Action::FlipShapePins(_) => \"flip-lr\",","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":"","suggestion_applicability":"MaybeIncorrect","expansion":null},{"file_name":"src/tools/tool.rs","byte_start":10805,"byte_end":10845,"line_start":269,"line_end":269,"column_start":13,"column_end":53,"is_primary":true,"text":[{"text":"            Action::SetPinTags { hidden: false, .. } => \"show-tags\",","highlight_start":13,"highlight_end":53}],"label":null,"suggested_replacement":"Action::SetPinTags { hidden: false, .. } | Action::SetShapeTagHidden { hidden: false, .. }","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: these match arms have identical bodies\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/tools/tool.rs:269:13\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m269\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SetPinTags { hidden: false, .. } => \"show-tags\",\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m270\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SetShapeTagHidden { hidden: true, .. } => \"hide-tags\",\n\u001b[1m\u001b[94m271\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SetShapeTagHidden { hidden: false, .. } => \"show-tags\",\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if this is unintentional make the arms return different values\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#match_same_arms\n\u001b[1m\u001b[96mhelp\u001b[0m: otherwise merge the patterns into a single arm\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m269\u001b[0m \u001b[92m~ \u001b[0m            Action::SetPinTags { hidden: false, .. }\u001b[92m | Action::SetShapeTagHidden { hidden: false, .. }\u001b[0m => \"show-tags\",\n\u001b[1m\u001b[94m270\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SetShapeTagHidden { hidden: true, .. } => \"hide-tags\",\n\u001b[1m\u001b[94m271\u001b[0m \u001b[92m~ \u001b[0m            Action::FlipShapePins(_) => \"flip-lr\",\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"more than 0 bools in function parameters","code":{"code":"clippy::fn_params_excessive_bools","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/toolbar.rs","byte_start":39910,"byte_end":42756,"line_start":954,"line_end":1023,"column_start":5,"column_end":6,"is_primary":true,"text":[{"text":"    fn click_the_last_history_button(can_redo: bool) -> Option<Action> {","highlight_start":5,"highlight_end":73},{"text":"        use crate::tools::commands::{CommandContext, CommandSet, History};","highlight_start":1,"highlight_end":75},{"text":"        use crate::widget::test_fixtures::Scene;","highlight_start":1,"highlight_end":49},{"text":"        // The icons load and the cluster measures itself over the first frames;","highlight_start":1,"highlight_end":81},{"text":"        // the click lands on the last one, against a settled layout.","highlight_start":1,"highlight_end":70},{"text":"        const FRAMES: usize = 10;","highlight_start":1,"highlight_end":34},{"text":"        let ctx = egui::Context::default();","highlight_start":1,"highlight_end":44},{"text":"        egui_extras::install_image_loaders(&ctx);","highlight_start":1,"highlight_end":50},{"text":"        let mut scene = Scene::new(Vec::new());","highlight_start":1,"highlight_end":48},{"text":"        let tool: Tool = crate::tools::SelectTool.into();","highlight_start":1,"highlight_end":58},{"text":"        let screen = viewport();","highlight_start":1,"highlight_end":33},{"text":"","highlight_start":1,"highlight_end":1},{"text":"        let mut cluster = Rect::NOTHING;","highlight_start":1,"highlight_end":41},{"text":"        let mut fired = None;","highlight_start":1,"highlight_end":30},{"text":"        for frame in 0..FRAMES {","highlight_start":1,"highlight_end":33},{"text":"            let clicking = frame == FRAMES - 1;","highlight_start":1,"highlight_end":48},{"text":"            let mut input = egui::RawInput {","highlight_start":1,"highlight_end":45},{"text":"                screen_rect: Some(screen),","highlight_start":1,"highlight_end":43},{"text":"                #[expect(","highlight_start":1,"highlight_end":26},{"text":"                    clippy::cast_precision_loss,","highlight_start":1,"highlight_end":49},{"text":"                    reason = \"a frame count, not a measurement\"","highlight_start":1,"highlight_end":64},{"text":"                )]","highlight_start":1,"highlight_end":19},{"text":"                time: Some(frame as f64 * 0.016),","highlight_start":1,"highlight_end":50},{"text":"                ..Default::default()","highlight_start":1,"highlight_end":37},{"text":"            };","highlight_start":1,"highlight_end":15},{"text":"            if clicking {","highlight_start":1,"highlight_end":26},{"text":"                // Inside the bottom-right button, past the popup frame's margin.","highlight_start":1,"highlight_end":82},{"text":"                let pos = cluster.max - vec2(12.0, 12.0);","highlight_start":1,"highlight_end":58},{"text":"                assert!(","highlight_start":1,"highlight_end":25},{"text":"                    cluster.contains(pos),","highlight_start":1,"highlight_end":43},{"text":"                    \"the history cluster never laid out: {cluster:?}\"","highlight_start":1,"highlight_end":70},{"text":"                );","highlight_start":1,"highlight_end":19},{"text":"                input.events = vec![","highlight_start":1,"highlight_end":37},{"text":"                    egui::Event::PointerMoved(pos),","highlight_start":1,"highlight_end":52},{"text":"                    egui::Event::PointerButton {","highlight_start":1,"highlight_end":49},{"text":"                        pos,","highlight_start":1,"highlight_end":29},{"text":"                        button: egui::PointerButton::Primary,","highlight_start":1,"highlight_end":62},{"text":"                        pressed: true,","highlight_start":1,"highlight_end":39},{"text":"                        modifiers: egui::Modifiers::NONE,","highlight_start":1,"highlight_end":58},{"text":"                    },","highlight_start":1,"highlight_end":23},{"text":"                    egui::Event::PointerButton {","highlight_start":1,"highlight_end":49},{"text":"                        pos,","highlight_start":1,"highlight_end":29},{"text":"                        button: egui::PointerButton::Primary,","highlight_start":1,"highlight_end":62},{"text":"                        pressed: false,","highlight_start":1,"highlight_end":40},{"text":"                        modifiers: egui::Modifiers::NONE,","highlight_start":1,"highlight_end":58},{"text":"                    },","highlight_start":1,"highlight_end":23},{"text":"                ];","highlight_start":1,"highlight_end":19},{"text":"            }","highlight_start":1,"highlight_end":14},{"text":"            let _ = ctx.clone().run_ui(input, |ui| {","highlight_start":1,"highlight_end":53},{"text":"                let mut commands = {","highlight_start":1,"highlight_end":37},{"text":"                    let drawing = scene.drawing();","highlight_start":1,"highlight_end":51},{"text":"                    CommandSet::available(&CommandContext {","highlight_start":1,"highlight_end":60},{"text":"                        tool: &tool,","highlight_start":1,"highlight_end":37},{"text":"                        data: &drawing,","highlight_start":1,"highlight_end":40},{"text":"                        history: History {","highlight_start":1,"highlight_end":43},{"text":"                            can_undo: true,","highlight_start":1,"highlight_end":44},{"text":"                            can_redo,","highlight_start":1,"highlight_end":38},{"text":"                        },","highlight_start":1,"highlight_end":27},{"text":"                        current_lock: Lock::Unlocked,","highlight_start":1,"highlight_end":54},{"text":"                    })","highlight_start":1,"highlight_end":23},{"text":"                };","highlight_start":1,"highlight_end":19},{"text":"                let (action, rect) = history_overlay(&mut commands, screen, ui);","highlight_start":1,"highlight_end":81},{"text":"                cluster = rect;","highlight_start":1,"highlight_end":32},{"text":"                if clicking {","highlight_start":1,"highlight_end":30},{"text":"                    fired = action;","highlight_start":1,"highlight_end":36},{"text":"                }","highlight_start":1,"highlight_end":18},{"text":"            });","highlight_start":1,"highlight_end":16},{"text":"        }","highlight_start":1,"highlight_end":10},{"text":"        fired","highlight_start":1,"highlight_end":14},{"text":"    }","highlight_start":1,"highlight_end":6}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider refactoring bools into two-variant enums","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#fn_params_excessive_bools","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: more than 0 bools in function parameters\u001b[0m\n    \u001b[1m\u001b[94m--> \u001b[0msrc/tools/toolbar.rs:954:5\n     \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 954\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m     fn click_the_last_history_button(can_redo: bool) -> Option<Action> {\n\u001b[1m\u001b[94m 955\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m         use crate::tools::commands::{CommandContext, CommandSet, History};\n\u001b[1m\u001b[94m 956\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m         use crate::widget::test_fixtures::Scene;\n\u001b[1m\u001b[94m...\u001b[0m    \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m1022\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m         fired\n\u001b[1m\u001b[94m1023\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     }\n     \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|_____^\u001b[0m\n     \u001b[1m\u001b[94m|\u001b[0m\n     \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: consider refactoring bools into two-variant enums\n     \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#fn_params_excessive_bools\n\n"}
{"$message_type":"diagnostic","message":"the borrowed expression implements the required traits","code":{"code":"clippy::needless_borrows_for_generic_args","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/edit_text_box.rs","byte_start":2360,"byte_end":2376,"line_start":67,"line_end":67,"column_start":28,"column_end":44,"is_primary":true,"text":[{"text":"        .text_size_wrapped(&buffer.borrow(), &font, text_inner_width())","highlight_start":28,"highlight_end":44}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_borrows_for_generic_args","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::needless_borrows_for_generic_args)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"change this to","code":null,"level":"help","spans":[{"file_name":"src/tools/edit_text_box.rs","byte_start":2360,"byte_end":2376,"line_start":67,"line_end":67,"column_start":28,"column_end":44,"is_primary":true,"text":[{"text":"        .text_size_wrapped(&buffer.borrow(), &font, text_inner_width())","highlight_start":28,"highlight_end":44}],"label":null,"suggested_replacement":"buffer.borrow()","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: the borrowed expression implements the required traits\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/edit_text_box.rs:67:28\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m67\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         .text_size_wrapped(&buffer.borrow(), &font, text_inner_width())\n   \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: change this to: `buffer.borrow()`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_borrows_for_generic_args\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default\n\n"}
{"$message_type":"diagnostic","message":"this argument is passed by value, but not consumed in the function body","code":{"code":"clippy::needless_pass_by_value","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/new_image.rs","byte_start":6609,"byte_end":6618,"line_start":172,"line_end":172,"column_start":12,"column_end":21,"is_primary":true,"text":[{"text":"    image: ImageData,","highlight_start":12,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`-W clippy::needless-pass-by-value` implied by `-W clippy::pedantic`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-W clippy::pedantic` add `#[allow(clippy::needless_pass_by_value)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider taking a reference instead","code":null,"level":"help","spans":[{"file_name":"src/tools/new_image.rs","byte_start":6609,"byte_end":6609,"line_start":172,"line_end":172,"column_start":12,"column_end":12,"is_primary":true,"text":[{"text":"    image: ImageData,","highlight_start":12,"highlight_end":12}],"label":null,"suggested_replacement":"&","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this argument is passed by value, but not consumed in the function body\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/tools/new_image.rs:172:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m172\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     image: ImageData,\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `-W clippy::needless-pass-by-value` implied by `-W clippy::pedantic`\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to override `-W clippy::pedantic` add `#[allow(clippy::needless_pass_by_value)]`\n\u001b[1m\u001b[96mhelp\u001b[0m: consider taking a reference instead\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m172\u001b[0m \u001b[1m\u001b[94m| \u001b[0m    image: \u001b[92m&\u001b[0mImageData,\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[92m+\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"the borrowed expression implements the required traits","code":{"code":"clippy::needless_borrows_for_generic_args","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/display.rs","byte_start":3513,"byte_end":3524,"line_start":88,"line_end":88,"column_start":48,"column_end":59,"is_primary":true,"text":[{"text":"            let title_size = painter.text_size(&title.name, &painter.theme().title_font.clone());","highlight_start":48,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_borrows_for_generic_args","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"change this to","code":null,"level":"help","spans":[{"file_name":"src/widget/display.rs","byte_start":3513,"byte_end":3524,"line_start":88,"line_end":88,"column_start":48,"column_end":59,"is_primary":true,"text":[{"text":"            let title_size = painter.text_size(&title.name, &painter.theme().title_font.clone());","highlight_start":48,"highlight_end":59}],"label":null,"suggested_replacement":"title.name","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: the borrowed expression implements the required traits\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/display.rs:88:48\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m88\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             let title_size = painter.text_size(&title.name, &painter.theme().title_font.clone());\n   \u001b[1m\u001b[94m|\u001b[0m                                                \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: change this to: `title.name`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_borrows_for_generic_args\n\n"}
{"$message_type":"diagnostic","message":"this argument is passed by value, but not consumed in the function body","code":{"code":"clippy::needless_pass_by_value","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/drawing.rs","byte_start":31745,"byte_end":31751,"line_start":750,"line_end":750,"column_start":60,"column_end":66,"is_primary":true,"text":[{"text":"    pub fn set_title_text(&mut self, shape: ShapeId, text: String) {","highlight_start":60,"highlight_end":66}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider changing the type to","code":null,"level":"help","spans":[{"file_name":"src/widget/drawing.rs","byte_start":31745,"byte_end":31751,"line_start":750,"line_end":750,"column_start":60,"column_end":66,"is_primary":true,"text":[{"text":"    pub fn set_title_text(&mut self, shape: ShapeId, text: String) {","highlight_start":60,"highlight_end":66}],"label":null,"suggested_replacement":"&str","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this argument is passed by value, but not consumed in the function body\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/drawing.rs:750:60\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m750\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn set_title_text(&mut self, shape: ShapeId, text: String) {\n    \u001b[1m\u001b[94m|\u001b[0m                                                            \u001b[1m\u001b[33m^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: consider changing the type to: `&str`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value\n\n"}
{"$message_type":"diagnostic","message":"this argument is passed by value, but not consumed in the function body","code":{"code":"clippy::needless_pass_by_value","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/drawing.rs","byte_start":32646,"byte_end":32652,"line_start":770,"line_end":770,"column_start":64,"column_end":70,"is_primary":true,"text":[{"text":"    pub fn set_type_label_text(&mut self, rect: BlockId, text: String) {","highlight_start":64,"highlight_end":70}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider changing the type to","code":null,"level":"help","spans":[{"file_name":"src/widget/drawing.rs","byte_start":32646,"byte_end":32652,"line_start":770,"line_end":770,"column_start":64,"column_end":70,"is_primary":true,"text":[{"text":"    pub fn set_type_label_text(&mut self, rect: BlockId, text: String) {","highlight_start":64,"highlight_end":70}],"label":null,"suggested_replacement":"&str","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this argument is passed by value, but not consumed in the function body\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/drawing.rs:770:64\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m770\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn set_type_label_text(&mut self, rect: BlockId, text: String) {\n    \u001b[1m\u001b[94m|\u001b[0m                                                                \u001b[1m\u001b[33m^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: consider changing the type to: `&str`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value\n\n"}
{"$message_type":"diagnostic","message":"this argument is passed by value, but not consumed in the function body","code":{"code":"clippy::needless_pass_by_value","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/drawing.rs","byte_start":34112,"byte_end":34118,"line_start":803,"line_end":803,"column_start":52,"column_end":58,"is_primary":true,"text":[{"text":"    pub fn rename_pin(&mut self, pin: PinId, text: String, fit: LabelFitWidth) {","highlight_start":52,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider changing the type to","code":null,"level":"help","spans":[{"file_name":"src/widget/drawing.rs","byte_start":34112,"byte_end":34118,"line_start":803,"line_end":803,"column_start":52,"column_end":58,"is_primary":true,"text":[{"text":"    pub fn rename_pin(&mut self, pin: PinId, text: String, fit: LabelFitWidth) {","highlight_start":52,"highlight_end":58}],"label":null,"suggested_replacement":"&str","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this argument is passed by value, but not consumed in the function body\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/drawing.rs:803:52\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m803\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn rename_pin(&mut self, pin: PinId, text: String, fit: LabelFitWidth) {\n    \u001b[1m\u001b[94m|\u001b[0m                                                    \u001b[1m\u001b[33m^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: consider changing the type to: `&str`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value\n\n"}
{"$message_type":"diagnostic","message":"this argument is passed by value, but not consumed in the function body","code":{"code":"clippy::needless_pass_by_value","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/drawing.rs","byte_start":34497,"byte_end":34503,"line_start":810,"line_end":810,"column_start":53,"column_end":59,"is_primary":true,"text":[{"text":"    pub fn set_pin_tag(&mut self, pin: PinId, text: String) {","highlight_start":53,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider changing the type to","code":null,"level":"help","spans":[{"file_name":"src/widget/drawing.rs","byte_start":34497,"byte_end":34503,"line_start":810,"line_end":810,"column_start":53,"column_end":59,"is_primary":true,"text":[{"text":"    pub fn set_pin_tag(&mut self, pin: PinId, text: String) {","highlight_start":53,"highlight_end":59}],"label":null,"suggested_replacement":"&str","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this argument is passed by value, but not consumed in the function body\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/drawing.rs:810:53\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m810\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn set_pin_tag(&mut self, pin: PinId, text: String) {\n    \u001b[1m\u001b[94m|\u001b[0m                                                     \u001b[1m\u001b[33m^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: consider changing the type to: `&str`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value\n\n"}
{"$message_type":"diagnostic","message":"this argument is passed by value, but not consumed in the function body","code":{"code":"clippy::needless_pass_by_value","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/drawing.rs","byte_start":34815,"byte_end":34821,"line_start":817,"line_end":817,"column_start":52,"column_end":58,"is_primary":true,"text":[{"text":"    pub fn retype_pin(&mut self, pin: PinId, text: String, fit: LabelFitWidth) {","highlight_start":52,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider changing the type to","code":null,"level":"help","spans":[{"file_name":"src/widget/drawing.rs","byte_start":34815,"byte_end":34821,"line_start":817,"line_end":817,"column_start":52,"column_end":58,"is_primary":true,"text":[{"text":"    pub fn retype_pin(&mut self, pin: PinId, text: String, fit: LabelFitWidth) {","highlight_start":52,"highlight_end":58}],"label":null,"suggested_replacement":"&str","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this argument is passed by value, but not consumed in the function body\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/drawing.rs:817:52\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m817\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn retype_pin(&mut self, pin: PinId, text: String, fit: LabelFitWidth) {\n    \u001b[1m\u001b[94m|\u001b[0m                                                    \u001b[1m\u001b[33m^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: consider changing the type to: `&str`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value\n\n"}
{"$message_type":"diagnostic","message":"this argument is passed by value, but not consumed in the function body","code":{"code":"clippy::needless_pass_by_value","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/drawing.rs","byte_start":37613,"byte_end":37619,"line_start":874,"line_end":874,"column_start":81,"column_end":87,"is_primary":true,"text":[{"text":"    pub fn set_route_name(&mut self, route: RouteId, label: RouteLabelId, text: String) {","highlight_start":81,"highlight_end":87}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider changing the type to","code":null,"level":"help","spans":[{"file_name":"src/widget/drawing.rs","byte_start":37613,"byte_end":37619,"line_start":874,"line_end":874,"column_start":81,"column_end":87,"is_primary":true,"text":[{"text":"    pub fn set_route_name(&mut self, route: RouteId, label: RouteLabelId, text: String) {","highlight_start":81,"highlight_end":87}],"label":null,"suggested_replacement":"&str","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this argument is passed by value, but not consumed in the function body\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/drawing.rs:874:81\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m874\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn set_route_name(&mut self, route: RouteId, label: RouteLabelId, text: String) {\n    \u001b[1m\u001b[94m|\u001b[0m                                                                                 \u001b[1m\u001b[33m^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: consider changing the type to: `&str`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value\n\n"}
{"$message_type":"diagnostic","message":"very complex type used. Consider factoring parts into `type` definitions","code":{"code":"clippy::type_complexity","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/routing.rs","byte_start":37107,"byte_end":37167,"line_start":823,"line_end":823,"column_start":10,"column_end":70,"is_primary":true,"text":[{"text":"    ) -> Option<(Vec<Waypoint>, Vec<(RouteLabelId, LinearDistance)>)> {","highlight_start":10,"highlight_end":70}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#type_complexity","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::type_complexity)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: very complex type used. Consider factoring parts into `type` definitions\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/routing.rs:823:10\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m823\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     ) -> Option<(Vec<Waypoint>, Vec<(RouteLabelId, LinearDistance)>)> {\n    \u001b[1m\u001b[94m|\u001b[0m          \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#type_complexity\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::type_complexity)]` on by default\n\n"}
{"$message_type":"diagnostic","message":"this argument is passed by value, but not consumed in the function body","code":{"code":"clippy::needless_pass_by_value","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/render_path_tests.rs","byte_start":2312,"byte_end":2320,"line_start":72,"line_end":72,"column_start":19,"column_end":27,"is_primary":true,"text":[{"text":"fn accent(target: Accented, accent: u8) -> OpCodes {","highlight_start":19,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"or consider marking this type as `Copy`","code":null,"level":"help","spans":[{"file_name":"src/widget/render_path_tests.rs","byte_start":1991,"byte_end":2004,"line_start":61,"line_end":61,"column_start":1,"column_end":14,"is_primary":true,"text":[{"text":"enum Accented {","highlight_start":1,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider taking a reference instead","code":null,"level":"help","spans":[{"file_name":"src/widget/render_path_tests.rs","byte_start":2312,"byte_end":2312,"line_start":72,"line_end":72,"column_start":19,"column_end":19,"is_primary":true,"text":[{"text":"fn accent(target: Accented, accent: u8) -> OpCodes {","highlight_start":19,"highlight_end":19}],"label":null,"suggested_replacement":"&","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this argument is passed by value, but not consumed in the function body\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/render_path_tests.rs:72:19\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m72\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn accent(target: Accented, accent: u8) -> OpCodes {\n   \u001b[1m\u001b[94m|\u001b[0m                   \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: or consider marking this type as `Copy`\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/render_path_tests.rs:61:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m61\u001b[0m \u001b[1m\u001b[94m|\u001b[0m enum Accented {\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[96m^^^^^^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#needless_pass_by_value\n\u001b[1m\u001b[96mhelp\u001b[0m: consider taking a reference instead\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m72\u001b[0m \u001b[1m\u001b[94m| \u001b[0mfn accent(target: \u001b[92m&\u001b[0mAccented, accent: u8) -> OpCodes {\n   \u001b[1m\u001b[94m|\u001b[0m                   \u001b[92m+\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"this function has too many arguments (6/5)","code":{"code":"clippy::too_many_arguments","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/test_fixtures.rs","byte_start":4357,"byte_end":4491,"line_start":128,"line_end":135,"column_start":1,"column_end":13,"is_primary":true,"text":[{"text":"pub(crate) fn pin_at(","highlight_start":1,"highlight_end":22},{"text":"    byte: u8,","highlight_start":1,"highlight_end":14},{"text":"    owner: BlockId,","highlight_start":1,"highlight_end":20},{"text":"    name: &str,","highlight_start":1,"highlight_end":16},{"text":"    side: PinSide,","highlight_start":1,"highlight_end":19},{"text":"    slot: u32,","highlight_start":1,"highlight_end":15},{"text":"    body: Rect,","highlight_start":1,"highlight_end":16},{"text":") -> OpCodes {","highlight_start":1,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#too_many_arguments","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: this function has too many arguments (6/5)\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/test_fixtures.rs:128:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m128\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m pub(crate) fn pin_at(\n\u001b[1m\u001b[94m129\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     byte: u8,\n\u001b[1m\u001b[94m130\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     owner: BlockId,\n\u001b[1m\u001b[94m131\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     name: &str,\n\u001b[1m\u001b[94m...\u001b[0m   \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m134\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     body: Rect,\n\u001b[1m\u001b[94m135\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m ) -> OpCodes {\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|____________^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#too_many_arguments\n\n"}
{"$message_type":"diagnostic","message":"38 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 38 warnings emitted\u001b[0m\n\n"}
