{"$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":"field assignment outside of initializer for an instance created with Default::default()","code":{"code":"clippy::field_reassign_with_default","explanation":null},"level":"warning","spans":[{"file_name":"src/render/layout.rs","byte_start":6875,"byte_end":6889,"line_start":169,"line_end":169,"column_start":13,"column_end":27,"is_primary":true,"text":[{"text":"            l.side = side;","highlight_start":13,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider initializing the variable with `document_ng::label::BlockLabel { side: side, ..Default::default() }` and removing relevant reassignments","code":null,"level":"note","spans":[{"file_name":"src/render/layout.rs","byte_start":6828,"byte_end":6862,"line_start":168,"line_end":168,"column_start":13,"column_end":47,"is_primary":true,"text":[{"text":"            let mut l = BlockLabel::default();","highlight_start":13,"highlight_end":47}],"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#field_reassign_with_default","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::field_reassign_with_default)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: field assignment outside of initializer for an instance created with Default::default()\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/render/layout.rs:169:13\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m169\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             l.side = side;\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: consider initializing the variable with `document_ng::label::BlockLabel { side: side, ..Default::default() }` and removing relevant reassignments\n   \u001b[1m\u001b[94m--> \u001b[0msrc/render/layout.rs:168:13\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m168\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             let mut l = BlockLabel::default();\n    \u001b[1m\u001b[94m|\u001b[0m             \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\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#field_reassign_with_default\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::field_reassign_with_default)]` 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/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":"items after a test module","code":{"code":"clippy::items_after_test_module","explanation":null},"level":"warning","spans":[{"file_name":"src/widget/document_ext.rs","byte_start":3970,"byte_end":3979,"line_start":93,"line_end":93,"column_start":1,"column_end":10,"is_primary":true,"text":[{"text":"mod tests {","highlight_start":1,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/widget/document_ext.rs","byte_start":4915,"byte_end":4977,"line_start":126,"line_end":126,"column_start":1,"column_end":63,"is_primary":true,"text":[{"text":"fn child_boundary_rect(doc: &Document, id: RectId) -> GridRect {","highlight_start":1,"highlight_end":63}],"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#items_after_test_module","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`#[warn(clippy::items_after_test_module)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"move the items to before the test module was defined","code":null,"level":"help","spans":[{"file_name":"src/widget/document_ext.rs","byte_start":3955,"byte_end":3955,"line_start":90,"line_end":90,"column_start":2,"column_end":2,"is_primary":true,"text":[{"text":"}","highlight_start":2,"highlight_end":2}],"label":null,"suggested_replacement":"\n\n/// A sensible boundary rect for block `id` when shown as a child: its content\n/// bounds, grown to a minimum and made tall enough that every boundary pin fits\n/// inside. Falls back to a default box for an empty block.\nfn child_boundary_rect(doc: &Document, id: RectId) -> GridRect {\n    let base = doc\n        .content_bounds(id)\n        .map(GridRect::from_rect_snapped)\n        .unwrap_or(GridRect::new(GridPos::new(0, 0), GridSize::new(20, 20)));\n    let max_off = doc\n        .blocks\n        .get(&id)\n        .map(|b| b.pins.values().map(|p| p.offset).max().unwrap_or(0))\n        .unwrap_or(0);\n    let min_h = 2 * (max_off + 2); // one slot of margin below the lowest pin\n    GridRect::new(\n        base.min,\n        GridSize::new(\n            base.size.w.max(10),\n            snap_block_height_cells(base.size.h.max(min_h).max(10)),\n        ),\n    )\n}","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/widget/document_ext.rs","byte_start":4693,"byte_end":5555,"line_start":121,"line_end":144,"column_start":2,"column_end":2,"is_primary":true,"text":[{"text":"}","highlight_start":2,"highlight_end":2},{"text":"","highlight_start":1,"highlight_end":1},{"text":"/// A sensible boundary rect for block `id` when shown as a child: its content","highlight_start":1,"highlight_end":79},{"text":"/// bounds, grown to a minimum and made tall enough that every boundary pin fits","highlight_start":1,"highlight_end":81},{"text":"/// inside. Falls back to a default box for an empty block.","highlight_start":1,"highlight_end":60},{"text":"fn child_boundary_rect(doc: &Document, id: RectId) -> GridRect {","highlight_start":1,"highlight_end":65},{"text":"    let base = doc","highlight_start":1,"highlight_end":19},{"text":"        .content_bounds(id)","highlight_start":1,"highlight_end":28},{"text":"        .map(GridRect::from_rect_snapped)","highlight_start":1,"highlight_end":42},{"text":"        .unwrap_or(GridRect::new(GridPos::new(0, 0), GridSize::new(20, 20)));","highlight_start":1,"highlight_end":78},{"text":"    let max_off = doc","highlight_start":1,"highlight_end":22},{"text":"        .blocks","highlight_start":1,"highlight_end":16},{"text":"        .get(&id)","highlight_start":1,"highlight_end":18},{"text":"        .map(|b| b.pins.values().map(|p| p.offset).max().unwrap_or(0))","highlight_start":1,"highlight_end":71},{"text":"        .unwrap_or(0);","highlight_start":1,"highlight_end":23},{"text":"    let min_h = 2 * (max_off + 2); // one slot of margin below the lowest pin","highlight_start":1,"highlight_end":78},{"text":"    GridRect::new(","highlight_start":1,"highlight_end":19},{"text":"        base.min,","highlight_start":1,"highlight_end":18},{"text":"        GridSize::new(","highlight_start":1,"highlight_end":23},{"text":"            base.size.w.max(10),","highlight_start":1,"highlight_end":33},{"text":"            snap_block_height_cells(base.size.h.max(min_h).max(10)),","highlight_start":1,"highlight_end":69},{"text":"        ),","highlight_start":1,"highlight_end":11},{"text":"    )","highlight_start":1,"highlight_end":6},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: items after a test module\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/document_ext.rs:93:1\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 93\u001b[0m \u001b[1m\u001b[94m|\u001b[0m mod tests {\n    \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m126\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn child_boundary_rect(doc: &Document, id: RectId) -> GridRect {\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#items_after_test_module\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(clippy::items_after_test_module)]` on by default\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: move the items to before the test module was defined\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"}
