{"$message_type":"diagnostic","message":"unresolved imports `crate::edit::lower::px_rect`, `crate::edit::lower::screen_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/edit/assets.rs","byte_start":764,"byte_end":771,"line_start":20,"line_end":20,"column_start":26,"column_end":33,"is_primary":true,"text":[{"text":"use crate::edit::lower::{px_rect, screen_rect};","highlight_start":26,"highlight_end":33}],"label":"no `px_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/assets.rs","byte_start":773,"byte_end":784,"line_start":20,"line_end":20,"column_start":35,"column_end":46,"is_primary":true,"text":[{"text":"use crate::edit::lower::{px_rect, screen_rect};","highlight_start":35,"highlight_end":46}],"label":"no `screen_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/edit/assets.rs","byte_start":773,"byte_end":784,"line_start":20,"line_end":20,"column_start":35,"column_end":46,"is_primary":true,"text":[{"text":"use crate::edit::lower::{px_rect, screen_rect};","highlight_start":35,"highlight_end":46}],"label":null,"suggested_replacement":"ScreenRect","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit::lower::px_rect`, `crate::edit::lower::screen_rect`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/edit/assets.rs:20:26\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m20\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::lower::{px_rect, screen_rect};\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91m^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `screen_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91m|\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91mno `px_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m20\u001b[0m \u001b[91m- \u001b[0muse crate::edit::lower::{px_rect, \u001b[91mscreen_rect\u001b[0m};\n\u001b[1m\u001b[94m20\u001b[0m \u001b[92m+ \u001b[0muse crate::edit::lower::{px_rect, \u001b[92mScreenRect\u001b[0m};\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::edit::lower::artwork_rect`, `crate::edit::lower::grid_point`, `crate::edit::lower::px_vec`, `crate::edit::lower::screen_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/edit/clipboard.rs","byte_start":1339,"byte_end":1351,"line_start":30,"line_end":30,"column_start":26,"column_end":38,"is_primary":true,"text":[{"text":"use crate::edit::lower::{artwork_rect, grid_point, px_vec, screen_rect};","highlight_start":26,"highlight_end":38}],"label":"no `artwork_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/clipboard.rs","byte_start":1353,"byte_end":1363,"line_start":30,"line_end":30,"column_start":40,"column_end":50,"is_primary":true,"text":[{"text":"use crate::edit::lower::{artwork_rect, grid_point, px_vec, screen_rect};","highlight_start":40,"highlight_end":50}],"label":"no `grid_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/clipboard.rs","byte_start":1365,"byte_end":1371,"line_start":30,"line_end":30,"column_start":52,"column_end":58,"is_primary":true,"text":[{"text":"use crate::edit::lower::{artwork_rect, grid_point, px_vec, screen_rect};","highlight_start":52,"highlight_end":58}],"label":"no `px_vec` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/clipboard.rs","byte_start":1373,"byte_end":1384,"line_start":30,"line_end":30,"column_start":60,"column_end":71,"is_primary":true,"text":[{"text":"use crate::edit::lower::{artwork_rect, grid_point, px_vec, screen_rect};","highlight_start":60,"highlight_end":71}],"label":"no `screen_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/edit/clipboard.rs","byte_start":1353,"byte_end":1363,"line_start":30,"line_end":30,"column_start":40,"column_end":50,"is_primary":true,"text":[{"text":"use crate::edit::lower::{artwork_rect, grid_point, px_vec, screen_rect};","highlight_start":40,"highlight_end":50}],"label":null,"suggested_replacement":"GridPoint","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/edit/clipboard.rs","byte_start":1373,"byte_end":1384,"line_start":30,"line_end":30,"column_start":60,"column_end":71,"is_primary":true,"text":[{"text":"use crate::edit::lower::{artwork_rect, grid_point, px_vec, screen_rect};","highlight_start":60,"highlight_end":71}],"label":null,"suggested_replacement":"ScreenRect","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit::lower::artwork_rect`, `crate::edit::lower::grid_point`, `crate::edit::lower::px_vec`, `crate::edit::lower::screen_rect`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/edit/clipboard.rs:30:26\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m30\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::lower::{artwork_rect, grid_point, px_vec, screen_rect};\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `screen_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91m|\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91mno `px_vec` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91mno `grid_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91mno `artwork_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m30\u001b[0m \u001b[91m- \u001b[0muse crate::edit::lower::{artwork_rect, \u001b[91mgrid_point\u001b[0m, px_vec, screen_rect};\n\u001b[1m\u001b[94m30\u001b[0m \u001b[92m+ \u001b[0muse crate::edit::lower::{artwork_rect, \u001b[92mGridPoint\u001b[0m, px_vec, screen_rect};\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m30\u001b[0m \u001b[91m- \u001b[0muse crate::edit::lower::{artwork_rect, grid_point, px_vec, \u001b[91mscreen_rect\u001b[0m};\n\u001b[1m\u001b[94m30\u001b[0m \u001b[92m+ \u001b[0muse crate::edit::lower::{artwork_rect, grid_point, px_vec, \u001b[92mScreenRect\u001b[0m};\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::edit::lower::grid_point`, `crate::edit::lower::grid_rect`, `crate::edit::lower::px_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/edit/create.rs","byte_start":803,"byte_end":813,"line_start":19,"line_end":19,"column_start":38,"column_end":48,"is_primary":true,"text":[{"text":"use crate::edit::lower::{block_rect, grid_point, grid_rect, px_rect, slot_capacity};","highlight_start":38,"highlight_end":48}],"label":"no `grid_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/create.rs","byte_start":815,"byte_end":824,"line_start":19,"line_end":19,"column_start":50,"column_end":59,"is_primary":true,"text":[{"text":"use crate::edit::lower::{block_rect, grid_point, grid_rect, px_rect, slot_capacity};","highlight_start":50,"highlight_end":59}],"label":"no `grid_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/create.rs","byte_start":826,"byte_end":833,"line_start":19,"line_end":19,"column_start":61,"column_end":68,"is_primary":true,"text":[{"text":"use crate::edit::lower::{block_rect, grid_point, grid_rect, px_rect, slot_capacity};","highlight_start":61,"highlight_end":68}],"label":"no `px_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/edit/create.rs","byte_start":803,"byte_end":813,"line_start":19,"line_end":19,"column_start":38,"column_end":48,"is_primary":true,"text":[{"text":"use crate::edit::lower::{block_rect, grid_point, grid_rect, px_rect, slot_capacity};","highlight_start":38,"highlight_end":48}],"label":null,"suggested_replacement":"GridPoint","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/edit/create.rs","byte_start":815,"byte_end":824,"line_start":19,"line_end":19,"column_start":50,"column_end":59,"is_primary":true,"text":[{"text":"use crate::edit::lower::{block_rect, grid_point, grid_rect, px_rect, slot_capacity};","highlight_start":50,"highlight_end":59}],"label":null,"suggested_replacement":"GridRect","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit::lower::grid_point`, `crate::edit::lower::grid_rect`, `crate::edit::lower::px_rect`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/edit/create.rs:19:38\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::lower::{block_rect, grid_point, grid_rect, px_rect, slot_capacity};\n   \u001b[1m\u001b[94m|\u001b[0m                                      \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                                      \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91m|\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                                      \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91mno `grid_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                                      \u001b[1m\u001b[91mno `grid_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[91m- \u001b[0muse crate::edit::lower::{block_rect, \u001b[91mgrid_point\u001b[0m, grid_rect, px_rect, slot_capacity};\n\u001b[1m\u001b[94m19\u001b[0m \u001b[92m+ \u001b[0muse crate::edit::lower::{block_rect, \u001b[92mGridPoint\u001b[0m, grid_rect, px_rect, slot_capacity};\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[91m- \u001b[0muse crate::edit::lower::{block_rect, grid_point, \u001b[91mgrid_rect\u001b[0m, px_rect, slot_capacity};\n\u001b[1m\u001b[94m19\u001b[0m \u001b[92m+ \u001b[0muse crate::edit::lower::{block_rect, grid_point, \u001b[92mGridRect\u001b[0m, px_rect, slot_capacity};\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::edit::lower::artwork_rect`, `crate::edit::lower::grid_point`, `crate::edit::lower::grid_rect`, `crate::edit::lower::grid_vec`, `crate::edit::lower::px_rect`, `crate::edit::lower::px_vec`, `crate::edit::lower::screen_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/edit/geometry.rs","byte_start":1203,"byte_end":1215,"line_start":29,"line_end":29,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":5,"highlight_end":17}],"label":"no `artwork_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/geometry.rs","byte_start":1217,"byte_end":1227,"line_start":29,"line_end":29,"column_start":19,"column_end":29,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":19,"highlight_end":29}],"label":"no `grid_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/geometry.rs","byte_start":1229,"byte_end":1238,"line_start":29,"line_end":29,"column_start":31,"column_end":40,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":31,"highlight_end":40}],"label":"no `grid_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/geometry.rs","byte_start":1240,"byte_end":1248,"line_start":29,"line_end":29,"column_start":42,"column_end":50,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":42,"highlight_end":50}],"label":"no `grid_vec` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/geometry.rs","byte_start":1250,"byte_end":1257,"line_start":29,"line_end":29,"column_start":52,"column_end":59,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":52,"highlight_end":59}],"label":"no `px_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/geometry.rs","byte_start":1259,"byte_end":1265,"line_start":29,"line_end":29,"column_start":61,"column_end":67,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":61,"highlight_end":67}],"label":"no `px_vec` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/geometry.rs","byte_start":1267,"byte_end":1278,"line_start":29,"line_end":29,"column_start":69,"column_end":80,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":69,"highlight_end":80}],"label":"no `screen_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/edit/geometry.rs","byte_start":1217,"byte_end":1227,"line_start":29,"line_end":29,"column_start":19,"column_end":29,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":19,"highlight_end":29}],"label":null,"suggested_replacement":"GridPoint","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/edit/geometry.rs","byte_start":1229,"byte_end":1238,"line_start":29,"line_end":29,"column_start":31,"column_end":40,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":31,"highlight_end":40}],"label":null,"suggested_replacement":"GridRect","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/edit/geometry.rs","byte_start":1267,"byte_end":1278,"line_start":29,"line_end":29,"column_start":69,"column_end":80,"is_primary":true,"text":[{"text":"    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,","highlight_start":69,"highlight_end":80}],"label":null,"suggested_replacement":"ScreenRect","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit::lower::artwork_rect`, `crate::edit::lower::grid_point`, `crate::edit::lower::grid_rect`, `crate::edit::lower::grid_vec`, `crate::edit::lower::px_rect`, `crate::edit::lower::px_vec`, `crate::edit::lower::screen_rect`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/edit/geometry.rs:29:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `screen_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91m|\u001b[0m          \u001b[1m\u001b[91m|\u001b[0m         \u001b[1m\u001b[91m|\u001b[0m        \u001b[1m\u001b[91m|\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91m|\u001b[0m          \u001b[1m\u001b[91m|\u001b[0m         \u001b[1m\u001b[91m|\u001b[0m        \u001b[1m\u001b[91mno `px_vec` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91m|\u001b[0m          \u001b[1m\u001b[91m|\u001b[0m         \u001b[1m\u001b[91mno `px_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91m|\u001b[0m          \u001b[1m\u001b[91mno `grid_vec` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91m|\u001b[0m           \u001b[1m\u001b[91mno `grid_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m|\u001b[0m             \u001b[1m\u001b[91mno `grid_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91mno `artwork_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[91m- \u001b[0m    artwork_rect, \u001b[91mgrid_point\u001b[0m, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,\n\u001b[1m\u001b[94m29\u001b[0m \u001b[92m+ \u001b[0m    artwork_rect, \u001b[92mGridPoint\u001b[0m, grid_rect, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[91m- \u001b[0m    artwork_rect, grid_point, \u001b[91mgrid_rect\u001b[0m, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,\n\u001b[1m\u001b[94m29\u001b[0m \u001b[92m+ \u001b[0m    artwork_rect, grid_point, \u001b[92mGridRect\u001b[0m, grid_vec, px_rect, px_vec, screen_rect, slot_capacity,\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[91m- \u001b[0m    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, \u001b[91mscreen_rect\u001b[0m, slot_capacity,\n\u001b[1m\u001b[94m29\u001b[0m \u001b[92m+ \u001b[0m    artwork_rect, grid_point, grid_rect, grid_vec, px_rect, px_vec, \u001b[92mScreenRect\u001b[0m, slot_capacity,\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/presentation/route.rs","byte_start":423,"byte_end":451,"line_start":10,"line_end":10,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":"use crate::edit::lower::px_point;","highlight_start":5,"highlight_end":33}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_point`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/presentation/route.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::lower::px_point;\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::grid_size_ceil`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/render/text_box.rs","byte_start":350,"byte_end":377,"line_start":10,"line_end":10,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    edit::lower::grid_size_ceil,","highlight_start":5,"highlight_end":32}],"label":"no `grid_size_ceil` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/render/text_box.rs","byte_start":363,"byte_end":377,"line_start":10,"line_end":10,"column_start":18,"column_end":32,"is_primary":true,"text":[{"text":"    edit::lower::grid_size_ceil,","highlight_start":18,"highlight_end":32}],"label":null,"suggested_replacement":"grid_u32_ceil","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::grid_size_ceil`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/render/text_box.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::lower::grid_size_ceil,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `grid_size_ceil` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[91m- \u001b[0m    edit::lower::\u001b[91mgrid_size_ceil\u001b[0m,\n\u001b[1m\u001b[94m10\u001b[0m \u001b[92m+ \u001b[0m    edit::lower::\u001b[92mgrid_u32_ceil\u001b[0m,\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::grid_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/render/block.rs","byte_start":46,"byte_end":62,"line_start":3,"line_end":3,"column_start":12,"column_end":28,"is_primary":true,"text":[{"text":"    edit::{lower::grid_rect, naming::InterfaceLock},","highlight_start":12,"highlight_end":28}],"label":"no `grid_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/render/block.rs","byte_start":53,"byte_end":62,"line_start":3,"line_end":3,"column_start":19,"column_end":28,"is_primary":true,"text":[{"text":"    edit::{lower::grid_rect, naming::InterfaceLock},","highlight_start":19,"highlight_end":28}],"label":null,"suggested_replacement":"GridRect","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::grid_rect`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/render/block.rs:3:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::{lower::grid_rect, naming::InterfaceLock},\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `grid_rect` in `edit::lower`\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[91m- \u001b[0m    edit::{lower::\u001b[91mgrid_rect\u001b[0m, naming::InterfaceLock},\n\u001b[1m\u001b[94m3\u001b[0m \u001b[92m+ \u001b[0m    edit::{lower::\u001b[92mGridRect\u001b[0m, naming::InterfaceLock},\n  \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/render/path.rs","byte_start":39,"byte_end":60,"line_start":3,"line_end":3,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":"    edit::lower::px_point,","highlight_start":5,"highlight_end":26}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_point`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/render/path.rs:3:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::lower::px_point,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/render/route.rs","byte_start":163,"byte_end":171,"line_start":7,"line_end":7,"column_start":35,"column_end":43,"is_primary":true,"text":[{"text":"        lower::{accent_from_role, px_point},","highlight_start":35,"highlight_end":43}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_point`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/render/route.rs:7:35\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         lower::{accent_from_role, px_point},\n  \u001b[1m\u001b[94m|\u001b[0m                                   \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/shape/area.rs","byte_start":228,"byte_end":235,"line_start":10,"line_end":10,"column_start":35,"column_end":42,"is_primary":true,"text":[{"text":"        lower::{accent_from_role, px_rect, shape_label},","highlight_start":35,"highlight_end":42}],"label":"no `px_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_rect`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/shape/area.rs:10:35\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         lower::{accent_from_role, px_rect, shape_label},\n   \u001b[1m\u001b[94m|\u001b[0m                                   \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_rect` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/shape/block.rs","byte_start":212,"byte_end":219,"line_start":9,"line_end":9,"column_start":35,"column_end":42,"is_primary":true,"text":[{"text":"        lower::{accent_from_role, px_rect, shape_label},","highlight_start":35,"highlight_end":42}],"label":"no `px_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_rect`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shape/block.rs:9:35\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         lower::{accent_from_role, px_rect, shape_label},\n  \u001b[1m\u001b[94m|\u001b[0m                                   \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_rect` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/shape/port.rs","byte_start":237,"byte_end":244,"line_start":9,"line_end":9,"column_start":37,"column_end":44,"is_primary":true,"text":[{"text":"    edit::lower::{accent_from_role, px_rect},","highlight_start":37,"highlight_end":44}],"label":"no `px_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_rect`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shape/port.rs:9:37\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::lower::{accent_from_role, px_rect},\n  \u001b[1m\u001b[94m|\u001b[0m                                     \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_rect` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/shape/text_box.rs","byte_start":200,"byte_end":208,"line_start":8,"line_end":8,"column_start":37,"column_end":45,"is_primary":true,"text":[{"text":"    edit::lower::{accent_from_role, px_point},","highlight_start":37,"highlight_end":45}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_point`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/shape/text_box.rs:8:37\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::lower::{accent_from_role, px_point},\n  \u001b[1m\u001b[94m|\u001b[0m                                     \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::edit::lower::grid_point`, `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/tools/edit_route.rs","byte_start":347,"byte_end":357,"line_start":11,"line_end":11,"column_start":19,"column_end":29,"is_primary":true,"text":[{"text":"    edit::lower::{grid_point, px_point},","highlight_start":19,"highlight_end":29}],"label":"no `grid_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tools/edit_route.rs","byte_start":359,"byte_end":367,"line_start":11,"line_end":11,"column_start":31,"column_end":39,"is_primary":true,"text":[{"text":"    edit::lower::{grid_point, px_point},","highlight_start":31,"highlight_end":39}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/tools/edit_route.rs","byte_start":347,"byte_end":357,"line_start":11,"line_end":11,"column_start":19,"column_end":29,"is_primary":true,"text":[{"text":"    edit::lower::{grid_point, px_point},","highlight_start":19,"highlight_end":29}],"label":null,"suggested_replacement":"GridPoint","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit::lower::grid_point`, `crate::edit::lower::px_point`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/edit_route.rs:11:19\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::lower::{grid_point, px_point},\n   \u001b[1m\u001b[94m|\u001b[0m                   \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                   \u001b[1m\u001b[91m|\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                   \u001b[1m\u001b[91mno `grid_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[91m- \u001b[0m    edit::lower::{\u001b[91mgrid_point\u001b[0m, px_point},\n\u001b[1m\u001b[94m11\u001b[0m \u001b[92m+ \u001b[0m    edit::lower::{\u001b[92mGridPoint\u001b[0m, px_point},\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::artwork_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/tools/resize_block.rs","byte_start":171,"byte_end":196,"line_start":8,"line_end":8,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    edit::lower::artwork_rect,","highlight_start":5,"highlight_end":30}],"label":"no `artwork_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::artwork_rect`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/tools/resize_block.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::lower::artwork_rect,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `artwork_rect` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::edit::lower::grid_point`, `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/tools/route_tool.rs","byte_start":394,"byte_end":404,"line_start":14,"line_end":14,"column_start":17,"column_end":27,"is_primary":true,"text":[{"text":"        lower::{grid_point, px_point},","highlight_start":17,"highlight_end":27}],"label":"no `grid_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tools/route_tool.rs","byte_start":406,"byte_end":414,"line_start":14,"line_end":14,"column_start":29,"column_end":37,"is_primary":true,"text":[{"text":"        lower::{grid_point, px_point},","highlight_start":29,"highlight_end":37}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/tools/route_tool.rs","byte_start":394,"byte_end":404,"line_start":14,"line_end":14,"column_start":17,"column_end":27,"is_primary":true,"text":[{"text":"        lower::{grid_point, px_point},","highlight_start":17,"highlight_end":27}],"label":null,"suggested_replacement":"GridPoint","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit::lower::grid_point`, `crate::edit::lower::px_point`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/route_tool.rs:14:17\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         lower::{grid_point, px_point},\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91m|\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91mno `grid_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[91m- \u001b[0m        lower::{\u001b[91mgrid_point\u001b[0m, px_point},\n\u001b[1m\u001b[94m14\u001b[0m \u001b[92m+ \u001b[0m        lower::{\u001b[92mGridPoint\u001b[0m, px_point},\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/widget/auto_route.rs","byte_start":648,"byte_end":663,"line_start":18,"line_end":18,"column_start":33,"column_end":48,"is_primary":true,"text":[{"text":"    edit::{create::PathOrdinal, lower::px_point},","highlight_start":33,"highlight_end":48}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_point`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/auto_route.rs:18:33\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::{create::PathOrdinal, lower::px_point},\n   \u001b[1m\u001b[94m|\u001b[0m                                 \u001b[1m\u001b[91m^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::grid_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/widget/clipboard.rs","byte_start":961,"byte_end":978,"line_start":26,"line_end":26,"column_start":9,"column_end":26,"is_primary":true,"text":[{"text":"        lower::grid_point,","highlight_start":9,"highlight_end":26}],"label":"no `grid_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/widget/clipboard.rs","byte_start":968,"byte_end":978,"line_start":26,"line_end":26,"column_start":16,"column_end":26,"is_primary":true,"text":[{"text":"        lower::grid_point,","highlight_start":16,"highlight_end":26}],"label":null,"suggested_replacement":"GridPoint","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::grid_point`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/clipboard.rs:26:9\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         lower::grid_point,\n   \u001b[1m\u001b[94m|\u001b[0m         \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `grid_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[91m- \u001b[0m        lower::\u001b[91mgrid_point\u001b[0m,\n\u001b[1m\u001b[94m26\u001b[0m \u001b[92m+ \u001b[0m        lower::\u001b[92mGridPoint\u001b[0m,\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::artwork_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/widget/drawing.rs","byte_start":2905,"byte_end":2924,"line_start":73,"line_end":73,"column_start":9,"column_end":28,"is_primary":true,"text":[{"text":"        lower::artwork_rect,","highlight_start":9,"highlight_end":28}],"label":"no `artwork_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::artwork_rect`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/drawing.rs:73:9\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m73\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         lower::artwork_rect,\n   \u001b[1m\u001b[94m|\u001b[0m         \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `artwork_rect` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/widget/edge.rs","byte_start":4,"byte_end":32,"line_start":1,"line_end":1,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":"use crate::edit::lower::px_point;","highlight_start":5,"highlight_end":33}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::edit::lower::px_point`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/widget/edge.rs:1:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::lower::px_point;\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::edit::lower::artwork_rect`, `crate::edit::lower::px_rect`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/widget/movement.rs","byte_start":455,"byte_end":467,"line_start":16,"line_end":16,"column_start":17,"column_end":29,"is_primary":true,"text":[{"text":"        lower::{artwork_rect, px_rect},","highlight_start":17,"highlight_end":29}],"label":"no `artwork_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/widget/movement.rs","byte_start":469,"byte_end":476,"line_start":16,"line_end":16,"column_start":31,"column_end":38,"is_primary":true,"text":[{"text":"        lower::{artwork_rect, px_rect},","highlight_start":31,"highlight_end":38}],"label":"no `px_rect` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit::lower::artwork_rect`, `crate::edit::lower::px_rect`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/movement.rs:16:17\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         lower::{artwork_rect, px_rect},\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_rect` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91m|\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91mno `artwork_rect` in `edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::edit::lower::grid_point`, `crate::edit::lower::px_point`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n    pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src/widget/routing.rs","byte_start":966,"byte_end":976,"line_start":27,"line_end":27,"column_start":17,"column_end":27,"is_primary":true,"text":[{"text":"        lower::{grid_point, px_point},","highlight_start":17,"highlight_end":27}],"label":"no `grid_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/widget/routing.rs","byte_start":978,"byte_end":986,"line_start":27,"line_end":27,"column_start":29,"column_end":37,"is_primary":true,"text":[{"text":"        lower::{grid_point, px_point},","highlight_start":29,"highlight_end":37}],"label":"no `px_point` in `edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar name exists in the module","code":null,"level":"help","spans":[{"file_name":"src/widget/routing.rs","byte_start":966,"byte_end":976,"line_start":27,"line_end":27,"column_start":17,"column_end":27,"is_primary":true,"text":[{"text":"        lower::{grid_point, px_point},","highlight_start":17,"highlight_end":27}],"label":null,"suggested_replacement":"GridPoint","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit::lower::grid_point`, `crate::edit::lower::px_point`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/routing.rs:27:17\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         lower::{grid_point, px_point},\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91m^^^^^^^^^^\u001b[0m  \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mno `px_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91m|\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m                 \u001b[1m\u001b[91mno `grid_point` in `edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar name exists in the module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[91m- \u001b[0m        lower::{\u001b[91mgrid_point\u001b[0m, px_point},\n\u001b[1m\u001b[94m27\u001b[0m \u001b[92m+ \u001b[0m        lower::{\u001b[92mGridPoint\u001b[0m, px_point},\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find function `px_rect` in module `crate::edit::lower`","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n    fn bar() {\n        Self; // error: unresolved name `Self`\n    }\n}\n\n// or:\n\nlet x = unknown_variable;  // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n    Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n    pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/app.rs","byte_start":54725,"byte_end":54732,"line_start":1306,"line_end":1306,"column_start":42,"column_end":49,"is_primary":true,"text":[{"text":"        let region = crate::edit::lower::px_rect(spotlight.region);","highlight_start":42,"highlight_end":49}],"label":"not found in `crate::edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find function `px_rect` in module `crate::edit::lower`\u001b[0m\n    \u001b[1m\u001b[94m--> \u001b[0msrc/app.rs:1306:42\n     \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1306\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         let region = crate::edit::lower::px_rect(spotlight.region);\n     \u001b[1m\u001b[94m|\u001b[0m                                          \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in `crate::edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find function `artwork_rect` in module `crate::edit::lower`","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n    fn bar() {\n        Self; // error: unresolved name `Self`\n    }\n}\n\n// or:\n\nlet x = unknown_variable;  // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n    Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n    pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/spotlight.rs","byte_start":5475,"byte_end":5487,"line_start":138,"line_end":138,"column_start":34,"column_end":46,"is_primary":true,"text":[{"text":"    let px = crate::edit::lower::artwork_rect(rect);","highlight_start":34,"highlight_end":46}],"label":"not found in `crate::edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find function `artwork_rect` in module `crate::edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/spotlight.rs:138:34\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m138\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     let px = crate::edit::lower::artwork_rect(rect);\n    \u001b[1m\u001b[94m|\u001b[0m                                  \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in `crate::edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find function `px_rect` in module `crate::edit::lower`","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n    fn bar() {\n        Self; // error: unresolved name `Self`\n    }\n}\n\n// or:\n\nlet x = unknown_variable;  // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n    Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n    pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/spotlight.rs","byte_start":8554,"byte_end":8561,"line_start":231,"line_end":231,"column_start":38,"column_end":45,"is_primary":true,"text":[{"text":"    let region = crate::edit::lower::px_rect(lit.spotlight.region).expand(CLEAR);","highlight_start":38,"highlight_end":45}],"label":"not found in `crate::edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find function `px_rect` in module `crate::edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/spotlight.rs:231:38\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m231\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     let region = crate::edit::lower::px_rect(lit.spotlight.region).expand(CLEAR);\n    \u001b[1m\u001b[94m|\u001b[0m                                      \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in `crate::edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find function `px_point` in module `crate::edit::lower`","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n    fn bar() {\n        Self; // error: unresolved name `Self`\n    }\n}\n\n// or:\n\nlet x = unknown_variable;  // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n    Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n    pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/tools/edit_text_box.rs","byte_start":1604,"byte_end":1612,"line_start":47,"line_end":47,"column_start":41,"column_end":49,"is_primary":true,"text":[{"text":"            anchor: crate::edit::lower::px_point(tb.pos),","highlight_start":41,"highlight_end":49}],"label":"not found in `crate::edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find function `px_point` in module `crate::edit::lower`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/tools/edit_text_box.rs:47:41\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m47\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             anchor: crate::edit::lower::px_point(tb.pos),\n   \u001b[1m\u001b[94m|\u001b[0m                                         \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in `crate::edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find function `px_point` in module `crate::edit::lower`","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n    fn bar() {\n        Self; // error: unresolved name `Self`\n    }\n}\n\n// or:\n\nlet x = unknown_variable;  // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n    Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n    pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/widget/display.rs","byte_start":8016,"byte_end":8024,"line_start":206,"line_end":206,"column_start":37,"column_end":45,"is_primary":true,"text":[{"text":"                crate::edit::lower::px_point(wp.pos),","highlight_start":37,"highlight_end":45}],"label":"not found in `crate::edit::lower`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find function `px_point` in module `crate::edit::lower`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/widget/display.rs:206:37\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m206\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::edit::lower::px_point(wp.pos),\n    \u001b[1m\u001b[94m|\u001b[0m                                     \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in `crate::edit::lower`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused imports: `FracVal`, `GridPoint`, `GridVec`, `ScreenPoint`, `ScreenRect`, and `ScreenSize`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/edit/lower.rs","byte_start":461,"byte_end":468,"line_start":11,"line_end":11,"column_start":9,"column_end":16,"is_primary":true,"text":[{"text":"        FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,","highlight_start":9,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":470,"byte_end":479,"line_start":11,"line_end":11,"column_start":18,"column_end":27,"is_primary":true,"text":[{"text":"        FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,","highlight_start":18,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":501,"byte_end":508,"line_start":11,"line_end":11,"column_start":49,"column_end":56,"is_primary":true,"text":[{"text":"        FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,","highlight_start":49,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":510,"byte_end":521,"line_start":11,"line_end":11,"column_start":58,"column_end":69,"is_primary":true,"text":[{"text":"        FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,","highlight_start":58,"highlight_end":69}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":523,"byte_end":533,"line_start":11,"line_end":11,"column_start":71,"column_end":81,"is_primary":true,"text":[{"text":"        FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,","highlight_start":71,"highlight_end":81}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":535,"byte_end":545,"line_start":11,"line_end":11,"column_start":83,"column_end":93,"is_primary":true,"text":[{"text":"        FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,","highlight_start":83,"highlight_end":93}],"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/edit/lower.rs","byte_start":461,"byte_end":481,"line_start":11,"line_end":11,"column_start":9,"column_end":29,"is_primary":true,"text":[{"text":"        FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,","highlight_start":9,"highlight_end":29}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/edit/lower.rs","byte_start":499,"byte_end":545,"line_start":11,"line_end":11,"column_start":47,"column_end":93,"is_primary":true,"text":[{"text":"        FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,","highlight_start":47,"highlight_end":93}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `FracVal`, `GridPoint`, `GridVec`, `ScreenPoint`, `ScreenRect`, and `ScreenSize`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/edit/lower.rs:11:9\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         FracVal, GridPoint, GridRect, GridSize, GridVec, ScreenPoint, ScreenRect, ScreenSize,\n   \u001b[1m\u001b[94m|\u001b[0m         \u001b[1m\u001b[33m^^^^^^^\u001b[0m  \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m                      \u001b[1m\u001b[33m^^^^^^^\u001b[0m  \u001b[1m\u001b[33m^^^^^^^^^^^\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":"unused imports: `Rect`, `Vec2`, `pos2`, and `vec2`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/edit/lower.rs","byte_start":602,"byte_end":606,"line_start":15,"line_end":15,"column_start":28,"column_end":32,"is_primary":true,"text":[{"text":"use blockworx_geom::{Pos2, Rect, Vec2, pos2, vec2};","highlight_start":28,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":608,"byte_end":612,"line_start":15,"line_end":15,"column_start":34,"column_end":38,"is_primary":true,"text":[{"text":"use blockworx_geom::{Pos2, Rect, Vec2, pos2, vec2};","highlight_start":34,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":614,"byte_end":618,"line_start":15,"line_end":15,"column_start":40,"column_end":44,"is_primary":true,"text":[{"text":"use blockworx_geom::{Pos2, Rect, Vec2, pos2, vec2};","highlight_start":40,"highlight_end":44}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":620,"byte_end":624,"line_start":15,"line_end":15,"column_start":46,"column_end":50,"is_primary":true,"text":[{"text":"use blockworx_geom::{Pos2, Rect, Vec2, pos2, vec2};","highlight_start":46,"highlight_end":50}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused imports","code":null,"level":"help","spans":[{"file_name":"src/edit/lower.rs","byte_start":600,"byte_end":624,"line_start":15,"line_end":15,"column_start":26,"column_end":50,"is_primary":true,"text":[{"text":"use blockworx_geom::{Pos2, Rect, Vec2, pos2, vec2};","highlight_start":26,"highlight_end":50}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/edit/lower.rs","byte_start":595,"byte_end":596,"line_start":15,"line_end":15,"column_start":21,"column_end":22,"is_primary":true,"text":[{"text":"use blockworx_geom::{Pos2, Rect, Vec2, pos2, vec2};","highlight_start":21,"highlight_end":22}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/edit/lower.rs","byte_start":624,"byte_end":625,"line_start":15,"line_end":15,"column_start":50,"column_end":51,"is_primary":true,"text":[{"text":"use blockworx_geom::{Pos2, Rect, Vec2, pos2, vec2};","highlight_start":50,"highlight_end":51}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `Rect`, `Vec2`, `pos2`, and `vec2`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/edit/lower.rs:15:28\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use blockworx_geom::{Pos2, Rect, Vec2, pos2, vec2};\n   \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[33m^^^^\u001b[0m  \u001b[1m\u001b[33m^^^^\u001b[0m  \u001b[1m\u001b[33m^^^^\u001b[0m  \u001b[1m\u001b[33m^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unused imports: `grid_i32`, `grid_u32_ceil`, `px_u`, and `px`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/edit/lower.rs","byte_start":662,"byte_end":670,"line_start":18,"line_end":18,"column_start":16,"column_end":24,"is_primary":true,"text":[{"text":"    GRID_SIZE, grid_i32, grid_u32_ceil, max_pin_slot, px, px_u, snap_block_height_cells,","highlight_start":16,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":672,"byte_end":685,"line_start":18,"line_end":18,"column_start":26,"column_end":39,"is_primary":true,"text":[{"text":"    GRID_SIZE, grid_i32, grid_u32_ceil, max_pin_slot, px, px_u, snap_block_height_cells,","highlight_start":26,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":701,"byte_end":703,"line_start":18,"line_end":18,"column_start":55,"column_end":57,"is_primary":true,"text":[{"text":"    GRID_SIZE, grid_i32, grid_u32_ceil, max_pin_slot, px, px_u, snap_block_height_cells,","highlight_start":55,"highlight_end":57}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/edit/lower.rs","byte_start":705,"byte_end":709,"line_start":18,"line_end":18,"column_start":59,"column_end":63,"is_primary":true,"text":[{"text":"    GRID_SIZE, grid_i32, grid_u32_ceil, max_pin_slot, px, px_u, snap_block_height_cells,","highlight_start":59,"highlight_end":63}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the unused imports","code":null,"level":"help","spans":[{"file_name":"src/edit/lower.rs","byte_start":660,"byte_end":685,"line_start":18,"line_end":18,"column_start":14,"column_end":39,"is_primary":true,"text":[{"text":"    GRID_SIZE, grid_i32, grid_u32_ceil, max_pin_slot, px, px_u, snap_block_height_cells,","highlight_start":14,"highlight_end":39}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"src/edit/lower.rs","byte_start":699,"byte_end":709,"line_start":18,"line_end":18,"column_start":53,"column_end":63,"is_primary":true,"text":[{"text":"    GRID_SIZE, grid_i32, grid_u32_ceil, max_pin_slot, px, px_u, snap_block_height_cells,","highlight_start":53,"highlight_end":63}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `grid_i32`, `grid_u32_ceil`, `px_u`, and `px`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/edit/lower.rs:18:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     GRID_SIZE, grid_i32, grid_u32_ceil, max_pin_slot, px, px_u, snap_block_height_cells,\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[33m^^^^^^^^\u001b[0m  \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m                \u001b[1m\u001b[33m^^\u001b[0m  \u001b[1m\u001b[33m^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find function `grid_rect` in this scope","code":{"code":"E0425","explanation":"An unresolved name was used.\n\nErroneous code examples:\n\n```compile_fail,E0425\nsomething_that_doesnt_exist::foo;\n// error: unresolved name `something_that_doesnt_exist::foo`\n\n// or:\n\ntrait Foo {\n    fn bar() {\n        Self; // error: unresolved name `Self`\n    }\n}\n\n// or:\n\nlet x = unknown_variable;  // error: unresolved name `unknown_variable`\n```\n\nPlease verify that the name wasn't misspelled and ensure that the\nidentifier being referred to is valid for the given situation. Example:\n\n```\nenum something_that_does_exist {\n    Foo,\n}\n```\n\nOr:\n\n```\nmod something_that_does_exist {\n    pub static foo : i32 = 0i32;\n}\n\nsomething_that_does_exist::foo; // ok!\n```\n\nOr:\n\n```\nlet unknown_variable = 12u32;\nlet x = unknown_variable; // ok!\n```\n\nIf the item is not defined in the current module, it must be imported using a\n`use` statement, like so:\n\n```\n# mod foo { pub fn bar() {} }\n# fn main() {\nuse foo::bar;\nbar();\n# }\n```\n\nIf the item you are importing is not defined in some super-module of the\ncurrent module, then it must also be declared as public (e.g., `pub fn`).\n"},"level":"error","spans":[{"file_name":"src/edit/lower.rs","byte_start":1321,"byte_end":1330,"line_start":33,"line_end":33,"column_start":16,"column_end":25,"is_primary":true,"text":[{"text":"    let rect = grid_rect(start, end);","highlight_start":16,"highlight_end":25}],"label":"not found in this scope","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0425]\u001b[0m\u001b[1m: cannot find function `grid_rect` in this scope\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/edit/lower.rs:33:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m33\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     let rect = grid_rect(start, end);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mnot found in this scope\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.\n\nErroneous code examples:\n\n```compile_fail,E0308\nfn plus_one(x: i32) -> i32 {\n    x + 1\n}\n\nplus_one(\"Not a number\");\n//       ^^^^^^^^^^^^^^ expected `i32`, found `&str`\n\nif \"Not a bool\" {\n// ^^^^^^^^^^^^ expected `bool`, found `&str`\n}\n\nlet x: f32 = \"Not a float\";\n//     ---   ^^^^^^^^^^^^^ expected `f32`, found `&str`\n//     |\n//     expected due to this\n```\n\nThis error occurs when an expression was used in a place where the compiler\nexpected an expression of a different type. It can occur in several cases, the\nmost common being when calling a function and passing an argument which has a\ndifferent type than the matching type in the function declaration.\n"},"level":"error","spans":[{"file_name":"src/tools/resize_block.rs","byte_start":6511,"byte_end":6531,"line_start":170,"line_end":170,"column_start":31,"column_end":51,"is_primary":true,"text":[{"text":"    Some((ShapeId::Icon(rid), moved.min - icon.min))","highlight_start":31,"highlight_end":51}],"label":"expected `Vec2`, found `Pos2`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0308]\u001b[0m\u001b[1m: mismatched types\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0msrc/tools/resize_block.rs:170:31\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m170\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     Some((ShapeId::Icon(rid), moved.min - icon.min))\n    \u001b[1m\u001b[94m|\u001b[0m                               \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mexpected `Vec2`, found `Pos2`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"no method named `length` found for struct `blockworx_geom::Pos2` in the current scope","code":{"code":"E0599","explanation":"This error occurs when a method is used on a type which doesn't implement it:\n\nErroneous code example:\n\n```compile_fail,E0599\nstruct Mouth;\n\nlet x = Mouth;\nx.chocolate(); // error: no method named `chocolate` found for type `Mouth`\n               //        in the current scope\n```\n\nIn this case, you need to implement the `chocolate` method to fix the error:\n\n```\nstruct Mouth;\n\nimpl Mouth {\n    fn chocolate(&self) { // We implement the `chocolate` method here.\n        println!(\"Hmmm! I love chocolate!\");\n    }\n}\n\nlet x = Mouth;\nx.chocolate(); // ok!\n```\n"},"level":"error","spans":[{"file_name":"src/widget/edge.rs","byte_start":1101,"byte_end":1107,"line_start":27,"line_end":27,"column_start":40,"column_end":46,"is_primary":true,"text":[{"text":"            return (0.0, (pos - start).length());","highlight_start":40,"highlight_end":46}],"label":"method not found in `blockworx_geom::Pos2`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"items from traits can only be used if the trait is implemented and in scope","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`RouteEdgeExt` defines an item `length`, perhaps you need to implement it","code":null,"level":"note","spans":[{"file_name":"src/widget/edge.rs","byte_start":371,"byte_end":393,"line_start":10,"line_end":10,"column_start":1,"column_end":23,"is_primary":true,"text":[{"text":"pub trait RouteEdgeExt {","highlight_start":1,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0599]\u001b[0m\u001b[1m: no method named `length` found for struct `blockworx_geom::Pos2` in the current scope\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/edge.rs:27:40\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             return (0.0, (pos - start).length());\n   \u001b[1m\u001b[94m|\u001b[0m                                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mmethod not found in `blockworx_geom::Pos2`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: items from traits can only be used if the trait is implemented and in scope\n\u001b[1m\u001b[92mnote\u001b[0m: `RouteEdgeExt` defines an item `length`, perhaps you need to implement it\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/edge.rs:10:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait RouteEdgeExt {\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"no method named `dot` found for struct `blockworx_geom::Pos2` in the current scope","code":{"code":"E0599","explanation":"This error occurs when a method is used on a type which doesn't implement it:\n\nErroneous code example:\n\n```compile_fail,E0599\nstruct Mouth;\n\nlet x = Mouth;\nx.chocolate(); // error: no method named `chocolate` found for type `Mouth`\n               //        in the current scope\n```\n\nIn this case, you need to implement the `chocolate` method to fix the error:\n\n```\nstruct Mouth;\n\nimpl Mouth {\n    fn chocolate(&self) { // We implement the `chocolate` method here.\n        println!(\"Hmmm! I love chocolate!\");\n    }\n}\n\nlet x = Mouth;\nx.chocolate(); // ok!\n```\n"},"level":"error","spans":[{"file_name":"src/widget/edge.rs","byte_start":1153,"byte_end":1156,"line_start":29,"line_end":29,"column_start":32,"column_end":35,"is_primary":true,"text":[{"text":"        let t = ((pos - start).dot(line_vec) / line_len.powi(2)).clamp(0.0, 1.0);","highlight_start":32,"highlight_end":35}],"label":"method not found in `blockworx_geom::Pos2`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0599]\u001b[0m\u001b[1m: no method named `dot` found for struct `blockworx_geom::Pos2` in the current scope\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/edge.rs:29:32\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m29\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         let t = ((pos - start).dot(line_vec) / line_len.powi(2)).clamp(0.0, 1.0);\n   \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^\u001b[0m \u001b[1m\u001b[91mmethod not found in `blockworx_geom::Pos2`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"no method named `length` found for struct `blockworx_geom::Pos2` in the current scope","code":{"code":"E0599","explanation":"This error occurs when a method is used on a type which doesn't implement it:\n\nErroneous code example:\n\n```compile_fail,E0599\nstruct Mouth;\n\nlet x = Mouth;\nx.chocolate(); // error: no method named `chocolate` found for type `Mouth`\n               //        in the current scope\n```\n\nIn this case, you need to implement the `chocolate` method to fix the error:\n\n```\nstruct Mouth;\n\nimpl Mouth {\n    fn chocolate(&self) { // We implement the `chocolate` method here.\n        println!(\"Hmmm! I love chocolate!\");\n    }\n}\n\nlet x = Mouth;\nx.chocolate(); // ok!\n```\n"},"level":"error","spans":[{"file_name":"src/widget/edge.rs","byte_start":1340,"byte_end":1346,"line_start":32,"line_end":32,"column_start":46,"column_end":52,"is_primary":true,"text":[{"text":"        (linear_distance, (pos - projection).length())","highlight_start":46,"highlight_end":52}],"label":"method not found in `blockworx_geom::Pos2`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"items from traits can only be used if the trait is implemented and in scope","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"`RouteEdgeExt` defines an item `length`, perhaps you need to implement it","code":null,"level":"note","spans":[{"file_name":"src/widget/edge.rs","byte_start":371,"byte_end":393,"line_start":10,"line_end":10,"column_start":1,"column_end":23,"is_primary":true,"text":[{"text":"pub trait RouteEdgeExt {","highlight_start":1,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0599]\u001b[0m\u001b[1m: no method named `length` found for struct `blockworx_geom::Pos2` in the current scope\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/edge.rs:32:46\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m32\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         (linear_distance, (pos - projection).length())\n   \u001b[1m\u001b[94m|\u001b[0m                                              \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mmethod not found in `blockworx_geom::Pos2`\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: items from traits can only be used if the trait is implemented and in scope\n\u001b[1m\u001b[92mnote\u001b[0m: `RouteEdgeExt` defines an item `length`, perhaps you need to implement it\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/edge.rs:10:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub trait RouteEdgeExt {\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.\n\nErroneous code examples:\n\n```compile_fail,E0308\nfn plus_one(x: i32) -> i32 {\n    x + 1\n}\n\nplus_one(\"Not a number\");\n//       ^^^^^^^^^^^^^^ expected `i32`, found `&str`\n\nif \"Not a bool\" {\n// ^^^^^^^^^^^^ expected `bool`, found `&str`\n}\n\nlet x: f32 = \"Not a float\";\n//     ---   ^^^^^^^^^^^^^ expected `f32`, found `&str`\n//     |\n//     expected due to this\n```\n\nThis error occurs when an expression was used in a place where the compiler\nexpected an expression of a different type. It can occur in several cases, the\nmost common being when calling a function and passing an argument which has a\ndifferent type than the matching type in the function declaration.\n"},"level":"error","spans":[{"file_name":"src/widget/movement.rs","byte_start":1290,"byte_end":1317,"line_start":36,"line_end":36,"column_start":21,"column_end":48,"is_primary":true,"text":[{"text":"                    contained.min - box_now.min","highlight_start":21,"highlight_end":48}],"label":"expected `Vec2`, found `Pos2`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/widget/movement.rs","byte_start":870,"byte_end":874,"line_start":27,"line_end":27,"column_start":66,"column_end":70,"is_primary":false,"text":[{"text":"    pub fn constrain_move(&self, shape: ShapeId, delta: Vec2) -> Vec2 {","highlight_start":66,"highlight_end":70}],"label":"expected `blockworx_geom::Vec2` because of return type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0308]\u001b[0m\u001b[1m: mismatched types\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0msrc/widget/movement.rs:36:21\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub fn constrain_move(&self, shape: ShapeId, delta: Vec2) -> Vec2 {\n   \u001b[1m\u001b[94m|\u001b[0m                                                                  \u001b[1m\u001b[94m----\u001b[0m \u001b[1m\u001b[94mexpected `blockworx_geom::Vec2` because of return type\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m36\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     contained.min - box_now.min\n   \u001b[1m\u001b[94m|\u001b[0m                     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mexpected `Vec2`, found `Pos2`\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"aborting due to 33 previous errors; 3 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m: aborting due to 33 previous errors; 3 warnings emitted\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0308, E0425, E0432, E0599.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mSome errors have detailed explanations: E0308, E0425, E0432, E0599.\u001b[0m\n"}
{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0308`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mFor more information about an error, try `rustc --explain E0308`.\u001b[0m\n"}
