{"$message_type":"diagnostic","message":"function `draw_pin_stub_accent` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/render/pin.rs","byte_start":6449,"byte_end":6469,"line_start":163,"line_end":163,"column_start":8,"column_end":28,"is_primary":true,"text":[{"text":"pub fn draw_pin_stub_accent(","highlight_start":8,"highlight_end":28}],"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: function `draw_pin_stub_accent` is never used\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/render/pin.rs:163:8\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m163\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn draw_pin_stub_accent(\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":"large size difference between variants","code":{"code":"clippy::large_enum_variant","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/tool.rs","byte_start":2054,"byte_end":2799,"line_start":61,"line_end":88,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"pub enum Tool {","highlight_start":1,"highlight_end":16},{"text":"    NewBlock(NewBlock),","highlight_start":1,"highlight_end":24},{"text":"    NewComment(NewComment),","highlight_start":1,"highlight_end":28},{"text":"    AddPort(AddPort),","highlight_start":1,"highlight_end":22},{"text":"    NewSymbol(NewSymbol),","highlight_start":1,"highlight_end":26},{"text":"    AddText(AddText),","highlight_start":1,"highlight_end":22},{"text":"    EditTextBox(EditTextBox),","highlight_start":1,"highlight_end":30},{"text":"    MovePin(MovePin),","highlight_start":1,"highlight_end":22},{"text":"    RenamePin(RenamePin),","highlight_start":1,"highlight_end":26},{"text":"    RetypePin(RetypePin),","highlight_start":1,"highlight_end":26},{"text":"    MoveTitle(MoveTitle),","highlight_start":1,"highlight_end":26},{"text":"    MoveBlockType(MoveBlockType),","highlight_start":1,"highlight_end":34},{"text":"    RenameTitle(RenameTitle),","highlight_start":1,"highlight_end":30},{"text":"    RenameBlockType(RenameBlockType),","highlight_start":1,"highlight_end":38},{"text":"    Route(RouteTool),","highlight_start":1,"highlight_end":22},{"text":"    MoveBlock(MoveBlock),","highlight_start":1,"highlight_end":26},{"text":"    ResizeBlock(ResizeBlock),","highlight_start":1,"highlight_end":30},{"text":"    ResizeSymbol(ResizeSymbol),","highlight_start":1,"highlight_end":32},{"text":"    EditRoute(EditRoute),","highlight_start":1,"highlight_end":26},{"text":"    AddRouteLabel(AddRouteLabel),","highlight_start":1,"highlight_end":34},{"text":"    RenameRoute(RenameRoute),","highlight_start":1,"highlight_end":30},{"text":"    MoveLabel(MoveLabel),","highlight_start":1,"highlight_end":26},{"text":"    Select(SelectTool),","highlight_start":1,"highlight_end":24},{"text":"    SelectPin(SelectPin),","highlight_start":1,"highlight_end":26},{"text":"    MultiSelect(MultiSelect),","highlight_start":1,"highlight_end":30},{"text":"    MultiPinSelect(MultiPinSelect),","highlight_start":1,"highlight_end":36},{"text":"    MoveMultiPin(MoveMultiPin),","highlight_start":1,"highlight_end":32},{"text":"}","highlight_start":1,"highlight_end":2}],"label":"the entire enum is at least 488 bytes","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tools/tool.rs","byte_start":2037,"byte_end":2053,"line_start":60,"line_end":60,"column_start":1,"column_end":17,"is_primary":false,"text":[{"text":"#[enum_dispatch]","highlight_start":1,"highlight_end":17}],"label":"the largest variant contains at least 488 bytes","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/tools/tool.rs","byte_start":2037,"byte_end":2053,"line_start":60,"line_end":60,"column_start":1,"column_end":17,"is_primary":false,"text":[{"text":"#[enum_dispatch]","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[enum_dispatch]","def_site_span":{"file_name":"/home/samitbasu/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/enum_dispatch-0.3.13/src/lib.rs","byte_start":13875,"byte_end":13984,"line_start":366,"line_end":366,"column_start":1,"column_end":110,"is_primary":false,"text":[{"text":"pub fn enum_dispatch(attr: proc_macro::TokenStream, item: proc_macro::TokenStream) -> proc_macro::TokenStream {","highlight_start":1,"highlight_end":110}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},{"file_name":"src/tools/tool.rs","byte_start":2037,"byte_end":2053,"line_start":60,"line_end":60,"column_start":1,"column_end":17,"is_primary":false,"text":[{"text":"#[enum_dispatch]","highlight_start":1,"highlight_end":17}],"label":"the second-largest variant contains at least 56 bytes","suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"src/tools/tool.rs","byte_start":2037,"byte_end":2053,"line_start":60,"line_end":60,"column_start":1,"column_end":17,"is_primary":false,"text":[{"text":"#[enum_dispatch]","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"#[enum_dispatch]","def_site_span":{"file_name":"/home/samitbasu/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/enum_dispatch-0.3.13/src/lib.rs","byte_start":13875,"byte_end":13984,"line_start":366,"line_end":366,"column_start":1,"column_end":110,"is_primary":false,"text":[{"text":"pub fn enum_dispatch(attr: proc_macro::TokenStream, item: proc_macro::TokenStream) -> proc_macro::TokenStream {","highlight_start":1,"highlight_end":110}],"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#large_enum_variant","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::large_enum_variant)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum","code":null,"level":"help","spans":[{"file_name":"src/tools/tool.rs","byte_start":2434,"byte_end":2443,"line_start":75,"line_end":75,"column_start":11,"column_end":20,"is_primary":true,"text":[{"text":"    Route(RouteTool),","highlight_start":11,"highlight_end":20}],"label":null,"suggested_replacement":"Box<RouteTool>","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: large size difference between variants\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/tool.rs:61:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m60\u001b[0m \u001b[1m\u001b[94m|\u001b[0m   #[enum_dispatch]\n   \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\n   \u001b[1m\u001b[94m|\u001b[0m   \u001b[1m\u001b[94mthe largest variant contains at least 488 bytes\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m   \u001b[1m\u001b[94mthe second-largest variant contains at least 56 bytes\u001b[0m\n\u001b[1m\u001b[94m61\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m pub enum Tool {\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     NewBlock(NewBlock),\n\u001b[1m\u001b[94m63\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     NewComment(NewComment),\n\u001b[1m\u001b[94m64\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     AddPort(AddPort),\n\u001b[1m\u001b[94m...\u001b[0m  \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m87\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     MoveMultiPin(MoveMultiPin),\n\u001b[1m\u001b[94m88\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 \u001b[1m\u001b[33mthe entire enum is at least 488 bytes\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#large_enum_variant\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::large_enum_variant)]` on by default\n\u001b[1m\u001b[96mhelp\u001b[0m: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m75\u001b[0m \u001b[91m- \u001b[0m    Route(\u001b[91mRouteTool\u001b[0m),\n\u001b[1m\u001b[94m75\u001b[0m \u001b[92m+ \u001b[0m    Route(\u001b[92mBox<RouteTool>\u001b[0m),\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"large size difference between variants","code":{"code":"clippy::large_enum_variant","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/tool.rs","byte_start":3092,"byte_end":6569,"line_start":101,"line_end":185,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"pub enum Action {","highlight_start":1,"highlight_end":18},{"text":"    SwitchTool(Tool),","highlight_start":1,"highlight_end":22},{"text":"    Delete(Deletable),","highlight_start":1,"highlight_end":23},{"text":"    /// Copy the given shapes (and the routes among them) to the clipboard.","highlight_start":1,"highlight_end":76},{"text":"    Copy(Vec<ShapeId>),","highlight_start":1,"highlight_end":24},{"text":"    /// Copy a group of child-block pins to the clipboard (as a pin payload).","highlight_start":1,"highlight_end":78},{"text":"    CopyPins(Vec<LineAnchor>),","highlight_start":1,"highlight_end":31},{"text":"    /// Copy the given shapes to the clipboard, then delete them (one undo step).","highlight_start":1,"highlight_end":82},{"text":"    Cut(Vec<ShapeId>),","highlight_start":1,"highlight_end":23},{"text":"    /// Copy a group of child-block pins to the clipboard, then delete them.","highlight_start":1,"highlight_end":77},{"text":"    CutPins(Vec<LineAnchor>),","highlight_start":1,"highlight_end":30},{"text":"    /// Set the tag-visibility of every listed pin to `hidden`.","highlight_start":1,"highlight_end":64},{"text":"    SetPinTags {","highlight_start":1,"highlight_end":17},{"text":"        pins: Vec<LineAnchor>,","highlight_start":1,"highlight_end":31},{"text":"        hidden: bool,","highlight_start":1,"highlight_end":22},{"text":"    },","highlight_start":1,"highlight_end":7},{"text":"    /// Set the tag-visibility of a selected shape's own label — a child block's","highlight_start":1,"highlight_end":81},{"text":"    /// tag, or a port's pin tag — to `hidden`.","highlight_start":1,"highlight_end":48},{"text":"    SetShapeTagHidden {","highlight_start":1,"highlight_end":24},{"text":"        shape: ShapeId,","highlight_start":1,"highlight_end":24},{"text":"        hidden: bool,","highlight_start":1,"highlight_end":22},{"text":"    },","highlight_start":1,"highlight_end":7},{"text":"    /// Flip a selected shape's pins to the opposite edge — a port's single pin,","highlight_start":1,"highlight_end":81},{"text":"    /// or all of a child block's pins — and re-route.","highlight_start":1,"highlight_end":55},{"text":"    FlipShapePins(ShapeId),","highlight_start":1,"highlight_end":28},{"text":"    /// Vertically mirror a selected child block's pins — a pin near the top moves","highlight_start":1,"highlight_end":83},{"text":"    /// to the bottom and vice versa, each keeping its East/West side — and","highlight_start":1,"highlight_end":76},{"text":"    /// re-route. Scoped to blocks (ports carry a single pin, nothing to mirror).","highlight_start":1,"highlight_end":82},{"text":"    FlipBlockVertical(RectId),","highlight_start":1,"highlight_end":31},{"text":"    /// Lock or unlock a child block: a locked block keeps its pin/port interface","highlight_start":1,"highlight_end":82},{"text":"    /// frozen (no rename/retype/tag/add/delete of pins or ports) while still","highlight_start":1,"highlight_end":78},{"text":"    /// allowing whole-block moves, deletes, resizes, and aesthetic edits.","highlight_start":1,"highlight_end":75},{"text":"    SetBlockLocked {","highlight_start":1,"highlight_end":21},{"text":"        block: RectId,","highlight_start":1,"highlight_end":23},{"text":"        locked: bool,","highlight_start":1,"highlight_end":22},{"text":"    },","highlight_start":1,"highlight_end":7},{"text":"    /// Move a selected symbol to the given paint layer (foreground/background).","highlight_start":1,"highlight_end":81},{"text":"    SetSymbolLayer {","highlight_start":1,"highlight_end":21},{"text":"        symbol: SymbolId,","highlight_start":1,"highlight_end":26},{"text":"        layer: SymbolLayer,","highlight_start":1,"highlight_end":28},{"text":"    },","highlight_start":1,"highlight_end":7},{"text":"    /// Paste a clipboard JSON payload into the current level.","highlight_start":1,"highlight_end":63},{"text":"    Paste(String),","highlight_start":1,"highlight_end":19},{"text":"    ExpandBlock(RectId),","highlight_start":1,"highlight_end":25},{"text":"    /// Open the accent-color (role) picker for the selected block, port, route,","highlight_start":1,"highlight_end":81},{"text":"    /// comment, or text box. The popup anchors itself above the selection","highlight_start":1,"highlight_end":75},{"text":"    /// overlay, so no screen position is carried here.","highlight_start":1,"highlight_end":56},{"text":"    OpenRolePicker {","highlight_start":1,"highlight_end":21},{"text":"        target: RoleTarget,","highlight_start":1,"highlight_end":28},{"text":"    },","highlight_start":1,"highlight_end":7},{"text":"    /// Open the pin-type (I/O style) picker for the current pin/port selection.","highlight_start":1,"highlight_end":81},{"text":"    /// Carries the anchors of every pin the picker will retype. Like","highlight_start":1,"highlight_end":70},{"text":"    /// [`Action::OpenRolePicker`], the popup anchors itself above the selection","highlight_start":1,"highlight_end":81},{"text":"    /// overlay, so no screen position is carried here.","highlight_start":1,"highlight_end":56},{"text":"    OpenPinTypePicker {","highlight_start":1,"highlight_end":24},{"text":"        pins: Vec<LineAnchor>,","highlight_start":1,"highlight_end":31},{"text":"    },","highlight_start":1,"highlight_end":7},{"text":"    GoUp,","highlight_start":1,"highlight_end":10},{"text":"    GoToDepth(usize),","highlight_start":1,"highlight_end":22},{"text":"    /// Select a block chosen in the navigation dialog: replace the selection (or,","highlight_start":1,"highlight_end":83},{"text":"    /// with `extend`, toggle it into the current selection like a canvas","highlight_start":1,"highlight_end":74},{"text":"    /// shift-click), then pan/zoom the canvas to frame that block.","highlight_start":1,"highlight_end":68},{"text":"    NavSelect {","highlight_start":1,"highlight_end":16},{"text":"        block: RectId,","highlight_start":1,"highlight_end":23},{"text":"        extend: bool,","highlight_start":1,"highlight_end":22},{"text":"    },","highlight_start":1,"highlight_end":7},{"text":"    /// Step back / forward through the navigation (path) history — a path-only","highlight_start":1,"highlight_end":80},{"text":"    /// undo/redo, independent of the document undo stack.","highlight_start":1,"highlight_end":59},{"text":"    PathBack,","highlight_start":1,"highlight_end":14},{"text":"    PathForward,","highlight_start":1,"highlight_end":17},{"text":"    /// Restore the previous document/navigation snapshot.","highlight_start":1,"highlight_end":59},{"text":"    Undo,","highlight_start":1,"highlight_end":10},{"text":"    /// Re-apply a snapshot undone by [`Action::Undo`].","highlight_start":1,"highlight_end":56},{"text":"    Redo,","highlight_start":1,"highlight_end":10},{"text":"    /// Arrow-key move of the current selection: shapes shift by `(dx, dy)` grid","highlight_start":1,"highlight_end":81},{"text":"    /// cells; a pin selection shifts by `dy` slots (`dx` ignored).","highlight_start":1,"highlight_end":68},{"text":"    Nudge {","highlight_start":1,"highlight_end":12},{"text":"        dx: i32,","highlight_start":1,"highlight_end":17},{"text":"        dy: i32,","highlight_start":1,"highlight_end":17},{"text":"    },","highlight_start":1,"highlight_end":7},{"text":"    /// Reset zoom/pan so the whole document fits in the viewport.","highlight_start":1,"highlight_end":67},{"text":"    ResetView,","highlight_start":1,"highlight_end":15},{"text":"    /// Export the current level as SVG and copy it to the clipboard.","highlight_start":1,"highlight_end":70},{"text":"    ExportSvg,","highlight_start":1,"highlight_end":15},{"text":"}","highlight_start":1,"highlight_end":2}],"label":"the entire enum is at least 488 bytes","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tools/tool.rs","byte_start":3114,"byte_end":3130,"line_start":102,"line_end":102,"column_start":5,"column_end":21,"is_primary":false,"text":[{"text":"    SwitchTool(Tool),","highlight_start":5,"highlight_end":21}],"label":"the largest variant contains at least 488 bytes","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tools/tool.rs","byte_start":3136,"byte_end":3153,"line_start":103,"line_end":103,"column_start":5,"column_end":22,"is_primary":false,"text":[{"text":"    Delete(Deletable),","highlight_start":5,"highlight_end":22}],"label":"the second-largest variant contains at least 32 bytes","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#large_enum_variant","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum","code":null,"level":"help","spans":[{"file_name":"src/tools/tool.rs","byte_start":3125,"byte_end":3129,"line_start":102,"line_end":102,"column_start":16,"column_end":20,"is_primary":true,"text":[{"text":"    SwitchTool(Tool),","highlight_start":16,"highlight_end":20}],"label":null,"suggested_replacement":"Box<Tool>","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: large size difference between variants\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/tools/tool.rs:101:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m101\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m/\u001b[0m pub enum Action {\n\u001b[1m\u001b[94m102\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     SwitchTool(Tool),\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     \u001b[1m\u001b[94m----------------\u001b[0m \u001b[1m\u001b[94mthe largest variant contains at least 488 bytes\u001b[0m\n\u001b[1m\u001b[94m103\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     Delete(Deletable),\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     \u001b[1m\u001b[94m-----------------\u001b[0m \u001b[1m\u001b[94mthe second-largest variant contains at least 32 bytes\u001b[0m\n\u001b[1m\u001b[94m104\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     /// Copy the given shapes (and the routes among them) to the clipboard.\n\u001b[1m\u001b[94m...\u001b[0m   \u001b[1m\u001b[33m|\u001b[0m\n\u001b[1m\u001b[94m184\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m|\u001b[0m     ExportSvg,\n\u001b[1m\u001b[94m185\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 \u001b[1m\u001b[33mthe entire enum is at least 488 bytes\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#large_enum_variant\n\u001b[1m\u001b[96mhelp\u001b[0m: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m102\u001b[0m \u001b[91m- \u001b[0m    SwitchTool(\u001b[91mTool\u001b[0m),\n\u001b[1m\u001b[94m102\u001b[0m \u001b[92m+ \u001b[0m    SwitchTool(\u001b[92mBox<Tool>\u001b[0m),\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"usage of an `Arc` that is not `Send` and `Sync`","code":{"code":"clippy::arc_with_non_send_sync","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/edit_text_box.rs","byte_start":1578,"byte_end":1617,"line_start":45,"line_end":45,"column_start":21,"column_end":60,"is_primary":true,"text":[{"text":"            buffer: Arc::new(RefCell::new(tb.text.clone())),","highlight_start":21,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if the `Arc` will not be used across threads replace it with an `Rc`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`","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#arc_with_non_send_sync","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::arc_with_non_send_sync)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: usage of an `Arc` that is not `Send` and `Sync`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/edit_text_box.rs:45:21\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m45\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             buffer: Arc::new(RefCell::new(tb.text.clone())),\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: `Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if the `Arc` will not be used across threads replace it with an `Rc`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`\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#arc_with_non_send_sync\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::arc_with_non_send_sync)]` on by default\n\n"}
{"$message_type":"diagnostic","message":"usage of an `Arc` that is not `Send` and `Sync`","code":{"code":"clippy::arc_with_non_send_sync","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/rename_block_type.rs","byte_start":1669,"byte_end":1697,"line_start":52,"line_end":52,"column_start":20,"column_end":48,"is_primary":true,"text":[{"text":"            label: Arc::new(RefCell::new(text)),","highlight_start":20,"highlight_end":48}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if the `Arc` will not be used across threads replace it with an `Rc`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`","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#arc_with_non_send_sync","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: usage of an `Arc` that is not `Send` and `Sync`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/rename_block_type.rs:52:20\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m52\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             label: Arc::new(RefCell::new(text)),\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: `Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if the `Arc` will not be used across threads replace it with an `Rc`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`\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#arc_with_non_send_sync\n\n"}
{"$message_type":"diagnostic","message":"usage of an `Arc` that is not `Send` and `Sync`","code":{"code":"clippy::arc_with_non_send_sync","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/rename_pin.rs","byte_start":3555,"byte_end":3586,"line_start":99,"line_end":99,"column_start":20,"column_end":51,"is_primary":true,"text":[{"text":"            label: Arc::new(RefCell::new(initial)),","highlight_start":20,"highlight_end":51}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if the `Arc` will not be used across threads replace it with an `Rc`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`","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#arc_with_non_send_sync","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: usage of an `Arc` that is not `Send` and `Sync`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/rename_pin.rs:99:20\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m99\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             label: Arc::new(RefCell::new(initial)),\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: `Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if the `Arc` will not be used across threads replace it with an `Rc`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`\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#arc_with_non_send_sync\n\n"}
{"$message_type":"diagnostic","message":"usage of an `Arc` that is not `Send` and `Sync`","code":{"code":"clippy::arc_with_non_send_sync","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/rename_route.rs","byte_start":1726,"byte_end":1754,"line_start":55,"line_end":55,"column_start":26,"column_end":54,"is_primary":true,"text":[{"text":"            text_buffer: Arc::new(RefCell::new(name)),","highlight_start":26,"highlight_end":54}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if the `Arc` will not be used across threads replace it with an `Rc`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`","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#arc_with_non_send_sync","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: usage of an `Arc` that is not `Send` and `Sync`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/rename_route.rs:55:26\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m55\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             text_buffer: Arc::new(RefCell::new(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[0m\u001b[1mnote\u001b[0m: `Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if the `Arc` will not be used across threads replace it with an `Rc`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`\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#arc_with_non_send_sync\n\n"}
{"$message_type":"diagnostic","message":"usage of an `Arc` that is not `Send` and `Sync`","code":{"code":"clippy::arc_with_non_send_sync","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/rename_title.rs","byte_start":1400,"byte_end":1442,"line_start":53,"line_end":53,"column_start":20,"column_end":62,"is_primary":true,"text":[{"text":"            label: Arc::new(RefCell::new(title.name.clone())),","highlight_start":20,"highlight_end":62}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if the `Arc` will not be used across threads replace it with an `Rc`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`","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#arc_with_non_send_sync","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: usage of an `Arc` that is not `Send` and `Sync`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/rename_title.rs:53:20\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m53\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             label: Arc::new(RefCell::new(title.name.clone())),\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: `Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if the `Arc` will not be used across threads replace it with an `Rc`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`\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#arc_with_non_send_sync\n\n"}
{"$message_type":"diagnostic","message":"usage of an `Arc` that is not `Send` and `Sync`","code":{"code":"clippy::arc_with_non_send_sync","explanation":null},"level":"warning","spans":[{"file_name":"src/tools/retype_pin.rs","byte_start":1851,"byte_end":1897,"line_start":56,"line_end":56,"column_start":20,"column_end":66,"is_primary":true,"text":[{"text":"            label: Arc::new(RefCell::new(pin.type_label.clone())),","highlight_start":20,"highlight_end":66}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if the `Arc` will not be used across threads replace it with an `Rc`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`","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#arc_with_non_send_sync","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: usage of an `Arc` that is not `Send` and `Sync`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/retype_pin.rs:56:20\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m56\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             label: Arc::new(RefCell::new(pin.type_label.clone())),\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: `Arc<RefCell<String>>` is not `Send` and `Sync` as `RefCell<String>` is not `Sync`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if the `Arc` will not be used across threads replace it with an `Rc`\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: otherwise make `RefCell<String>` `Send` and `Sync` or consider a wrapper type such as `Mutex`\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#arc_with_non_send_sync\n\n"}
{"$message_type":"diagnostic","message":"9 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 9 warnings emitted\u001b[0m\n\n"}
