{"$message_type":"diagnostic","message":"file not found for module `chrome`","code":{"code":"E0583","explanation":"A file wasn't found for an out-of-line module.\n\nErroneous code example:\n\n```compile_fail,E0583\nmod file_that_doesnt_exist; // error: file not found for module\n\nfn main() {}\n```\n\nPlease be sure that a file corresponding to the module exists. If you\nwant to use a module named `file_that_doesnt_exist`, you need to have a file\nnamed `file_that_doesnt_exist.rs` or `file_that_doesnt_exist/mod.rs` in the\nsame directory.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/lib.rs","byte_start":34,"byte_end":49,"line_start":3,"line_end":3,"column_start":1,"column_end":16,"is_primary":true,"text":[{"text":"pub mod chrome;","highlight_start":1,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"to create the module `chrome`, create file \"crates/tools/src/chrome.rs\" or \"crates/tools/src/chrome/mod.rs\"","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"if there is a `mod chrome` elsewhere in the crate already, import it with `use crate::...` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0583]\u001b[0m\u001b[1m: file not found for module `chrome`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/lib.rs:3:1\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub mod chrome;\n  \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m\n  \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to create the module `chrome`, create file \"crates/tools/src/chrome.rs\" or \"crates/tools/src/chrome/mod.rs\"\n  \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: if there is a `mod chrome` elsewhere in the crate already, import it with `use crate::...` instead\n\n"}
{"$message_type":"diagnostic","message":"file not found for module `file_menu`","code":{"code":"E0583","explanation":"A file wasn't found for an out-of-line module.\n\nErroneous code example:\n\n```compile_fail,E0583\nmod file_that_doesnt_exist; // error: file not found for module\n\nfn main() {}\n```\n\nPlease be sure that a file corresponding to the module exists. If you\nwant to use a module named `file_that_doesnt_exist`, you need to have a file\nnamed `file_that_doesnt_exist.rs` or `file_that_doesnt_exist/mod.rs` in the\nsame directory.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/lib.rs","byte_start":139,"byte_end":157,"line_start":8,"line_end":8,"column_start":1,"column_end":19,"is_primary":true,"text":[{"text":"pub mod file_menu;","highlight_start":1,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"to create the module `file_menu`, create file \"crates/tools/src/file_menu.rs\" or \"crates/tools/src/file_menu/mod.rs\"","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"if there is a `mod file_menu` elsewhere in the crate already, import it with `use crate::...` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0583]\u001b[0m\u001b[1m: file not found for module `file_menu`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/lib.rs:8:1\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub mod file_menu;\n  \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m\n  \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to create the module `file_menu`, create file \"crates/tools/src/file_menu.rs\" or \"crates/tools/src/file_menu/mod.rs\"\n  \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: if there is a `mod file_menu` elsewhere in the crate already, import it with `use crate::...` instead\n\n"}
{"$message_type":"diagnostic","message":"file not found for module `history_panel`","code":{"code":"E0583","explanation":"A file wasn't found for an out-of-line module.\n\nErroneous code example:\n\n```compile_fail,E0583\nmod file_that_doesnt_exist; // error: file not found for module\n\nfn main() {}\n```\n\nPlease be sure that a file corresponding to the module exists. If you\nwant to use a module named `file_that_doesnt_exist`, you need to have a file\nnamed `file_that_doesnt_exist.rs` or `file_that_doesnt_exist/mod.rs` in the\nsame directory.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/lib.rs","byte_start":196,"byte_end":218,"line_start":11,"line_end":11,"column_start":1,"column_end":23,"is_primary":true,"text":[{"text":"pub mod history_panel;","highlight_start":1,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"to create the module `history_panel`, create file \"crates/tools/src/history_panel.rs\" or \"crates/tools/src/history_panel/mod.rs\"","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"if there is a `mod history_panel` elsewhere in the crate already, import it with `use crate::...` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0583]\u001b[0m\u001b[1m: file not found for module `history_panel`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/lib.rs:11:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub mod history_panel;\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to create the module `history_panel`, create file \"crates/tools/src/history_panel.rs\" or \"crates/tools/src/history_panel/mod.rs\"\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: if there is a `mod history_panel` elsewhere in the crate already, import it with `use crate::...` instead\n\n"}
{"$message_type":"diagnostic","message":"file not found for module `notices`","code":{"code":"E0583","explanation":"A file wasn't found for an out-of-line module.\n\nErroneous code example:\n\n```compile_fail,E0583\nmod file_that_doesnt_exist; // error: file not found for module\n\nfn main() {}\n```\n\nPlease be sure that a file corresponding to the module exists. If you\nwant to use a module named `file_that_doesnt_exist`, you need to have a file\nnamed `file_that_doesnt_exist.rs` or `file_that_doesnt_exist/mod.rs` in the\nsame directory.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/lib.rs","byte_start":288,"byte_end":304,"line_start":16,"line_end":16,"column_start":1,"column_end":17,"is_primary":true,"text":[{"text":"pub mod notices;","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"to create the module `notices`, create file \"crates/tools/src/notices.rs\" or \"crates/tools/src/notices/mod.rs\"","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"if there is a `mod notices` elsewhere in the crate already, import it with `use crate::...` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0583]\u001b[0m\u001b[1m: file not found for module `notices`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/lib.rs:16:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub mod notices;\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to create the module `notices`, create file \"crates/tools/src/notices.rs\" or \"crates/tools/src/notices/mod.rs\"\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: if there is a `mod notices` elsewhere in the crate already, import it with `use crate::...` instead\n\n"}
{"$message_type":"diagnostic","message":"file not found for module `overlay`","code":{"code":"E0583","explanation":"A file wasn't found for an out-of-line module.\n\nErroneous code example:\n\n```compile_fail,E0583\nmod file_that_doesnt_exist; // error: file not found for module\n\nfn main() {}\n```\n\nPlease be sure that a file corresponding to the module exists. If you\nwant to use a module named `file_that_doesnt_exist`, you need to have a file\nnamed `file_that_doesnt_exist.rs` or `file_that_doesnt_exist/mod.rs` in the\nsame directory.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/lib.rs","byte_start":305,"byte_end":321,"line_start":17,"line_end":17,"column_start":1,"column_end":17,"is_primary":true,"text":[{"text":"pub mod overlay;","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"to create the module `overlay`, create file \"crates/tools/src/overlay.rs\" or \"crates/tools/src/overlay/mod.rs\"","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"if there is a `mod overlay` elsewhere in the crate already, import it with `use crate::...` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0583]\u001b[0m\u001b[1m: file not found for module `overlay`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/lib.rs:17:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub mod overlay;\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to create the module `overlay`, create file \"crates/tools/src/overlay.rs\" or \"crates/tools/src/overlay/mod.rs\"\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: if there is a `mod overlay` elsewhere in the crate already, import it with `use crate::...` instead\n\n"}
{"$message_type":"diagnostic","message":"file not found for module `palette`","code":{"code":"E0583","explanation":"A file wasn't found for an out-of-line module.\n\nErroneous code example:\n\n```compile_fail,E0583\nmod file_that_doesnt_exist; // error: file not found for module\n\nfn main() {}\n```\n\nPlease be sure that a file corresponding to the module exists. If you\nwant to use a module named `file_that_doesnt_exist`, you need to have a file\nnamed `file_that_doesnt_exist.rs` or `file_that_doesnt_exist/mod.rs` in the\nsame directory.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/lib.rs","byte_start":359,"byte_end":375,"line_start":20,"line_end":20,"column_start":1,"column_end":17,"is_primary":true,"text":[{"text":"pub mod palette;","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"to create the module `palette`, create file \"crates/tools/src/palette.rs\" or \"crates/tools/src/palette/mod.rs\"","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"if there is a `mod palette` elsewhere in the crate already, import it with `use crate::...` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0583]\u001b[0m\u001b[1m: file not found for module `palette`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/lib.rs:20:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m20\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub mod palette;\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to create the module `palette`, create file \"crates/tools/src/palette.rs\" or \"crates/tools/src/palette/mod.rs\"\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: if there is a `mod palette` elsewhere in the crate already, import it with `use crate::...` instead\n\n"}
{"$message_type":"diagnostic","message":"file not found for module `nav_tree`","code":{"code":"E0583","explanation":"A file wasn't found for an out-of-line module.\n\nErroneous code example:\n\n```compile_fail,E0583\nmod file_that_doesnt_exist; // error: file not found for module\n\nfn main() {}\n```\n\nPlease be sure that a file corresponding to the module exists. If you\nwant to use a module named `file_that_doesnt_exist`, you need to have a file\nnamed `file_that_doesnt_exist.rs` or `file_that_doesnt_exist/mod.rs` in the\nsame directory.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/lib.rs","byte_start":1071,"byte_end":1088,"line_start":46,"line_end":46,"column_start":1,"column_end":18,"is_primary":true,"text":[{"text":"pub mod nav_tree;","highlight_start":1,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"to create the module `nav_tree`, create file \"crates/tools/src/nav_tree.rs\" or \"crates/tools/src/nav_tree/mod.rs\"","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"if there is a `mod nav_tree` elsewhere in the crate already, import it with `use crate::...` instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0583]\u001b[0m\u001b[1m: file not found for module `nav_tree`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/lib.rs:46:1\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m46\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub mod nav_tree;\n   \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^^\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: to create the module `nav_tree`, create file \"crates/tools/src/nav_tree.rs\" or \"crates/tools/src/nav_tree/mod.rs\"\n   \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: if there is a `mod nav_tree` elsewhere in the crate already, import it with `use crate::...` instead\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":736,"byte_end":740,"line_start":16,"line_end":16,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    edit::naming::{Authoring, InterfaceLock, TagVisibility},","highlight_start":5,"highlight_end":9}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:16:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::naming::{Authoring, InterfaceLock, TagVisibility},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":858,"byte_end":863,"line_start":19,"line_end":19,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:19:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":981,"byte_end":987,"line_start":23,"line_end":23,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:23:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m23\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::export`, `crate::shape`","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":"crates/tools/src/commands.rs","byte_start":797,"byte_end":803,"line_start":17,"line_end":17,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    export::{ExportFormat, ExportScope},","highlight_start":5,"highlight_end":11}],"label":"could not find `export` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/commands.rs","byte_start":838,"byte_end":843,"line_start":18,"line_end":18,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::export`, `crate::shape`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:17:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     export::{ExportFormat, ExportScope},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `export` in the crate root\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":25403,"byte_end":25408,"line_start":631,"line_end":631,"column_start":20,"column_end":25,"is_primary":true,"text":[{"text":"        use crate::tools::{","highlight_start":20,"highlight_end":25}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:631:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m631\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         use crate::tools::{\n    \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::tools`","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":"crates/tools/src/commands.rs","byte_start":25403,"byte_end":25408,"line_start":631,"line_end":631,"column_start":20,"column_end":25,"is_primary":true,"text":[{"text":"        use crate::tools::{","highlight_start":20,"highlight_end":25}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::tools`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:631:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m631\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         use crate::tools::{\n    \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/tool.rs","byte_start":80,"byte_end":84,"line_start":4,"line_end":4,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"use crate::edit::naming::Authoring;","highlight_start":12,"highlight_end":16}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:4:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::naming::Authoring;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/tool.rs","byte_start":122,"byte_end":126,"line_start":6,"line_end":6,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    edit::naming::{InterfaceLock, TagVisibility},","highlight_start":5,"highlight_end":9}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::naming::{InterfaceLock, TagVisibility},\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::tools`","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":"crates/tools/src/commands.rs","byte_start":34095,"byte_end":34100,"line_start":846,"line_end":846,"column_start":16,"column_end":21,"is_primary":true,"text":[{"text":"    use crate::tools::SelectTool;","highlight_start":16,"highlight_end":21}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::tools`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:846:16\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m846\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     use crate::tools::SelectTool;\n    \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/tool.rs","byte_start":210,"byte_end":215,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/tool.rs","byte_start":669,"byte_end":675,"line_start":16,"line_end":16,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:16:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::shape`, `crate::theme`, `crate::tools`","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":"crates/tools/src/tool.rs","byte_start":172,"byte_end":177,"line_start":7,"line_end":7,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/tool.rs","byte_start":192,"byte_end":197,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Style,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/tool.rs","byte_start":210,"byte_end":215,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::shape`, `crate::theme`, `crate::tools`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:7:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Style,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::shape`","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":"crates/tools/src/tool.rs","byte_start":1046,"byte_end":1051,"line_start":27,"line_end":27,"column_start":16,"column_end":21,"is_primary":true,"text":[{"text":"pub use crate::shape::{Deletable, RoleTarget};","highlight_start":16,"highlight_end":21}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::shape`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:27:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use crate::shape::{Deletable, RoleTarget};\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::widget`","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":"crates/tools/src/tool.rs","byte_start":1093,"byte_end":1099,"line_start":28,"line_end":28,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"pub use crate::widget::Supposing;","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:28:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m28\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use crate::widget::Supposing;\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/add_port.rs","byte_start":11,"byte_end":17,"line_start":1,"line_end":1,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::draw_port_outline;","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_port.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::draw_port_outline;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/add_port.rs","byte_start":49,"byte_end":54,"line_start":2,"line_end":2,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::{Role, Style};","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_port.rs:2:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::{Role, Style};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_port.rs","byte_start":218,"byte_end":223,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::pin::PinSide,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_port.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::pin::PinSide,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_port.rs","byte_start":243,"byte_end":248,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_port.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_port.rs","byte_start":363,"byte_end":369,"line_start":14,"line_end":14,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_port.rs:14:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::grid`","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":"crates/tools/src/add_port.rs","byte_start":194,"byte_end":198,"line_start":7,"line_end":7,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::snap_to_grid,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::grid`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_port.rs:7:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::snap_to_grid,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/add_route_label.rs","byte_start":11,"byte_end":17,"line_start":1,"line_end":1,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::RouteRenderMode;","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_route_label.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::RouteRenderMode;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/add_route_label.rs","byte_start":47,"byte_end":52,"line_start":2,"line_end":2,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_route_label.rs:2:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_route_label.rs","byte_start":196,"byte_end":201,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_route_label.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_route_label.rs","byte_start":309,"byte_end":315,"line_start":13,"line_end":13,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_route_label.rs:13:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::tools`, `crate::widget`","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":"crates/tools/src/add_route_label.rs","byte_start":196,"byte_end":201,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/add_route_label.rs","byte_start":309,"byte_end":315,"line_start":13,"line_end":13,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::tools`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_route_label.rs:8:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/add_text.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::{Role, Style};","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_text.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::{Role, Style};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_text.rs","byte_start":153,"byte_end":158,"line_start":6,"line_end":6,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_text.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_text.rs","byte_start":254,"byte_end":260,"line_start":11,"line_end":11,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_text.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::tools`","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":"crates/tools/src/add_text.rs","byte_start":153,"byte_end":158,"line_start":6,"line_end":6,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::tools`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_text.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/block_edit.rs","byte_start":457,"byte_end":462,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/block_edit.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/block_edit.rs","byte_start":524,"byte_end":529,"line_start":14,"line_end":14,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/block_edit.rs:14:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/block_edit.rs","byte_start":661,"byte_end":667,"line_start":19,"line_end":19,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/block_edit.rs:19:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::shape`, `crate::tools`","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":"crates/tools/src/block_edit.rs","byte_start":457,"byte_end":462,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/block_edit.rs","byte_start":524,"byte_end":529,"line_start":14,"line_end":14,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::shape`, `crate::tools`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/block_edit.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/edit_route.rs","byte_start":11,"byte_end":17,"line_start":1,"line_end":1,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::{","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_route.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::{\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/edit_route.rs","byte_start":183,"byte_end":188,"line_start":5,"line_end":5,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_route.rs:5:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":480,"byte_end":485,"line_start":14,"line_end":14,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_route.rs:14:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":582,"byte_end":588,"line_start":18,"line_end":18,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_route.rs:18:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":118,"byte_end":124,"line_start":6,"line_end":6,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::text_box::{box_width, max_box_height, text_inner_width};","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:6:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::text_box::{box_width, max_box_height, text_inner_width};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::presentation`, `crate::theme`, `crate::widget`","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":"crates/tools/src/edit_route.rs","byte_start":332,"byte_end":336,"line_start":11,"line_end":11,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::{GRID_SIZE, HIT_RADIUS, PORT_RADIUS, grid_point, px_point, snap_to_grid},","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/edit_route.rs","byte_start":416,"byte_end":428,"line_start":12,"line_end":12,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":"    presentation::{RouteDirection, RouteEdge},","highlight_start":5,"highlight_end":17}],"label":"could not find `presentation` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/edit_route.rs","byte_start":463,"byte_end":468,"line_start":13,"line_end":13,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Role,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/edit_route.rs","byte_start":582,"byte_end":588,"line_start":18,"line_end":18,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::presentation`, `crate::theme`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_route.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::{GRID_SIZE, HIT_RADIUS, PORT_RADIUS, grid_point, px_point, snap_to_grid},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m12\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     presentation::{RouteDirection, RouteEdge},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `presentation` in the crate root\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Role,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/edit_text_box.rs","byte_start":194,"byte_end":199,"line_start":7,"line_end":7,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:7:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":278,"byte_end":283,"line_start":11,"line_end":11,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":369,"byte_end":375,"line_start":15,"line_end":15,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:15:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`","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":"crates/tools/src/edit_text_box.rs","byte_start":225,"byte_end":229,"line_start":9,"line_end":9,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::{GRID_SIZE, px_point},","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":258,"byte_end":263,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:9:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::{GRID_SIZE, px_point},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/icon.rs","byte_start":37,"byte_end":42,"line_start":3,"line_end":3,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/icon.rs:3:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m3\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/icon.rs","byte_start":266,"byte_end":271,"line_start":11,"line_end":11,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/icon.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/icon.rs","byte_start":420,"byte_end":426,"line_start":17,"line_end":17,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/icon.rs:17:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::shape`","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":"crates/tools/src/icon.rs","byte_start":246,"byte_end":251,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::shape`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/icon.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/move_block.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block.rs","byte_start":194,"byte_end":199,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block.rs","byte_start":320,"byte_end":326,"line_start":14,"line_end":14,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:14:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::widget`","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":"crates/tools/src/move_block.rs","byte_start":128,"byte_end":132,"line_start":6,"line_end":6,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::snap_offset,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_block.rs","byte_start":151,"byte_end":156,"line_start":7,"line_end":7,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_block.rs","byte_start":171,"byte_end":176,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    state::RenderMode,","highlight_start":5,"highlight_end":10}],"label":"could not find `state` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_block.rs","byte_start":320,"byte_end":326,"line_start":14,"line_end":14,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:6:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::snap_offset,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     state::RenderMode,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `state` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/move_block_type.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block_type.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block_type.rs","byte_start":242,"byte_end":247,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block_type.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block_type.rs","byte_start":322,"byte_end":328,"line_start":14,"line_end":14,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block_type.rs:14:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::widget`","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":"crates/tools/src/move_block_type.rs","byte_start":161,"byte_end":165,"line_start":7,"line_end":7,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::round_to_grid,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_block_type.rs","byte_start":186,"byte_end":191,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{BaseShape, ShapeId},","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_block_type.rs","byte_start":219,"byte_end":224,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    state::RenderMode,","highlight_start":5,"highlight_end":10}],"label":"could not find `state` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_block_type.rs","byte_start":322,"byte_end":328,"line_start":14,"line_end":14,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block_type.rs:7:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::round_to_grid,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{BaseShape, ShapeId},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     state::RenderMode,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `state` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/move_label.rs","byte_start":11,"byte_end":17,"line_start":1,"line_end":1,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::{RouteRenderMode, render_route_label_at, route_text_color};","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_label.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::{RouteRenderMode, render_route_label_at, route_text_color};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_label.rs","byte_start":229,"byte_end":234,"line_start":7,"line_end":7,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_label.rs:7:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/move_label.rs","byte_start":90,"byte_end":95,"line_start":2,"line_end":2,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_label.rs:2:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_label.rs","byte_start":309,"byte_end":315,"line_start":11,"line_end":11,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_label.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::widget`","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":"crates/tools/src/move_label.rs","byte_start":309,"byte_end":315,"line_start":11,"line_end":11,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_label.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":134,"byte_end":138,"line_start":6,"line_end":6,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    edit::geometry::PinMove,","highlight_start":5,"highlight_end":9}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::geometry::PinMove,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/move_multi_pin.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":200,"byte_end":205,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::pin::PinSide,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::pin::PinSide,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":265,"byte_end":270,"line_start":11,"line_end":11,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":431,"byte_end":437,"line_start":17,"line_end":17,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:17:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::state`, `crate::theme`, `crate::tools`, `crate::widget`","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":"crates/tools/src/move_multi_pin.rs","byte_start":163,"byte_end":167,"line_start":7,"line_end":7,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::{PIN_PITCH, max_pin_slot},","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":225,"byte_end":230,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    state::RenderMode,","highlight_start":5,"highlight_end":10}],"label":"could not find `state` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":248,"byte_end":253,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Role,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":265,"byte_end":270,"line_start":11,"line_end":11,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":431,"byte_end":437,"line_start":17,"line_end":17,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::state`, `crate::theme`, `crate::tools`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:7:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::{PIN_PITCH, max_pin_slot},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::pin::PinSide,\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     state::RenderMode,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `state` in the crate root\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Role,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/move_pin.rs","byte_start":11,"byte_end":17,"line_start":1,"line_end":1,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::{LabelPass, RouteRenderMode, render_route};","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::{LabelPass, RouteRenderMode, render_route};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_pin.rs","byte_start":191,"byte_end":195,"line_start":7,"line_end":7,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    edit::geometry::PinMove,","highlight_start":5,"highlight_end":9}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:7:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::geometry::PinMove,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/move_pin.rs","byte_start":74,"byte_end":79,"line_start":2,"line_end":2,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:2:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m2\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_pin.rs","byte_start":257,"byte_end":262,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{PinLocation, ShapeId, pin::PinSide},","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{PinLocation, ShapeId, pin::PinSide},\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_pin.rs","byte_start":329,"byte_end":334,"line_start":11,"line_end":11,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_pin.rs","byte_start":444,"byte_end":450,"line_start":15,"line_end":15,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:15:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::widget`","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":"crates/tools/src/move_pin.rs","byte_start":220,"byte_end":224,"line_start":8,"line_end":8,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::{PIN_PITCH, max_pin_slot},","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_pin.rs","byte_start":257,"byte_end":262,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{PinLocation, ShapeId, pin::PinSide},","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_pin.rs","byte_start":306,"byte_end":311,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    state::RenderMode,","highlight_start":5,"highlight_end":10}],"label":"could not find `state` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_pin.rs","byte_start":444,"byte_end":450,"line_start":15,"line_end":15,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:8:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::{PIN_PITCH, max_pin_slot},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{PinLocation, ShapeId, pin::PinSide},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     state::RenderMode,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `state` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/move_title.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_title.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_title.rs","byte_start":257,"byte_end":262,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_title.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_title.rs","byte_start":372,"byte_end":378,"line_start":15,"line_end":15,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_title.rs:15:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::render`, `crate::shape`, `crate::state`, `crate::widget`","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":"crates/tools/src/move_title.rs","byte_start":137,"byte_end":141,"line_start":6,"line_end":6,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::round_to_grid,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_title.rs","byte_start":162,"byte_end":168,"line_start":7,"line_end":7,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    render::{clamp_label_offset, label_side_for_y},","highlight_start":5,"highlight_end":11}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_title.rs","byte_start":214,"byte_end":219,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_title.rs","byte_start":234,"byte_end":239,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    state::RenderMode,","highlight_start":5,"highlight_end":10}],"label":"could not find `state` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/move_title.rs","byte_start":372,"byte_end":378,"line_start":15,"line_end":15,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::render`, `crate::shape`, `crate::state`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_title.rs:6:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::round_to_grid,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     render::{clamp_label_offset, label_side_for_y},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     state::RenderMode,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `state` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":117,"byte_end":121,"line_start":5,"line_end":5,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"use crate::edit::naming::Authoring;","highlight_start":12,"highlight_end":16}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:5:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::naming::Authoring;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/multi_pin_select.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":176,"byte_end":181,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":289,"byte_end":295,"line_start":13,"line_end":13,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{drawing::Drawing, hit_target::HitTarget},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:13:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{drawing::Drawing, hit_target::HitTarget},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::theme`, `crate::tools`","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":"crates/tools/src/multi_pin_select.rs","byte_start":159,"byte_end":164,"line_start":7,"line_end":7,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Role,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":176,"byte_end":181,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::theme`, `crate::tools`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:7:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Role,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":137,"byte_end":141,"line_start":5,"line_end":5,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"use crate::edit::naming::Authoring;","highlight_start":12,"highlight_end":16}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:5:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::naming::Authoring;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/multi_select.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":285,"byte_end":290,"line_start":11,"line_end":11,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":458,"byte_end":464,"line_start":17,"line_end":17,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:17:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::theme`, `crate::tools`, `crate::widget`","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":"crates/tools/src/multi_select.rs","byte_start":179,"byte_end":183,"line_start":7,"line_end":7,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::{GROUP_SELECTION_PAD, snap_offset},","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/multi_select.rs","byte_start":225,"byte_end":230,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/multi_select.rs","byte_start":245,"byte_end":250,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    state::RenderMode,","highlight_start":5,"highlight_end":10}],"label":"could not find `state` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/multi_select.rs","byte_start":268,"byte_end":273,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Role,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/multi_select.rs","byte_start":285,"byte_end":290,"line_start":11,"line_end":11,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/multi_select.rs","byte_start":458,"byte_end":464,"line_start":17,"line_end":17,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::theme`, `crate::tools`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:7:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::{GROUP_SELECTION_PAD, snap_offset},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     state::RenderMode,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `state` in the crate root\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Role,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/new_area.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_area.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_area.rs","byte_start":183,"byte_end":188,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_area.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_area.rs","byte_start":284,"byte_end":290,"line_start":13,"line_end":13,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_area.rs:13:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::theme`, `crate::tools`","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":"crates/tools/src/new_area.rs","byte_start":145,"byte_end":149,"line_start":6,"line_end":6,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::GRID_SIZE,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/new_area.rs","byte_start":166,"byte_end":171,"line_start":7,"line_end":7,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Role,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/new_area.rs","byte_start":183,"byte_end":188,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::theme`, `crate::tools`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_area.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::GRID_SIZE,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Role,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/new_block.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_block.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_block.rs","byte_start":203,"byte_end":208,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_block.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_block.rs","byte_start":304,"byte_end":310,"line_start":14,"line_end":14,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_block.rs:14:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::theme`, `crate::tools`","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":"crates/tools/src/new_block.rs","byte_start":145,"byte_end":149,"line_start":6,"line_end":6,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::GRID_SIZE,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/new_block.rs","byte_start":166,"byte_end":171,"line_start":7,"line_end":7,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/new_block.rs","byte_start":186,"byte_end":191,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Role,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/new_block.rs","byte_start":203,"byte_end":208,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::theme`, `crate::tools`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_block.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::GRID_SIZE,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Role,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/new_image.rs","byte_start":168,"byte_end":173,"line_start":8,"line_end":8,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_image.rs:8:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":237,"byte_end":242,"line_start":12,"line_end":12,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_image.rs:12:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m12\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":352,"byte_end":358,"line_start":17,"line_end":17,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_image.rs:17:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::theme`","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":"crates/tools/src/new_image.rs","byte_start":199,"byte_end":203,"line_start":10,"line_end":10,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::GRID_SIZE,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/new_image.rs","byte_start":220,"byte_end":225,"line_start":11,"line_end":11,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Role,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::theme`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_image.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::GRID_SIZE,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Role,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::progress`","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":"crates/tools/src/new_pin.rs","byte_start":721,"byte_end":729,"line_start":19,"line_end":19,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":"use crate::progress::Progress;","highlight_start":12,"highlight_end":20}],"label":"could not find `progress` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::progress`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_pin.rs:19:12\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::progress::Progress;\n   \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `progress` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_pin.rs","byte_start":851,"byte_end":856,"line_start":22,"line_end":22,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{BaseShape, BlockShape, PinLocation, pin::PinSide},","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_pin.rs:22:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m22\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{BaseShape, BlockShape, PinLocation, pin::PinSide},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::theme`","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":"crates/tools/src/new_pin.rs","byte_start":758,"byte_end":762,"line_start":21,"line_end":21,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::{GRID_SIZE, HIT_RADIUS, PIN_PITCH, PIN_TOP_MARGIN, PORT_RADIUS, ROUTE_HIT_MARGIN},","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/new_pin.rs","byte_start":851,"byte_end":856,"line_start":22,"line_end":22,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{BaseShape, BlockShape, PinLocation, pin::PinSide},","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/new_pin.rs","byte_start":914,"byte_end":919,"line_start":23,"line_end":23,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::{Role, Style},","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::theme`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_pin.rs:21:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m21\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::{GRID_SIZE, HIT_RADIUS, PIN_PITCH, PIN_TOP_MARGIN, PORT_RADIUS, ROUTE_HIT_MARGIN},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m22\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{BaseShape, BlockShape, PinLocation, pin::PinSide},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m23\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::{Role, Style},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/new_pin.rs","byte_start":1159,"byte_end":1165,"line_start":28,"line_end":28,"column_start":23,"column_end":29,"is_primary":true,"text":[{"text":"pub(crate) use crate::render::{NEW_PIN_ANIM_TIME, NEW_PIN_GROW_RANGE, NEW_PIN_INACTIVE_SCALE};","highlight_start":23,"highlight_end":29}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_pin.rs:28:23\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m28\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub(crate) use crate::render::{NEW_PIN_ANIM_TIME, NEW_PIN_GROW_RANGE, NEW_PIN_INACTIVE_SCALE};\n   \u001b[1m\u001b[94m|\u001b[0m                       \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/rename_block_type.rs","byte_start":113,"byte_end":118,"line_start":6,"line_end":6,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_block_type.rs:6:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_block_type.rs","byte_start":204,"byte_end":209,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_block_type.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_block_type.rs","byte_start":359,"byte_end":365,"line_start":16,"line_end":16,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_block_type.rs:16:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`","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":"crates/tools/src/rename_block_type.rs","byte_start":144,"byte_end":148,"line_start":8,"line_end":8,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::TITLE_TEXT_SIZE,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/rename_block_type.rs","byte_start":171,"byte_end":176,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{BaseShape, ShapeId},","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_block_type.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::TITLE_TEXT_SIZE,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{BaseShape, ShapeId},\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/rename_pin.rs","byte_start":119,"byte_end":125,"line_start":6,"line_end":6,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::pin_text_location;","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:6:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::pin_text_location;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/rename_pin.rs","byte_start":157,"byte_end":162,"line_start":7,"line_end":7,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::{Role, Style};","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:7:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::{Role, Style};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":222,"byte_end":227,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":299,"byte_end":304,"line_start":14,"line_end":14,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:14:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":454,"byte_end":460,"line_start":20,"line_end":20,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:20:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m20\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`","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":"crates/tools/src/rename_pin.rs","byte_start":196,"byte_end":200,"line_start":9,"line_end":9,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::PORT_TEXT_SIZE,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/rename_pin.rs","byte_start":222,"byte_end":227,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:9:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::PORT_TEXT_SIZE,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/rename_route.rs","byte_start":129,"byte_end":134,"line_start":6,"line_end":6,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:6:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":187,"byte_end":192,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":267,"byte_end":273,"line_start":13,"line_end":13,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:13:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::grid`","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":"crates/tools/src/rename_route.rs","byte_start":160,"byte_end":164,"line_start":8,"line_end":8,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::ROUTE_TEXT_SIZE,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::grid`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::ROUTE_TEXT_SIZE,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/rename_title.rs","byte_start":81,"byte_end":86,"line_start":5,"line_end":5,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:5:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_title.rs","byte_start":159,"byte_end":164,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_title.rs","byte_start":314,"byte_end":320,"line_start":15,"line_end":15,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:15:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`","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":"crates/tools/src/rename_title.rs","byte_start":112,"byte_end":116,"line_start":7,"line_end":7,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::TITLE_TEXT_SIZE,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/rename_title.rs","byte_start":139,"byte_end":144,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:7:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::TITLE_TEXT_SIZE,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":119,"byte_end":123,"line_start":7,"line_end":7,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    edit::naming::Authoring,","highlight_start":5,"highlight_end":9}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:7:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::naming::Authoring,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/resize_block.rs","byte_start":80,"byte_end":85,"line_start":5,"line_end":5,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::{Role, Style};","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:5:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::{Role, Style};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":221,"byte_end":226,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":583,"byte_end":588,"line_start":19,"line_end":19,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:19:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":1032,"byte_end":1038,"line_start":31,"line_end":31,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing, hit_target::HitTarget},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:31:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m31\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing, hit_target::HitTarget},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::tools`, `crate::widget`","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":"crates/tools/src/resize_block.rs","byte_start":148,"byte_end":152,"line_start":8,"line_end":8,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::{GRID_SIZE, HIT_RADIUS, PIN_PITCH, PORT_RADIUS, artwork_rect},","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/resize_block.rs","byte_start":221,"byte_end":226,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::{","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/resize_block.rs","byte_start":546,"byte_end":551,"line_start":18,"line_end":18,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    state::{RenderMode, ResizeMode},","highlight_start":5,"highlight_end":10}],"label":"could not find `state` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/resize_block.rs","byte_start":583,"byte_end":588,"line_start":19,"line_end":19,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/resize_block.rs","byte_start":1032,"byte_end":1038,"line_start":31,"line_end":31,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{DrawingPasses, drawing::Drawing, hit_target::HitTarget},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::state`, `crate::tools`, `crate::widget`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:8:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::{GRID_SIZE, HIT_RADIUS, PIN_PITCH, PORT_RADIUS, artwork_rect},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m 9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     state::{RenderMode, ResizeMode},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `state` in the crate root\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m31\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{DrawingPasses, drawing::Drawing, hit_target::HitTarget},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/retype_pin.rs","byte_start":111,"byte_end":116,"line_start":6,"line_end":6,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::{Role, Style};","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/retype_pin.rs:6:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::{Role, Style};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/retype_pin.rs","byte_start":196,"byte_end":201,"line_start":10,"line_end":10,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/retype_pin.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/retype_pin.rs","byte_start":351,"byte_end":357,"line_start":16,"line_end":16,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/retype_pin.rs:16:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`","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":"crates/tools/src/retype_pin.rs","byte_start":150,"byte_end":154,"line_start":8,"line_end":8,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::PORT_TEXT_SIZE,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/retype_pin.rs","byte_start":176,"byte_end":181,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/retype_pin.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::PORT_TEXT_SIZE,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_start.rs","byte_start":615,"byte_end":620,"line_start":17,"line_end":17,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_start.rs:17:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_start.rs","byte_start":888,"byte_end":894,"line_start":25,"line_end":25,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_start.rs:25:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m25\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::theme`","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":"crates/tools/src/route_start.rs","byte_start":566,"byte_end":570,"line_start":15,"line_end":15,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::PORT_RADIUS,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/route_start.rs","byte_start":589,"byte_end":594,"line_start":16,"line_end":16,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::{Role, Style},","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::theme`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_start.rs:15:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::PORT_RADIUS,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::{Role, Style},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/route_tool.rs","byte_start":203,"byte_end":209,"line_start":8,"line_end":8,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::render_path_with_chamfered_corners;","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:8:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::render_path_with_chamfered_corners;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":289,"byte_end":293,"line_start":11,"line_end":11,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    edit::create::PathOrdinal,","highlight_start":5,"highlight_end":9}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:11:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::create::PathOrdinal,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/route_tool.rs","byte_start":258,"byte_end":263,"line_start":9,"line_end":9,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:9:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":422,"byte_end":427,"line_start":15,"line_end":15,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:15:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":731,"byte_end":737,"line_start":26,"line_end":26,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:26:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::theme`, `crate::tools`","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":"crates/tools/src/route_tool.rs","byte_start":320,"byte_end":324,"line_start":12,"line_end":12,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::{PORT_RADIUS, grid_point, px_point, snap_to_grid},","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/route_tool.rs","byte_start":381,"byte_end":386,"line_start":13,"line_end":13,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::PinLocation,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/route_tool.rs","byte_start":405,"byte_end":410,"line_start":14,"line_end":14,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    theme::Role,","highlight_start":5,"highlight_end":10}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/route_tool.rs","byte_start":422,"byte_end":427,"line_start":15,"line_end":15,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::theme`, `crate::tools`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:12:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m12\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::{PORT_RADIUS, grid_point, px_point, snap_to_grid},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::PinLocation,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     theme::Role,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":96,"byte_end":100,"line_start":4,"line_end":4,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"use crate::edit::naming::Authoring;","highlight_start":12,"highlight_end":16}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:4:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::edit::naming::Authoring;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":138,"byte_end":143,"line_start":6,"line_end":6,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":229,"byte_end":235,"line_start":10,"line_end":10,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{drawing::Drawing, hit_target::HitTarget},","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{drawing::Drawing, hit_target::HitTarget},\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/select_pin.rs","byte_start":11,"byte_end":16,"line_start":1,"line_end":1,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:1:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m1\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::render`","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":"crates/tools/src/select_tool.rs","byte_start":74,"byte_end":80,"line_start":5,"line_end":5,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":"use crate::render::{LabelPass, RouteRenderMode, render_route};","highlight_start":12,"highlight_end":18}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::render`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_tool.rs:5:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::render::{LabelPass, RouteRenderMode, render_route};\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `crate::theme`","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":"crates/tools/src/select_tool.rs","byte_start":137,"byte_end":142,"line_start":6,"line_end":6,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":12,"highlight_end":17}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `crate::theme`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_tool.rs:6:12\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use crate::theme::Style;\n  \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `theme` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_tool.rs","byte_start":188,"byte_end":193,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_tool.rs:9:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_tool.rs","byte_start":542,"byte_end":548,"line_start":18,"line_end":18,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::{","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_tool.rs:18:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::shape`, `crate::tools`","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":"crates/tools/src/select_tool.rs","byte_start":168,"byte_end":173,"line_start":8,"line_end":8,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/select_tool.rs","byte_start":188,"byte_end":193,"line_start":9,"line_end":9,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::shape`, `crate::tools`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_tool.rs:8:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m8\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/selection_bounds.rs","byte_start":386,"byte_end":391,"line_start":10,"line_end":10,"column_start":52,"column_end":57,"is_primary":true,"text":[{"text":"    grid::GRID_SIZE, shape::ShapeId, theme::Style, tools::tool::Deletable, widget::drawing::Drawing,","highlight_start":52,"highlight_end":57}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/selection_bounds.rs:10:52\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::GRID_SIZE, shape::ShapeId, theme::Style, tools::tool::Deletable, widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m                                                    \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/selection_bounds.rs","byte_start":410,"byte_end":416,"line_start":10,"line_end":10,"column_start":76,"column_end":82,"is_primary":true,"text":[{"text":"    grid::GRID_SIZE, shape::ShapeId, theme::Style, tools::tool::Deletable, widget::drawing::Drawing,","highlight_start":76,"highlight_end":82}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/selection_bounds.rs:10:76\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::GRID_SIZE, shape::ShapeId, theme::Style, tools::tool::Deletable, widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m                                                                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::grid`, `crate::shape`, `crate::theme`","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":"crates/tools/src/selection_bounds.rs","byte_start":339,"byte_end":343,"line_start":10,"line_end":10,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    grid::GRID_SIZE, shape::ShapeId, theme::Style, tools::tool::Deletable, widget::drawing::Drawing,","highlight_start":5,"highlight_end":9}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/selection_bounds.rs","byte_start":356,"byte_end":361,"line_start":10,"line_end":10,"column_start":22,"column_end":27,"is_primary":true,"text":[{"text":"    grid::GRID_SIZE, shape::ShapeId, theme::Style, tools::tool::Deletable, widget::drawing::Drawing,","highlight_start":22,"highlight_end":27}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/selection_bounds.rs","byte_start":372,"byte_end":377,"line_start":10,"line_end":10,"column_start":38,"column_end":43,"is_primary":true,"text":[{"text":"    grid::GRID_SIZE, shape::ShapeId, theme::Style, tools::tool::Deletable, widget::drawing::Drawing,","highlight_start":38,"highlight_end":43}],"label":"could not find `theme` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::grid`, `crate::shape`, `crate::theme`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/selection_bounds.rs:10:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     grid::GRID_SIZE, shape::ShapeId, theme::Style, tools::tool::Deletable, widget::drawing::Drawing,\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[91mcould not find `theme` in the crate root\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[91mcould not find `shape` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/stamp.rs","byte_start":774,"byte_end":779,"line_start":18,"line_end":18,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/stamp.rs:18:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/stamp.rs","byte_start":923,"byte_end":929,"line_start":24,"line_end":24,"column_start":5,"column_end":11,"is_primary":true,"text":[{"text":"    widget::drawing::Drawing,","highlight_start":5,"highlight_end":11}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/stamp.rs:24:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m24\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     widget::drawing::Drawing,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved imports `crate::edit`, `crate::shape`, `crate::tools`","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":"crates/tools/src/stamp.rs","byte_start":736,"byte_end":740,"line_start":16,"line_end":16,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    edit::create,","highlight_start":5,"highlight_end":9}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/stamp.rs","byte_start":754,"byte_end":759,"line_start":17,"line_end":17,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    shape::ShapeId,","highlight_start":5,"highlight_end":10}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"crates/tools/src/stamp.rs","byte_start":774,"byte_end":779,"line_start":18,"line_end":18,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":"    tools::{","highlight_start":5,"highlight_end":10}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved imports `crate::edit`, `crate::shape`, `crate::tools`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/stamp.rs:16:5\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     edit::create,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     shape::ShapeId,\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\u001b[1m\u001b[94m18\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     tools::{\n   \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `blockworx_router` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":143,"byte_end":159,"line_start":6,"line_end":6,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"use blockworx_router::{ClosedRouter, point::Point};","highlight_start":5,"highlight_end":21}],"label":"use of unresolved module or unlinked crate `blockworx_router`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"there is a crate or module with a similar name","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":143,"byte_end":159,"line_start":6,"line_end":6,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"use blockworx_router::{ClosedRouter, point::Point};","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":"blockworx_editor","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `blockworx_router` in this scope\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use blockworx_router::{ClosedRouter, point::Point};\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `blockworx_router`\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: there is a crate or module with a similar name\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[91m- \u001b[0muse \u001b[91mblockworx_router\u001b[0m::{ClosedRouter, point::Point};\n\u001b[1m\u001b[94m6\u001b[0m \u001b[92m+ \u001b[0muse \u001b[92mblockworx_editor\u001b[0m::{ClosedRouter, point::Point};\n  \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"unresolved import `blockworx_router`","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":"crates/tools/src/route_tool.rs","byte_start":143,"byte_end":159,"line_start":6,"line_end":6,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"use blockworx_router::{ClosedRouter, point::Point};","highlight_start":5,"highlight_end":21}],"label":"use of unresolved module or unlinked crate `blockworx_router`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"there is a crate or module with a similar name","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":143,"byte_end":159,"line_start":6,"line_end":6,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"use blockworx_router::{ClosedRouter, point::Point};","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":"blockworx_editor","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m: unresolved import `blockworx_router`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:6:5\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use blockworx_router::{ClosedRouter, point::Point};\n  \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `blockworx_router`\u001b[0m\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: there is a crate or module with a similar name\n  \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m6\u001b[0m \u001b[91m- \u001b[0muse \u001b[91mblockworx_router\u001b[0m::{ClosedRouter, point::Point};\n\u001b[1m\u001b[94m6\u001b[0m \u001b[92m+ \u001b[0muse \u001b[92mblockworx_editor\u001b[0m::{ClosedRouter, point::Point};\n  \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `history` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":1545,"byte_end":1552,"line_start":39,"line_end":39,"column_start":29,"column_end":36,"is_primary":true,"text":[{"text":"    pub undo: Option<crate::history::Kind>,","highlight_start":29,"highlight_end":36}],"label":"could not find `history` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `history` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:39:29\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m39\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub undo: Option<crate::history::Kind>,\n   \u001b[1m\u001b[94m|\u001b[0m                             \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `history` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `history` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":1589,"byte_end":1596,"line_start":40,"line_end":40,"column_start":29,"column_end":36,"is_primary":true,"text":[{"text":"    pub redo: Option<crate::history::Kind>,","highlight_start":29,"highlight_end":36}],"label":"could not find `history` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `history` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:40:29\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m40\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     pub redo: Option<crate::history::Kind>,\n   \u001b[1m\u001b[94m|\u001b[0m                             \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `history` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":13717,"byte_end":13721,"line_start":354,"line_end":354,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    egui::KeyboardShortcut::new(egui::Modifiers::COMMAND, key)","highlight_start":5,"highlight_end":9}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:354:5\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m354\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     egui::KeyboardShortcut::new(egui::Modifiers::COMMAND, key)\n    \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":13745,"byte_end":13749,"line_start":354,"line_end":354,"column_start":33,"column_end":37,"is_primary":true,"text":[{"text":"    egui::KeyboardShortcut::new(egui::Modifiers::COMMAND, key)","highlight_start":33,"highlight_end":37}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:354:33\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m354\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     egui::KeyboardShortcut::new(egui::Modifiers::COMMAND, key)\n    \u001b[1m\u001b[94m|\u001b[0m                                 \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":13925,"byte_end":13929,"line_start":359,"line_end":359,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":"    egui::KeyboardShortcut::new(egui::Modifiers::NONE, key)","highlight_start":5,"highlight_end":9}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:359:5\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m359\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     egui::KeyboardShortcut::new(egui::Modifiers::NONE, key)\n    \u001b[1m\u001b[94m|\u001b[0m     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":13953,"byte_end":13957,"line_start":359,"line_end":359,"column_start":33,"column_end":37,"is_primary":true,"text":[{"text":"    egui::KeyboardShortcut::new(egui::Modifiers::NONE, key)","highlight_start":33,"highlight_end":37}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:359:33\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m359\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     egui::KeyboardShortcut::new(egui::Modifiers::NONE, key)\n    \u001b[1m\u001b[94m|\u001b[0m                                 \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":14611,"byte_end":14615,"line_start":372,"line_end":372,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (digit(egui::Key::Num1), CommandId::Arm(ToolName::Select)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:372:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m372\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (digit(egui::Key::Num1), CommandId::Arm(ToolName::Select)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":14675,"byte_end":14679,"line_start":373,"line_end":373,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::E), CommandId::Arm(ToolName::Select)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:373:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m373\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::E), CommandId::Arm(ToolName::Select)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":14736,"byte_end":14740,"line_start":374,"line_end":374,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (digit(egui::Key::Num2), CommandId::Arm(ToolName::NewBlock)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:374:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m374\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (digit(egui::Key::Num2), CommandId::Arm(ToolName::NewBlock)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":14802,"byte_end":14806,"line_start":375,"line_end":375,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::B), CommandId::Arm(ToolName::NewBlock)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:375:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m375\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::B), CommandId::Arm(ToolName::NewBlock)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":14865,"byte_end":14869,"line_start":376,"line_end":376,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (digit(egui::Key::Num3), CommandId::Arm(ToolName::NewArea)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:376:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m376\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (digit(egui::Key::Num3), CommandId::Arm(ToolName::NewArea)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":14930,"byte_end":14934,"line_start":377,"line_end":377,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::M), CommandId::Arm(ToolName::NewArea)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:377:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m377\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::M), CommandId::Arm(ToolName::NewArea)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":14992,"byte_end":14996,"line_start":378,"line_end":378,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (digit(egui::Key::Num4), CommandId::Arm(ToolName::AddPort)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:378:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m378\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (digit(egui::Key::Num4), CommandId::Arm(ToolName::AddPort)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15057,"byte_end":15061,"line_start":379,"line_end":379,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::P), CommandId::Arm(ToolName::AddPort)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:379:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m379\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::P), CommandId::Arm(ToolName::AddPort)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15119,"byte_end":15123,"line_start":380,"line_end":380,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (digit(egui::Key::Num5), CommandId::Arm(ToolName::NewImage)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:380:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m380\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (digit(egui::Key::Num5), CommandId::Arm(ToolName::NewImage)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15185,"byte_end":15189,"line_start":381,"line_end":381,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::I), CommandId::Arm(ToolName::NewImage)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:381:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m381\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::I), CommandId::Arm(ToolName::NewImage)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15248,"byte_end":15252,"line_start":382,"line_end":382,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (digit(egui::Key::Num6), CommandId::Arm(ToolName::AddText)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:382:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m382\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (digit(egui::Key::Num6), CommandId::Arm(ToolName::AddText)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15313,"byte_end":15317,"line_start":383,"line_end":383,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::T), CommandId::Arm(ToolName::AddText)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:383:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m383\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::T), CommandId::Arm(ToolName::AddText)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15375,"byte_end":15379,"line_start":384,"line_end":384,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (digit(egui::Key::Num7), CommandId::Arm(ToolName::Route)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:384:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m384\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (digit(egui::Key::Num7), CommandId::Arm(ToolName::Route)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15438,"byte_end":15442,"line_start":385,"line_end":385,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::R), CommandId::Arm(ToolName::Route)),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:385:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m385\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::R), CommandId::Arm(ToolName::Route)),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15644,"byte_end":15648,"line_start":388,"line_end":388,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::Equals), CommandId::ZoomIn),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:388:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m388\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::Equals), CommandId::ZoomIn),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15695,"byte_end":15699,"line_start":389,"line_end":389,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::Plus), CommandId::ZoomIn),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:389:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m389\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::Plus), CommandId::ZoomIn),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15744,"byte_end":15748,"line_start":390,"line_end":390,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::Minus), CommandId::ZoomOut),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:390:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m390\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::Minus), CommandId::ZoomOut),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15795,"byte_end":15799,"line_start":391,"line_end":391,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":"    (chord(egui::Key::Num0), CommandId::FitView),","highlight_start":12,"highlight_end":16}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:391:12\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m391\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (chord(egui::Key::Num0), CommandId::FitView),\n    \u001b[1m\u001b[94m|\u001b[0m            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find `history` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":31142,"byte_end":31149,"line_start":768,"line_end":768,"column_start":65,"column_end":72,"is_primary":true,"text":[{"text":"            CommandId::Undo => self.history.undo == Some(crate::history::Kind::Doc),","highlight_start":65,"highlight_end":72}],"label":"could not find `history` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `history` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:768:65\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m768\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             CommandId::Undo => self.history.undo == Some(crate::history::Kind::Doc),\n    \u001b[1m\u001b[94m|\u001b[0m                                                                 \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `history` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `history` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":31227,"byte_end":31234,"line_start":769,"line_end":769,"column_start":65,"column_end":72,"is_primary":true,"text":[{"text":"            CommandId::Redo => self.history.redo == Some(crate::history::Kind::Doc),","highlight_start":65,"highlight_end":72}],"label":"could not find `history` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `history` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:769:65\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m769\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             CommandId::Redo => self.history.redo == Some(crate::history::Kind::Doc),\n    \u001b[1m\u001b[94m|\u001b[0m                                                                 \u001b[1m\u001b[91m^^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `history` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `path` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/tool.rs","byte_start":9515,"byte_end":9519,"line_start":234,"line_end":234,"column_start":21,"column_end":25,"is_primary":true,"text":[{"text":"    GoToPath(crate::path::BlockPath),","highlight_start":21,"highlight_end":25}],"label":"unresolved import","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar path exists","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/tool.rs","byte_start":9515,"byte_end":9519,"line_start":234,"line_end":234,"column_start":21,"column_end":25,"is_primary":true,"text":[{"text":"    GoToPath(crate::path::BlockPath),","highlight_start":21,"highlight_end":25}],"label":null,"suggested_replacement":"std::path","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `path` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:234:21\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m234\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     GoToPath(crate::path::BlockPath),\n    \u001b[1m\u001b[94m|\u001b[0m                     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91munresolved import\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar path exists\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m234\u001b[0m \u001b[1m\u001b[94m| \u001b[0m    GoToPath(crate::\u001b[92mstd::\u001b[0mpath::BlockPath),\n    \u001b[1m\u001b[94m|\u001b[0m                     \u001b[92m+++++\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `export` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/tool.rs","byte_start":11989,"byte_end":11995,"line_start":291,"line_end":291,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"        format: crate::export::ExportFormat,","highlight_start":24,"highlight_end":30}],"label":"could not find `export` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `export` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:291:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m291\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         format: crate::export::ExportFormat,\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `export` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `file` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/tool.rs","byte_start":12959,"byte_end":12963,"line_start":313,"line_end":313,"column_start":21,"column_end":25,"is_primary":true,"text":[{"text":"    PickFile(crate::file::FileRequest),","highlight_start":21,"highlight_end":25}],"label":"could not find `file` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `file` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/tool.rs:313:21\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m313\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     PickFile(crate::file::FileRequest),\n    \u001b[1m\u001b[94m|\u001b[0m                     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `file` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_port.rs","byte_start":1271,"byte_end":1277,"line_start":42,"line_end":42,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_port.rs:42:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m42\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_port.rs","byte_start":2918,"byte_end":2922,"line_start":78,"line_end":78,"column_start":26,"column_end":30,"is_primary":true,"text":[{"text":"    let default = crate::edit::create::stamped_port(min);","highlight_start":26,"highlight_end":30}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_port.rs:78:26\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m78\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     let default = crate::edit::create::stamped_port(min);\n   \u001b[1m\u001b[94m|\u001b[0m                          \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/add_text.rs","byte_start":1172,"byte_end":1178,"line_start":39,"line_end":39,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/add_text.rs:39:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m39\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":10421,"byte_end":10427,"line_start":268,"line_end":268,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_route.rs:268:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m268\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":3047,"byte_end":3053,"line_start":86,"line_end":86,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::render_hidden(data, ShapeId::Text(id), painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:86:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m86\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::render_hidden(data, ShapeId::Text(id), painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":4079,"byte_end":4083,"line_start":109,"line_end":109,"column_start":37,"column_end":41,"is_primary":true,"text":[{"text":"            char_limit: Some(crate::grid::MAX_TEXT_BOX_CHARS),","highlight_start":37,"highlight_end":41}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:109:37\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m109\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             char_limit: Some(crate::grid::MAX_TEXT_BOX_CHARS),\n    \u001b[1m\u001b[94m|\u001b[0m                                     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":4206,"byte_end":4212,"line_start":112,"line_end":112,"column_start":31,"column_end":37,"is_primary":true,"text":[{"text":"            hint: Some(crate::render::ADD_TEXT_PLACEHOLDER),","highlight_start":31,"highlight_end":37}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:112:31\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m112\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             hint: Some(crate::render::ADD_TEXT_PLACEHOLDER),\n    \u001b[1m\u001b[94m|\u001b[0m                               \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/icon.rs","byte_start":1544,"byte_end":1550,"line_start":50,"line_end":50,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/icon.rs:50:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m50\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/icon.rs","byte_start":2909,"byte_end":2913,"line_start":79,"line_end":79,"column_start":36,"column_end":40,"is_primary":true,"text":[{"text":"                            crate::edit::lower::asset_within_limit(asset, \"the picked icon\")","highlight_start":36,"highlight_end":40}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/icon.rs:79:36\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m79\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   crate::edit::lower::asset_within_limit(asset, \"the picked icon\")\n   \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block.rs","byte_start":2677,"byte_end":2683,"line_start":78,"line_end":78,"column_start":32,"column_end":38,"is_primary":true,"text":[{"text":"                        crate::widget::alignment::snap_drag_offset(data, &[*shape], *delta_pos)","highlight_start":32,"highlight_end":38}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:78:32\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m78\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         crate::widget::alignment::snap_drag_offset(data, &[*shape], *delta_pos)\n   \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block.rs","byte_start":3841,"byte_end":3847,"line_start":110,"line_end":110,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:110:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m110\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block.rs","byte_start":4812,"byte_end":4818,"line_start":128,"line_end":128,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::widget::alignment::snap_drag_offset(data, &dragged_ids, raw)","highlight_start":28,"highlight_end":34}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:128:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m128\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::widget::alignment::snap_drag_offset(data, &dragged_ids, raw)\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block.rs","byte_start":5314,"byte_end":5320,"line_start":137,"line_end":137,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::widget::alignment::shape_drag_guides(data, &dragged_ids, guide_offset);","highlight_start":28,"highlight_end":34}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:137:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m137\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::widget::alignment::shape_drag_guides(data, &dragged_ids, guide_offset);\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block.rs","byte_start":6321,"byte_end":6327,"line_start":155,"line_end":155,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::alignment::draw_guides(&guides, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block.rs:155:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m155\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::alignment::draw_guides(&guides, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block_type.rs","byte_start":1843,"byte_end":1849,"line_start":51,"line_end":51,"column_start":29,"column_end":35,"is_primary":true,"text":[{"text":"                Some(crate::widget::drawing::LabelPlacement {","highlight_start":29,"highlight_end":35}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block_type.rs:51:29\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m51\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 Some(crate::widget::drawing::LabelPlacement {\n   \u001b[1m\u001b[94m|\u001b[0m                             \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block_type.rs","byte_start":1912,"byte_end":1918,"line_start":52,"line_end":52,"column_start":36,"column_end":42,"is_primary":true,"text":[{"text":"                    offset: crate::render::clamp_label_offset(bbox, text_w, proposed, Align::Min),","highlight_start":36,"highlight_end":42}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block_type.rs:52:36\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m52\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     offset: crate::render::clamp_label_offset(bbox, text_w, proposed, Align::Min),\n   \u001b[1m\u001b[94m|\u001b[0m                                    \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block_type.rs","byte_start":2068,"byte_end":2074,"line_start":54,"line_end":54,"column_start":32,"column_end":38,"is_primary":true,"text":[{"text":"                        crate::render::label_side_for_y(bbox, anchor.y + self.delta_pos.y)","highlight_start":32,"highlight_end":38}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block_type.rs:54:32\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         crate::render::label_side_for_y(bbox, anchor.y + self.delta_pos.y)\n   \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_block_type.rs","byte_start":2528,"byte_end":2534,"line_start":64,"line_end":64,"column_start":20,"column_end":26,"is_primary":true,"text":[{"text":"            crate::widget::display::widget(data, interaction, painter);","highlight_start":20,"highlight_end":26}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_block_type.rs:64:20\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m64\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_label.rs","byte_start":1681,"byte_end":1687,"line_start":61,"line_end":61,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_label.rs:61:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m61\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":2009,"byte_end":2014,"line_start":60,"line_end":60,"column_start":31,"column_end":36,"is_primary":true,"text":[{"text":"            let slot = crate::shape::pin::slot(pin);","highlight_start":31,"highlight_end":36}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:60:31\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m60\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             let slot = crate::shape::pin::slot(pin);\n   \u001b[1m\u001b[94m|\u001b[0m                               \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":5389,"byte_end":5395,"line_start":152,"line_end":152,"column_start":20,"column_end":26,"is_primary":true,"text":[{"text":"            crate::widget::display::widget(data, interaction, painter);","highlight_start":20,"highlight_end":26}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:152:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m152\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":5967,"byte_end":5973,"line_start":175,"line_end":175,"column_start":29,"column_end":35,"is_primary":true,"text":[{"text":"        let guides = crate::widget::alignment::pin_drag_guides(data, moves, pins);","highlight_start":29,"highlight_end":35}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:175:29\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m175\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         let guides = crate::widget::alignment::pin_drag_guides(data, moves, pins);\n    \u001b[1m\u001b[94m|\u001b[0m                             \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":7106,"byte_end":7112,"line_start":195,"line_end":195,"column_start":44,"column_end":50,"is_primary":true,"text":[{"text":"                        let paint = crate::render::PinPaint {","highlight_start":44,"highlight_end":50}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:195:44\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m195\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         let paint = crate::render::PinPaint {\n    \u001b[1m\u001b[94m|\u001b[0m                                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":7229,"byte_end":7235,"line_start":197,"line_end":197,"column_start":38,"column_end":44,"is_primary":true,"text":[{"text":"                            ..crate::render::PinPaint::default()","highlight_start":38,"highlight_end":44}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:197:38\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m197\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   ..crate::render::PinPaint::default()\n    \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":7432,"byte_end":7438,"line_start":201,"line_end":201,"column_start":40,"column_end":46,"is_primary":true,"text":[{"text":"                                crate::render::draw_pin(rect, pin, paint, p);","highlight_start":40,"highlight_end":46}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:201:40\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m201\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   crate::render::draw_pin(rect, pin, paint, p);\n    \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":7571,"byte_end":7577,"line_start":204,"line_end":204,"column_start":36,"column_end":42,"is_primary":true,"text":[{"text":"                            crate::render::draw_pin(rect, pin, paint, painter);","highlight_start":36,"highlight_end":42}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:204:36\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m204\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   crate::render::draw_pin(rect, pin, paint, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":8489,"byte_end":8494,"line_start":225,"line_end":225,"column_start":52,"column_end":57,"is_primary":true,"text":[{"text":"                        (to.offset as f32 - crate::shape::pin::slot(pin).offset as f32) * PIN_PITCH;","highlight_start":52,"highlight_end":57}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:225:52\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m225\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         (to.offset as f32 - crate::shape::pin::slot(pin).offset as f32) * PIN_PITCH;\n    \u001b[1m\u001b[94m|\u001b[0m                                                    \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":8578,"byte_end":8584,"line_start":226,"line_end":226,"column_start":40,"column_end":46,"is_primary":true,"text":[{"text":"                    let paint = crate::render::PinPaint {","highlight_start":40,"highlight_end":46}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:226:40\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m226\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     let paint = crate::render::PinPaint {\n    \u001b[1m\u001b[94m|\u001b[0m                                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":8795,"byte_end":8801,"line_start":231,"line_end":231,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::render::draw_pin(rect, pin, paint, painter);","highlight_start":28,"highlight_end":34}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:231:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m231\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::render::draw_pin(rect, pin, paint, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":9037,"byte_end":9043,"line_start":234,"line_end":234,"column_start":39,"column_end":45,"is_primary":true,"text":[{"text":"                    let dest = crate::render::PinExtent {","highlight_start":39,"highlight_end":45}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:234:39\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m234\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     let dest = crate::render::PinExtent {\n    \u001b[1m\u001b[94m|\u001b[0m                                       \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_multi_pin.rs","byte_start":9875,"byte_end":9881,"line_start":256,"line_end":256,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::alignment::draw_guides(&guides, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_multi_pin.rs:256:16\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m256\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::alignment::draw_guides(&guides, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_pin.rs","byte_start":3593,"byte_end":3599,"line_start":105,"line_end":105,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:105:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m105\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_pin.rs","byte_start":5680,"byte_end":5686,"line_start":146,"line_end":146,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::widget::display::widget(data, interaction, painter);","highlight_start":28,"highlight_end":34}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:146:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m146\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_pin.rs","byte_start":6437,"byte_end":6443,"line_start":159,"line_end":159,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::widget::alignment::pin_drag_guides(","highlight_start":28,"highlight_end":34}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:159:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m159\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::widget::alignment::pin_drag_guides(\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_pin.rs","byte_start":8559,"byte_end":8565,"line_start":206,"line_end":206,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::widget::alignment::draw_guides(guides, painter);","highlight_start":28,"highlight_end":34}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_pin.rs:206:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m206\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::widget::alignment::draw_guides(guides, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_title.rs","byte_start":849,"byte_end":855,"line_start":36,"line_end":36,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_title.rs:36:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m36\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_title.rs","byte_start":2351,"byte_end":2357,"line_start":62,"line_end":62,"column_start":37,"column_end":43,"is_primary":true,"text":[{"text":"                        Some(crate::widget::drawing::LabelPlacement {","highlight_start":37,"highlight_end":43}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_title.rs:62:37\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         Some(crate::widget::drawing::LabelPlacement {\n   \u001b[1m\u001b[94m|\u001b[0m                                     \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/move_title.rs","byte_start":3092,"byte_end":3098,"line_start":75,"line_end":75,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::widget::display::widget(data, interaction, painter);","highlight_start":28,"highlight_end":34}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/move_title.rs:75:28\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m75\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":2736,"byte_end":2742,"line_start":80,"line_end":80,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:80:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m80\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":8259,"byte_end":8265,"line_start":204,"line_end":204,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:204:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m204\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":8954,"byte_end":8960,"line_start":219,"line_end":219,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:219:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m219\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":9728,"byte_end":9734,"line_start":234,"line_end":234,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::widget::alignment::shape_drag_guides(data, &dragged_ids, offset);","highlight_start":28,"highlight_end":34}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:234:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m234\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::widget::alignment::shape_drag_guides(data, &dragged_ids, offset);\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":10437,"byte_end":10443,"line_start":247,"line_end":247,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::alignment::draw_guides(&guides, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:247:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m247\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::alignment::draw_guides(&guides, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":11011,"byte_end":11017,"line_start":264,"line_end":264,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::render::draw_box_outline(","highlight_start":16,"highlight_end":22}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:264:16\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m264\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::render::draw_box_outline(\n    \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_area.rs","byte_start":904,"byte_end":910,"line_start":35,"line_end":35,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_area.rs:35:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m35\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_block.rs","byte_start":1118,"byte_end":1124,"line_start":44,"line_end":44,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_block.rs:44:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m44\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":2121,"byte_end":2127,"line_start":64,"line_end":64,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_image.rs:64:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m64\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":6717,"byte_end":6721,"line_start":180,"line_end":180,"column_start":20,"column_end":24,"is_primary":true,"text":[{"text":"        if !crate::edit::lower::asset_within_limit(image, \"the picked image\") {","highlight_start":20,"highlight_end":24}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_image.rs:180:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m180\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         if !crate::edit::lower::asset_within_limit(image, \"the picked image\") {\n    \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_block_type.rs","byte_start":1910,"byte_end":1916,"line_start":58,"line_end":58,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::render::clamped_block_type_position(block.gui_rect(), &type_label, text_width);","highlight_start":16,"highlight_end":22}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_block_type.rs:58:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m58\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::render::clamped_block_type_position(block.gui_rect(), &type_label, text_width);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_block_type.rs","byte_start":2368,"byte_end":2374,"line_start":73,"line_end":73,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_block_type.rs:73:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m73\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_block_type.rs","byte_start":3835,"byte_end":3839,"line_start":108,"line_end":108,"column_start":37,"column_end":41,"is_primary":true,"text":[{"text":"            char_limit: Some(crate::grid::MAX_LABEL_CHARS),","highlight_start":37,"highlight_end":41}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_block_type.rs:108:37\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m108\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             char_limit: Some(crate::grid::MAX_LABEL_CHARS),\n    \u001b[1m\u001b[94m|\u001b[0m                                     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_block_type.rs","byte_start":3958,"byte_end":3964,"line_start":111,"line_end":111,"column_start":31,"column_end":37,"is_primary":true,"text":[{"text":"            hint: Some(crate::render::ADD_TYPE_PLACEHOLDER),","highlight_start":31,"highlight_end":37}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_block_type.rs:111:31\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m111\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             hint: Some(crate::render::ADD_TYPE_PLACEHOLDER),\n    \u001b[1m\u001b[94m|\u001b[0m                               \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":2022,"byte_end":2028,"line_start":62,"line_end":62,"column_start":35,"column_end":41,"is_primary":true,"text":[{"text":"            Field::Name => crate::render::first_line(&pin.name).to_string(),","highlight_start":35,"highlight_end":41}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:62:35\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Field::Name => crate::render::first_line(&pin.name).to_string(),\n   \u001b[1m\u001b[94m|\u001b[0m                                   \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":2986,"byte_end":2992,"line_start":92,"line_end":92,"column_start":31,"column_end":37,"is_primary":true,"text":[{"text":"            let name = crate::render::first_line(&pin.name);","highlight_start":31,"highlight_end":37}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:92:31\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m92\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             let name = crate::render::first_line(&pin.name);\n   \u001b[1m\u001b[94m|\u001b[0m                               \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":4166,"byte_end":4172,"line_start":113,"line_end":113,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::render::ADD_TAG_PLACEHOLDER","highlight_start":24,"highlight_end":30}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:113:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m113\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::render::ADD_TAG_PLACEHOLDER\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":5128,"byte_end":5134,"line_start":142,"line_end":142,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:142:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m142\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":6104,"byte_end":6110,"line_start":165,"line_end":165,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:165:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m165\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":9126,"byte_end":9130,"line_start":221,"line_end":221,"column_start":47,"column_end":51,"is_primary":true,"text":[{"text":"                        Field::Name => crate::grid::MAX_LABEL_CHARS,","highlight_start":47,"highlight_end":51}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:221:47\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m221\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         Field::Name => crate::grid::MAX_LABEL_CHARS,\n    \u001b[1m\u001b[94m|\u001b[0m                                               \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":9194,"byte_end":9198,"line_start":222,"line_end":222,"column_start":46,"column_end":50,"is_primary":true,"text":[{"text":"                        Field::Tag => crate::grid::MAX_LOCATION_CHARS,","highlight_start":46,"highlight_end":50}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:222:46\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m222\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         Field::Tag => crate::grid::MAX_LOCATION_CHARS,\n    \u001b[1m\u001b[94m|\u001b[0m                                              \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":9420,"byte_end":9426,"line_start":227,"line_end":227,"column_start":47,"column_end":53,"is_primary":true,"text":[{"text":"                        Field::Name => crate::render::ADD_NAME_PLACEHOLDER,","highlight_start":47,"highlight_end":53}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:227:47\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m227\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         Field::Name => crate::render::ADD_NAME_PLACEHOLDER,\n    \u001b[1m\u001b[94m|\u001b[0m                                               \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":9495,"byte_end":9501,"line_start":228,"line_end":228,"column_start":46,"column_end":52,"is_primary":true,"text":[{"text":"                        Field::Tag => crate::render::ADD_TAG_PLACEHOLDER,","highlight_start":46,"highlight_end":52}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:228:46\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m228\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         Field::Tag => crate::render::ADD_TAG_PLACEHOLDER,\n    \u001b[1m\u001b[94m|\u001b[0m                                              \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":2044,"byte_end":2050,"line_start":62,"line_end":62,"column_start":29,"column_end":35,"is_primary":true,"text":[{"text":"        let anchor = crate::render::horizontal_label_anchor(label_pos);","highlight_start":29,"highlight_end":35}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:62:29\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         let anchor = crate::render::horizontal_label_anchor(label_pos);\n   \u001b[1m\u001b[94m|\u001b[0m                             \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":2738,"byte_end":2744,"line_start":87,"line_end":87,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:87:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m87\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":3390,"byte_end":3396,"line_start":103,"line_end":103,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::DrawingPasses::new(data)","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:103:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m103\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::DrawingPasses::new(data)\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":4522,"byte_end":4526,"line_start":125,"line_end":125,"column_start":45,"column_end":49,"is_primary":true,"text":[{"text":"                    char_limit: Some(crate::grid::MAX_LABEL_CHARS),","highlight_start":45,"highlight_end":49}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:125:45\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m125\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     char_limit: Some(crate::grid::MAX_LABEL_CHARS),\n    \u001b[1m\u001b[94m|\u001b[0m                                             \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":4826,"byte_end":4832,"line_start":130,"line_end":130,"column_start":39,"column_end":45,"is_primary":true,"text":[{"text":"                    hint: Some(crate::render::ADD_ROUTE_LABEL_PLACEHOLDER),","highlight_start":39,"highlight_end":45}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:130:39\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m130\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     hint: Some(crate::render::ADD_ROUTE_LABEL_PLACEHOLDER),\n    \u001b[1m\u001b[94m|\u001b[0m                                       \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_title.rs","byte_start":2218,"byte_end":2224,"line_start":64,"line_end":64,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::render::clamped_block_title_position(shape_ref.gui_rect(), &title, text_width);","highlight_start":16,"highlight_end":22}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:64:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m64\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::render::clamped_block_title_position(shape_ref.gui_rect(), &title, text_width);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_title.rs","byte_start":2773,"byte_end":2779,"line_start":84,"line_end":84,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:84:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m84\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_title.rs","byte_start":3236,"byte_end":3242,"line_start":94,"line_end":94,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:94:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m94\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_title.rs","byte_start":4851,"byte_end":4855,"line_start":123,"line_end":123,"column_start":45,"column_end":49,"is_primary":true,"text":[{"text":"                    char_limit: Some(crate::grid::MAX_LABEL_CHARS),","highlight_start":45,"highlight_end":49}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:123:45\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m123\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     char_limit: Some(crate::grid::MAX_LABEL_CHARS),\n    \u001b[1m\u001b[94m|\u001b[0m                                             \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_title.rs","byte_start":4998,"byte_end":5004,"line_start":126,"line_end":126,"column_start":39,"column_end":45,"is_primary":true,"text":[{"text":"                    hint: Some(crate::render::ADD_TITLE_PLACEHOLDER),","highlight_start":39,"highlight_end":45}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_title.rs:126:39\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m126\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     hint: Some(crate::render::ADD_TITLE_PLACEHOLDER),\n    \u001b[1m\u001b[94m|\u001b[0m                                       \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":2855,"byte_end":2859,"line_start":81,"line_end":81,"column_start":30,"column_end":34,"is_primary":true,"text":[{"text":"            own.x.max(crate::grid::ceil_to_grid(icon.width())),","highlight_start":30,"highlight_end":34}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:81:30\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m81\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             own.x.max(crate::grid::ceil_to_grid(icon.width())),\n   \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":2919,"byte_end":2923,"line_start":82,"line_end":82,"column_start":30,"column_end":34,"is_primary":true,"text":[{"text":"            own.y.max(crate::grid::ceil_block_height(icon.height())),","highlight_start":30,"highlight_end":34}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:82:30\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m82\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             own.y.max(crate::grid::ceil_block_height(icon.height())),\n   \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":9498,"byte_end":9504,"line_start":241,"line_end":241,"column_start":34,"column_end":40,"is_primary":true,"text":[{"text":"            let snapped = crate::widget::alignment::snap_resize_corner(data, shape, corner);","highlight_start":34,"highlight_end":40}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:241:34\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m241\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             let snapped = crate::widget::alignment::snap_resize_corner(data, shape, corner);\n    \u001b[1m\u001b[94m|\u001b[0m                                  \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":13833,"byte_end":13838,"line_start":342,"line_end":342,"column_start":34,"column_end":39,"is_primary":true,"text":[{"text":"fn resize_mode_at(shape: &crate::shape::ShapeRef<'_>, pos: Pos2) -> Option<ResizeMode> {","highlight_start":34,"highlight_end":39}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:342:34\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m342\u001b[0m \u001b[1m\u001b[94m|\u001b[0m fn resize_mode_at(shape: &crate::shape::ShapeRef<'_>, pos: Pos2) -> Option<ResizeMode> {\n    \u001b[1m\u001b[94m|\u001b[0m                                  \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":26608,"byte_end":26614,"line_start":631,"line_end":631,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:631:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m631\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":26808,"byte_end":26814,"line_start":635,"line_end":635,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::render_selected(data, selected_id, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:635:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m635\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::render_selected(data, selected_id, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":28955,"byte_end":28961,"line_start":681,"line_end":681,"column_start":32,"column_end":38,"is_primary":true,"text":[{"text":"                        crate::widget::alignment::resize_guides(data, selected_id, preview)","highlight_start":32,"highlight_end":38}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:681:32\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m681\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         crate::widget::alignment::resize_guides(data, selected_id, preview)\n    \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":30697,"byte_end":30703,"line_start":715,"line_end":715,"column_start":32,"column_end":38,"is_primary":true,"text":[{"text":"                        crate::widget::alignment::draw_guides(&guides, painter);","highlight_start":32,"highlight_end":38}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:715:32\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m715\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         crate::widget::alignment::draw_guides(&guides, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/retype_pin.rs","byte_start":2274,"byte_end":2280,"line_start":74,"line_end":74,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/retype_pin.rs:74:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m74\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/retype_pin.rs","byte_start":3800,"byte_end":3804,"line_start":106,"line_end":106,"column_start":37,"column_end":41,"is_primary":true,"text":[{"text":"            char_limit: Some(crate::grid::MAX_LABEL_CHARS),","highlight_start":37,"highlight_end":41}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/retype_pin.rs:106:37\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m106\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             char_limit: Some(crate::grid::MAX_LABEL_CHARS),\n    \u001b[1m\u001b[94m|\u001b[0m                                     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/retype_pin.rs","byte_start":3923,"byte_end":3929,"line_start":109,"line_end":109,"column_start":31,"column_end":37,"is_primary":true,"text":[{"text":"            hint: Some(crate::render::ADD_TYPE_PLACEHOLDER),","highlight_start":31,"highlight_end":37}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/retype_pin.rs:109:31\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m109\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             hint: Some(crate::render::ADD_TYPE_PLACEHOLDER),\n    \u001b[1m\u001b[94m|\u001b[0m                               \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":5640,"byte_end":5646,"line_start":166,"line_end":166,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:166:16\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m166\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":16790,"byte_end":16794,"line_start":426,"line_end":426,"column_start":52,"column_end":56,"is_primary":true,"text":[{"text":"            FinishTarget::Anchor(anchor) => crate::edit::create::RouteEnd::Pin(anchor),","highlight_start":52,"highlight_end":56}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:426:52\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m426\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             FinishTarget::Anchor(anchor) => crate::edit::create::RouteEnd::Pin(anchor),\n    \u001b[1m\u001b[94m|\u001b[0m                                                    \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":17445,"byte_end":17449,"line_start":439,"line_end":439,"column_start":24,"column_end":28,"is_primary":true,"text":[{"text":"                crate::edit::create::RouteEnd::Fresh(crate::edit::create::NewPin {","highlight_start":24,"highlight_end":28}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:439:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m439\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::edit::create::RouteEnd::Fresh(crate::edit::create::NewPin {\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":17482,"byte_end":17486,"line_start":439,"line_end":439,"column_start":61,"column_end":65,"is_primary":true,"text":[{"text":"                crate::edit::create::RouteEnd::Fresh(crate::edit::create::NewPin {","highlight_start":61,"highlight_end":65}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:439:61\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m439\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::edit::create::RouteEnd::Fresh(crate::edit::create::NewPin {\n    \u001b[1m\u001b[94m|\u001b[0m                                                             \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `grid` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":17709,"byte_end":17713,"line_start":444,"line_end":444,"column_start":40,"column_end":44,"is_primary":true,"text":[{"text":"                        offset: crate::grid::pin_slot(loc.offset),","highlight_start":40,"highlight_end":44}],"label":"could not find `grid` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `grid` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:444:40\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m444\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         offset: crate::grid::pin_slot(loc.offset),\n    \u001b[1m\u001b[94m|\u001b[0m                                        \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `grid` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":18211,"byte_end":18217,"line_start":458,"line_end":458,"column_start":35,"column_end":41,"is_primary":true,"text":[{"text":"        let mut geometry = crate::widget::auto_route::geometry_from_points(&path);","highlight_start":35,"highlight_end":41}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:458:35\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m458\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         let mut geometry = crate::widget::auto_route::geometry_from_points(&path);\n    \u001b[1m\u001b[94m|\u001b[0m                                   \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":18301,"byte_end":18307,"line_start":460,"line_end":460,"column_start":20,"column_end":26,"is_primary":true,"text":[{"text":"            crate::widget::materialize::promote_corners_to_waypoints(&waypoints, &mut geometry);","highlight_start":20,"highlight_end":26}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:460:20\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m460\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             crate::widget::materialize::promote_corners_to_waypoints(&waypoints, &mut geometry);\n    \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":5069,"byte_end":5075,"line_start":126,"line_end":126,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:126:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m126\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":5207,"byte_end":5213,"line_start":129,"line_end":129,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::widget::display::widget(data, interaction, painter);","highlight_start":24,"highlight_end":30}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:129:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m129\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::widget::display::widget(data, interaction, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":5743,"byte_end":5749,"line_start":137,"line_end":137,"column_start":28,"column_end":34,"is_primary":true,"text":[{"text":"                    crate::render::draw_pin_placeholders(shape.gui_rect(), pin, painter);","highlight_start":28,"highlight_end":34}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:137:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m137\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::render::draw_pin_placeholders(shape.gui_rect(), pin, painter);\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `widget` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_tool.rs","byte_start":1005,"byte_end":1011,"line_start":37,"line_end":37,"column_start":16,"column_end":22,"is_primary":true,"text":[{"text":"        crate::widget::display::widget(data, interaction, painter);","highlight_start":16,"highlight_end":22}],"label":"could not find `widget` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `widget` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_tool.rs:37:16\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m37\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         crate::widget::display::widget(data, interaction, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `widget` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `shape` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/selection_bounds.rs","byte_start":1087,"byte_end":1092,"line_start":30,"line_end":30,"column_start":31,"column_end":36,"is_primary":true,"text":[{"text":"            let slot = crate::shape::pin::slot(pin);","highlight_start":31,"highlight_end":36}],"label":"could not find `shape` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `shape` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/selection_bounds.rs:30:31\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m30\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             let slot = crate::shape::pin::slot(pin);\n   \u001b[1m\u001b[94m|\u001b[0m                               \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `shape` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `render` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/selection_bounds.rs","byte_start":1151,"byte_end":1157,"line_start":32,"line_end":32,"column_start":24,"column_end":30,"is_primary":true,"text":[{"text":"                crate::render::PinExtent {","highlight_start":24,"highlight_end":30}],"label":"could not find `render` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `render` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/selection_bounds.rs:32:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m32\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::render::PinExtent {\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `render` in the crate root\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `path` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":19043,"byte_end":19047,"line_start":471,"line_end":471,"column_start":47,"column_end":51,"is_primary":true,"text":[{"text":"        if ctx.data.current_scope() != crate::path::Scope::Root {","highlight_start":47,"highlight_end":51}],"label":"unresolved import","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"a similar path exists","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":19043,"byte_end":19047,"line_start":471,"line_end":471,"column_start":47,"column_end":51,"is_primary":true,"text":[{"text":"        if ctx.data.current_scope() != crate::path::Scope::Root {","highlight_start":47,"highlight_end":51}],"label":null,"suggested_replacement":"std::path","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"consider importing this struct","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":660,"byte_end":660,"line_start":13,"line_end":13,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use blockworx_store::doc::{Saving, Viewing, Writability};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use std::thread::Scope;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `Scope`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":19036,"byte_end":19049,"line_start":471,"line_end":471,"column_start":40,"column_end":53,"is_primary":true,"text":[{"text":"        if ctx.data.current_scope() != crate::path::Scope::Root {","highlight_start":40,"highlight_end":53}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `path` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:471:47\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m471\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         if ctx.data.current_scope() != crate::path::Scope::Root {\n    \u001b[1m\u001b[94m|\u001b[0m                                               \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91munresolved import\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: a similar path exists\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m471\u001b[0m \u001b[1m\u001b[94m| \u001b[0m        if ctx.data.current_scope() != crate::\u001b[92mstd::\u001b[0mpath::Scope::Root {\n    \u001b[1m\u001b[94m|\u001b[0m                                               \u001b[92m+++++\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this struct\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 13\u001b[0m \u001b[92m+ use std::thread::Scope;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `Scope`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m471\u001b[0m \u001b[91m- \u001b[0m        if ctx.data.current_scope() != \u001b[91mcrate::path::\u001b[0mScope::Root {\n\u001b[1m\u001b[94m471\u001b[0m \u001b[92m+ \u001b[0m        if ctx.data.current_scope() != Scope::Root {\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":24580,"byte_end":24585,"line_start":612,"line_end":612,"column_start":63,"column_end":68,"is_primary":true,"text":[{"text":"                Action::SwitchTool(Tool::AddRouteLabel(crate::tools::AddRouteLabel::Armed(","highlight_start":63,"highlight_end":68}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this enum through its public re-export","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":660,"byte_end":660,"line_start":13,"line_end":13,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use blockworx_store::doc::{Saving, Viewing, Writability};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::AddRouteLabel;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `AddRouteLabel`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":24573,"byte_end":24587,"line_start":612,"line_end":612,"column_start":56,"column_end":70,"is_primary":true,"text":[{"text":"                Action::SwitchTool(Tool::AddRouteLabel(crate::tools::AddRouteLabel::Armed(","highlight_start":56,"highlight_end":70}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:612:63\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m612\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 Action::SwitchTool(Tool::AddRouteLabel(crate::tools::AddRouteLabel::Armed(\n    \u001b[1m\u001b[94m|\u001b[0m                                                               \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this enum through its public re-export\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 13\u001b[0m \u001b[92m+ use crate::AddRouteLabel;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `AddRouteLabel`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m612\u001b[0m \u001b[91m- \u001b[0m                Action::SwitchTool(Tool::AddRouteLabel(\u001b[91mcrate::tools::\u001b[0mAddRouteLabel::Armed(\n\u001b[1m\u001b[94m612\u001b[0m \u001b[92m+ \u001b[0m                Action::SwitchTool(Tool::AddRouteLabel(AddRouteLabel::Armed(\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":28205,"byte_end":28210,"line_start":702,"line_end":702,"column_start":50,"column_end":55,"is_primary":true,"text":[{"text":"            Action::SwitchTool(Tool::Icon(crate::tools::IconTool::Armed(rid))),","highlight_start":50,"highlight_end":55}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this enum through its public re-export","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":660,"byte_end":660,"line_start":13,"line_end":13,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use blockworx_store::doc::{Saving, Viewing, Writability};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::IconTool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `IconTool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":28198,"byte_end":28212,"line_start":702,"line_end":702,"column_start":43,"column_end":57,"is_primary":true,"text":[{"text":"            Action::SwitchTool(Tool::Icon(crate::tools::IconTool::Armed(rid))),","highlight_start":43,"highlight_end":57}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:702:50\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m702\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Action::SwitchTool(Tool::Icon(crate::tools::IconTool::Armed(rid))),\n    \u001b[1m\u001b[94m|\u001b[0m                                                  \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this enum through its public re-export\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 13\u001b[0m \u001b[92m+ use crate::IconTool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `IconTool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m702\u001b[0m \u001b[91m- \u001b[0m            Action::SwitchTool(Tool::Icon(\u001b[91mcrate::tools::\u001b[0mIconTool::Armed(rid))),\n\u001b[1m\u001b[94m702\u001b[0m \u001b[92m+ \u001b[0m            Action::SwitchTool(Tool::Icon(IconTool::Armed(rid))),\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":35274,"byte_end":35279,"line_start":869,"line_end":869,"column_start":50,"column_end":55,"is_primary":true,"text":[{"text":"        Action::StampTool { tool, at } => crate::tools::stamp::stamp(drawing, tool, at),","highlight_start":50,"highlight_end":55}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":660,"byte_end":660,"line_start":13,"line_end":13,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use blockworx_store::doc::{Saving, Viewing, Writability};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::stamp;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `stamp`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":35267,"byte_end":35281,"line_start":869,"line_end":869,"column_start":43,"column_end":57,"is_primary":true,"text":[{"text":"        Action::StampTool { tool, at } => crate::tools::stamp::stamp(drawing, tool, at),","highlight_start":43,"highlight_end":57}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:869:50\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m869\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         Action::StampTool { tool, at } => crate::tools::stamp::stamp(drawing, tool, at),\n    \u001b[1m\u001b[94m|\u001b[0m                                                  \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 13\u001b[0m \u001b[92m+ use crate::stamp;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `stamp`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m869\u001b[0m \u001b[91m- \u001b[0m        Action::StampTool { tool, at } => \u001b[91mcrate::tools::\u001b[0mstamp::stamp(drawing, tool, at),\n\u001b[1m\u001b[94m869\u001b[0m \u001b[92m+ \u001b[0m        Action::StampTool { tool, at } => stamp::stamp(drawing, tool, at),\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":4770,"byte_end":4775,"line_start":134,"line_end":134,"column_start":32,"column_end":37,"is_primary":true,"text":[{"text":"                        crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":32,"highlight_end":37}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::render::{","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":4763,"byte_end":4777,"line_start":134,"line_end":134,"column_start":25,"column_end":39,"is_primary":true,"text":[{"text":"                        crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":25,"highlight_end":39}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_route.rs:134:32\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m134\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         crate::tools::select_tool::click_to_select(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m134\u001b[0m \u001b[91m- \u001b[0m                        \u001b[91mcrate::tools::\u001b[0mselect_tool::click_to_select(data, pos, painter)\n\u001b[1m\u001b[94m134\u001b[0m \u001b[92m+ \u001b[0m                        select_tool::click_to_select(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":5337,"byte_end":5342,"line_start":143,"line_end":143,"column_start":48,"column_end":53,"is_primary":true,"text":[{"text":"                            return Some(crate::tools::select_tool::drag_to_move(","highlight_start":48,"highlight_end":53}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::render::{","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/edit_route.rs","byte_start":5330,"byte_end":5344,"line_start":143,"line_end":143,"column_start":41,"column_end":55,"is_primary":true,"text":[{"text":"                            return Some(crate::tools::select_tool::drag_to_move(","highlight_start":41,"highlight_end":55}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_route.rs:143:48\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m143\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   return Some(crate::tools::select_tool::drag_to_move(\n    \u001b[1m\u001b[94m|\u001b[0m                                          \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m143\u001b[0m \u001b[91m- \u001b[0m                            return Some(\u001b[91mcrate::tools::\u001b[0mselect_tool::drag_to_move(\n\u001b[1m\u001b[94m143\u001b[0m \u001b[92m+ \u001b[0m                            return Some(select_tool::drag_to_move(\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":3617,"byte_end":3622,"line_start":97,"line_end":97,"column_start":24,"column_end":29,"is_primary":true,"text":[{"text":"                crate::tools::resize_block::ResizeBlock::Selected {","highlight_start":24,"highlight_end":29}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this enum","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::{cell::RefCell, rc::Rc};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::resize_block::ResizeBlock;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `ResizeBlock`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/edit_text_box.rs","byte_start":3610,"byte_end":3638,"line_start":97,"line_end":97,"column_start":17,"column_end":45,"is_primary":true,"text":[{"text":"                crate::tools::resize_block::ResizeBlock::Selected {","highlight_start":17,"highlight_end":45}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/edit_text_box.rs:97:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m97\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::tools::resize_block::ResizeBlock::Selected {\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this enum\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::resize_block::ResizeBlock;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `ResizeBlock`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m97\u001b[0m \u001b[91m- \u001b[0m                \u001b[91mcrate::tools::resize_block::\u001b[0mResizeBlock::Selected {\n\u001b[1m\u001b[94m97\u001b[0m \u001b[92m+ \u001b[0m                ResizeBlock::Selected {\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":2253,"byte_end":2258,"line_start":62,"line_end":62,"column_start":33,"column_end":38,"is_primary":true,"text":[{"text":"                    Some(crate::tools::select_tool::drag_to_move(data, pos, painter))","highlight_start":33,"highlight_end":38}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":2246,"byte_end":2260,"line_start":62,"line_end":62,"column_start":26,"column_end":40,"is_primary":true,"text":[{"text":"                    Some(crate::tools::select_tool::drag_to_move(data, pos, painter))","highlight_start":26,"highlight_end":40}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:62:33\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     Some(crate::tools::select_tool::drag_to_move(data, pos, painter))\n   \u001b[1m\u001b[94m|\u001b[0m                                 \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m62\u001b[0m \u001b[91m- \u001b[0m                    Some(\u001b[91mcrate::tools::\u001b[0mselect_tool::drag_to_move(data, pos, painter))\n\u001b[1m\u001b[94m62\u001b[0m \u001b[92m+ \u001b[0m                    Some(select_tool::drag_to_move(data, pos, painter))\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":2412,"byte_end":2417,"line_start":66,"line_end":66,"column_start":24,"column_end":29,"is_primary":true,"text":[{"text":"                crate::tools::select_tool::click_to_select(data, pos, painter).unwrap_or_default(),","highlight_start":24,"highlight_end":29}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":2405,"byte_end":2419,"line_start":66,"line_end":66,"column_start":17,"column_end":31,"is_primary":true,"text":[{"text":"                crate::tools::select_tool::click_to_select(data, pos, painter).unwrap_or_default(),","highlight_start":17,"highlight_end":31}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:66:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m66\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::tools::select_tool::click_to_select(data, pos, painter).unwrap_or_default(),\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m66\u001b[0m \u001b[91m- \u001b[0m                \u001b[91mcrate::tools::\u001b[0mselect_tool::click_to_select(data, pos, painter).unwrap_or_default(),\n\u001b[1m\u001b[94m66\u001b[0m \u001b[92m+ \u001b[0m                select_tool::click_to_select(data, pos, painter).unwrap_or_default(),\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":3543,"byte_end":3548,"line_start":99,"line_end":99,"column_start":25,"column_end":30,"is_primary":true,"text":[{"text":"    let bounds = crate::tools::selection_bounds::pins_bounds(data, pins, painter);","highlight_start":25,"highlight_end":30}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::selection_bounds;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `selection_bounds`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_pin_select.rs","byte_start":3536,"byte_end":3550,"line_start":99,"line_end":99,"column_start":18,"column_end":32,"is_primary":true,"text":[{"text":"    let bounds = crate::tools::selection_bounds::pins_bounds(data, pins, painter);","highlight_start":18,"highlight_end":32}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_pin_select.rs:99:25\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m99\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     let bounds = crate::tools::selection_bounds::pins_bounds(data, pins, painter);\n   \u001b[1m\u001b[94m|\u001b[0m                         \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::selection_bounds;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `selection_bounds`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m99\u001b[0m \u001b[91m- \u001b[0m    let bounds = \u001b[91mcrate::tools::\u001b[0mselection_bounds::pins_bounds(data, pins, painter);\n\u001b[1m\u001b[94m99\u001b[0m \u001b[92m+ \u001b[0m    let bounds = selection_bounds::pins_bounds(data, pins, painter);\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":6304,"byte_end":6309,"line_start":154,"line_end":154,"column_start":44,"column_end":49,"is_primary":true,"text":[{"text":"                        return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));","highlight_start":44,"highlight_end":49}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":6297,"byte_end":6311,"line_start":154,"line_end":154,"column_start":37,"column_end":51,"is_primary":true,"text":[{"text":"                        return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));","highlight_start":37,"highlight_end":51}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:154:44\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m154\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));\n    \u001b[1m\u001b[94m|\u001b[0m                                            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m154\u001b[0m \u001b[91m- \u001b[0m                        return Some(\u001b[91mcrate::tools::\u001b[0mselect_tool::drag_to_move(data, pos, painter));\n\u001b[1m\u001b[94m154\u001b[0m \u001b[92m+ \u001b[0m                        return Some(select_tool::drag_to_move(data, pos, painter));\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":6834,"byte_end":6839,"line_start":162,"line_end":162,"column_start":40,"column_end":45,"is_primary":true,"text":[{"text":"                                crate::tools::select_tool::extend_with_shape(shapes, hit),","highlight_start":40,"highlight_end":45}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":6827,"byte_end":6841,"line_start":162,"line_end":162,"column_start":33,"column_end":47,"is_primary":true,"text":[{"text":"                                crate::tools::select_tool::extend_with_shape(shapes, hit),","highlight_start":33,"highlight_end":47}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:162:40\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m162\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   crate::tools::select_tool::extend_with_shape(shapes, hit),\n    \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m162\u001b[0m \u001b[91m- \u001b[0m                                \u001b[91mcrate::tools::\u001b[0mselect_tool::extend_with_shape(shapes, hit),\n\u001b[1m\u001b[94m162\u001b[0m \u001b[92m+ \u001b[0m                                select_tool::extend_with_shape(shapes, hit),\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":7199,"byte_end":7204,"line_start":170,"line_end":170,"column_start":32,"column_end":37,"is_primary":true,"text":[{"text":"                        crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":32,"highlight_end":37}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":7192,"byte_end":7206,"line_start":170,"line_end":170,"column_start":25,"column_end":39,"is_primary":true,"text":[{"text":"                        crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":25,"highlight_end":39}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:170:32\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m170\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         crate::tools::select_tool::click_to_select(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m170\u001b[0m \u001b[91m- \u001b[0m                        \u001b[91mcrate::tools::\u001b[0mselect_tool::click_to_select(data, pos, painter)\n\u001b[1m\u001b[94m170\u001b[0m \u001b[92m+ \u001b[0m                        select_tool::click_to_select(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":10835,"byte_end":10840,"line_start":261,"line_end":261,"column_start":25,"column_end":30,"is_primary":true,"text":[{"text":"    let bounds = crate::tools::selection_bounds::shapes_bounds(data, shapes);","highlight_start":25,"highlight_end":30}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::selection_bounds;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `selection_bounds`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/multi_select.rs","byte_start":10828,"byte_end":10842,"line_start":261,"line_end":261,"column_start":18,"column_end":32,"is_primary":true,"text":[{"text":"    let bounds = crate::tools::selection_bounds::shapes_bounds(data, shapes);","highlight_start":18,"highlight_end":32}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/multi_select.rs:261:25\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m261\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     let bounds = crate::tools::selection_bounds::shapes_bounds(data, shapes);\n    \u001b[1m\u001b[94m|\u001b[0m                         \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::selection_bounds;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `selection_bounds`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m261\u001b[0m \u001b[91m- \u001b[0m    let bounds = \u001b[91mcrate::tools::\u001b[0mselection_bounds::shapes_bounds(data, shapes);\n\u001b[1m\u001b[94m261\u001b[0m \u001b[92m+ \u001b[0m    let bounds = selection_bounds::shapes_bounds(data, shapes);\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":6908,"byte_end":6912,"line_start":184,"line_end":184,"column_start":44,"column_end":48,"is_primary":true,"text":[{"text":"            Placement::Box(rect) => crate::edit::assets::Placement::Box(*rect),","highlight_start":44,"highlight_end":48}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing one of these enums","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::time::Duration;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::commands::Placement;\n","suggestion_applicability":"MaybeIncorrect","expansion":null},{"file_name":"crates/tools/src/new_image.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::time::Duration;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::new_image::Placement;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `Placement`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":6901,"byte_end":6922,"line_start":184,"line_end":184,"column_start":37,"column_end":58,"is_primary":true,"text":[{"text":"            Placement::Box(rect) => crate::edit::assets::Placement::Box(*rect),","highlight_start":37,"highlight_end":58}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_image.rs:184:44\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m184\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Placement::Box(rect) => crate::edit::assets::Placement::Box(*rect),\n    \u001b[1m\u001b[94m|\u001b[0m                                            \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing one of these enums\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::commands::Placement;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::new_image::Placement;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `Placement`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m184\u001b[0m \u001b[91m- \u001b[0m            Placement::Box(rect) => \u001b[91mcrate::edit::assets::\u001b[0mPlacement::Box(*rect),\n\u001b[1m\u001b[94m184\u001b[0m \u001b[92m+ \u001b[0m            Placement::Box(rect) => Placement::Box(*rect),\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `edit` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":6995,"byte_end":6999,"line_start":185,"line_end":185,"column_start":51,"column_end":55,"is_primary":true,"text":[{"text":"            Placement::Centered(center) => crate::edit::assets::Placement::Centered {","highlight_start":51,"highlight_end":55}],"label":"could not find `edit` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing one of these enums","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::time::Duration;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::commands::Placement;\n","suggestion_applicability":"MaybeIncorrect","expansion":null},{"file_name":"crates/tools/src/new_image.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::time::Duration;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::new_image::Placement;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `Placement`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/new_image.rs","byte_start":6988,"byte_end":7009,"line_start":185,"line_end":185,"column_start":44,"column_end":65,"is_primary":true,"text":[{"text":"            Placement::Centered(center) => crate::edit::assets::Placement::Centered {","highlight_start":44,"highlight_end":65}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `edit` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/new_image.rs:185:51\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m185\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             Placement::Centered(center) => crate::edit::assets::Placement::Centered {\n    \u001b[1m\u001b[94m|\u001b[0m                                                   \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `edit` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing one of these enums\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::commands::Placement;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::new_image::Placement;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `Placement`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m185\u001b[0m \u001b[91m- \u001b[0m            Placement::Centered(center) => \u001b[91mcrate::edit::assets::\u001b[0mPlacement::Centered {\n\u001b[1m\u001b[94m185\u001b[0m \u001b[92m+ \u001b[0m            Placement::Centered(center) => Placement::Centered {\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":1404,"byte_end":1409,"line_start":48,"line_end":48,"column_start":28,"column_end":33,"is_primary":true,"text":[{"text":"            None => crate::tools::tool::select_tool_for_anchor(data, anchor),","highlight_start":28,"highlight_end":33}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::{cell::RefCell, rc::Rc};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":1397,"byte_end":1411,"line_start":48,"line_end":48,"column_start":21,"column_end":35,"is_primary":true,"text":[{"text":"            None => crate::tools::tool::select_tool_for_anchor(data, anchor),","highlight_start":21,"highlight_end":35}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:48:28\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m48\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             None => crate::tools::tool::select_tool_for_anchor(data, anchor),\n   \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::tool;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `tool`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m48\u001b[0m \u001b[91m- \u001b[0m            None => \u001b[91mcrate::tools::\u001b[0mtool::select_tool_for_anchor(data, anchor),\n\u001b[1m\u001b[94m48\u001b[0m \u001b[92m+ \u001b[0m            None => tool::select_tool_for_anchor(data, anchor),\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":7628,"byte_end":7633,"line_start":192,"line_end":192,"column_start":32,"column_end":37,"is_primary":true,"text":[{"text":"                        crate::tools::tool::select_tool_for_anchor(data, anchor),","highlight_start":32,"highlight_end":37}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::{cell::RefCell, rc::Rc};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/rename_pin.rs","byte_start":7621,"byte_end":7635,"line_start":192,"line_end":192,"column_start":25,"column_end":39,"is_primary":true,"text":[{"text":"                        crate::tools::tool::select_tool_for_anchor(data, anchor),","highlight_start":25,"highlight_end":39}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_pin.rs:192:32\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m192\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         crate::tools::tool::select_tool_for_anchor(data, anchor),\n    \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m192\u001b[0m \u001b[91m- \u001b[0m                        \u001b[91mcrate::tools::\u001b[0mtool::select_tool_for_anchor(data, anchor),\n\u001b[1m\u001b[94m192\u001b[0m \u001b[92m+ \u001b[0m                        tool::select_tool_for_anchor(data, anchor),\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":3956,"byte_end":3961,"line_start":112,"line_end":112,"column_start":32,"column_end":37,"is_primary":true,"text":[{"text":"                        crate::tools::EditRoute::Selected {","highlight_start":32,"highlight_end":37}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this enum through its public re-export","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::{cell::RefCell, rc::Rc};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::EditRoute;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `EditRoute`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/rename_route.rs","byte_start":3949,"byte_end":3963,"line_start":112,"line_end":112,"column_start":25,"column_end":39,"is_primary":true,"text":[{"text":"                        crate::tools::EditRoute::Selected {","highlight_start":25,"highlight_end":39}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/rename_route.rs:112:32\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m112\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                         crate::tools::EditRoute::Selected {\n    \u001b[1m\u001b[94m|\u001b[0m                                \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this enum through its public re-export\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::EditRoute;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `EditRoute`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m112\u001b[0m \u001b[91m- \u001b[0m                        \u001b[91mcrate::tools::\u001b[0mEditRoute::Selected {\n\u001b[1m\u001b[94m112\u001b[0m \u001b[92m+ \u001b[0m                        EditRoute::Selected {\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":11294,"byte_end":11299,"line_start":279,"line_end":279,"column_start":36,"column_end":41,"is_primary":true,"text":[{"text":"    (pos.distance(center) < crate::tools::new_pin::new_pin_grab().get()).then_some((loc, center))","highlight_start":36,"highlight_end":41}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::ops::ControlFlow;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::new_pin;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `new_pin`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":11287,"byte_end":11301,"line_start":279,"line_end":279,"column_start":29,"column_end":43,"is_primary":true,"text":[{"text":"    (pos.distance(center) < crate::tools::new_pin::new_pin_grab().get()).then_some((loc, center))","highlight_start":29,"highlight_end":43}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:279:36\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m279\u001b[0m \u001b[1m\u001b[94m|\u001b[0m     (pos.distance(center) < crate::tools::new_pin::new_pin_grab().get()).then_some((loc, center))\n    \u001b[1m\u001b[94m|\u001b[0m                                    \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::new_pin;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `new_pin`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m279\u001b[0m \u001b[91m- \u001b[0m    (pos.distance(center) < \u001b[91mcrate::tools::\u001b[0mnew_pin::new_pin_grab().get()).then_some((loc, center))\n\u001b[1m\u001b[94m279\u001b[0m \u001b[92m+ \u001b[0m    (pos.distance(center) < new_pin::new_pin_grab().get()).then_some((loc, center))\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":17244,"byte_end":17249,"line_start":445,"line_end":445,"column_start":28,"column_end":33,"is_primary":true,"text":[{"text":"                    crate::tools::route_start::widget(data, interaction, painter)","highlight_start":28,"highlight_end":33}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::ops::ControlFlow;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::route_start;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `route_start`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":17237,"byte_end":17251,"line_start":445,"line_end":445,"column_start":21,"column_end":35,"is_primary":true,"text":[{"text":"                    crate::tools::route_start::widget(data, interaction, painter)","highlight_start":21,"highlight_end":35}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:445:28\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m445\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     crate::tools::route_start::widget(data, interaction, painter)\n    \u001b[1m\u001b[94m|\u001b[0m                            \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::route_start;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `route_start`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m445\u001b[0m \u001b[91m- \u001b[0m                    \u001b[91mcrate::tools::\u001b[0mroute_start::widget(data, interaction, painter)\n\u001b[1m\u001b[94m445\u001b[0m \u001b[92m+ \u001b[0m                    route_start::widget(data, interaction, painter)\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":18146,"byte_end":18151,"line_start":458,"line_end":458,"column_start":48,"column_end":53,"is_primary":true,"text":[{"text":"                    if let Some(tool) = crate::tools::select_tool::editor_at_pos(data, pos, painter)","highlight_start":48,"highlight_end":53}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::ops::ControlFlow;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":18139,"byte_end":18153,"line_start":458,"line_end":458,"column_start":41,"column_end":55,"is_primary":true,"text":[{"text":"                    if let Some(tool) = crate::tools::select_tool::editor_at_pos(data, pos, painter)","highlight_start":41,"highlight_end":55}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:458:48\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m458\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     if let Some(tool) = crate::tools::select_tool::editor_at_pos(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m                                                \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m458\u001b[0m \u001b[91m- \u001b[0m                    if let Some(tool) = \u001b[91mcrate::tools::\u001b[0mselect_tool::editor_at_pos(data, pos, painter)\n\u001b[1m\u001b[94m458\u001b[0m \u001b[92m+ \u001b[0m                    if let Some(tool) = select_tool::editor_at_pos(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":22103,"byte_end":22108,"line_start":525,"line_end":525,"column_start":40,"column_end":45,"is_primary":true,"text":[{"text":"                                crate::tools::select_tool::extend_with_shape(&[shape], hit),","highlight_start":40,"highlight_end":45}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::ops::ControlFlow;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":22096,"byte_end":22110,"line_start":525,"line_end":525,"column_start":33,"column_end":47,"is_primary":true,"text":[{"text":"                                crate::tools::select_tool::extend_with_shape(&[shape], hit),","highlight_start":33,"highlight_end":47}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:525:40\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m525\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   crate::tools::select_tool::extend_with_shape(&[shape], hit),\n    \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m525\u001b[0m \u001b[91m- \u001b[0m                                \u001b[91mcrate::tools::\u001b[0mselect_tool::extend_with_shape(&[shape], hit),\n\u001b[1m\u001b[94m525\u001b[0m \u001b[92m+ \u001b[0m                                select_tool::extend_with_shape(&[shape], hit),\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":22632,"byte_end":22637,"line_start":535,"line_end":535,"column_start":36,"column_end":41,"is_primary":true,"text":[{"text":"                            crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":36,"highlight_end":41}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::ops::ControlFlow;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":22625,"byte_end":22639,"line_start":535,"line_end":535,"column_start":29,"column_end":43,"is_primary":true,"text":[{"text":"                            crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":29,"highlight_end":43}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:535:36\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m535\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   crate::tools::select_tool::click_to_select(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m535\u001b[0m \u001b[91m- \u001b[0m                            \u001b[91mcrate::tools::\u001b[0mselect_tool::click_to_select(data, pos, painter)\n\u001b[1m\u001b[94m535\u001b[0m \u001b[92m+ \u001b[0m                            select_tool::click_to_select(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":24474,"byte_end":24479,"line_start":574,"line_end":574,"column_start":40,"column_end":45,"is_primary":true,"text":[{"text":"                    return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));","highlight_start":40,"highlight_end":45}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::ops::ControlFlow;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/resize_block.rs","byte_start":24467,"byte_end":24481,"line_start":574,"line_end":574,"column_start":33,"column_end":47,"is_primary":true,"text":[{"text":"                    return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));","highlight_start":33,"highlight_end":47}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/resize_block.rs:574:40\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m574\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));\n    \u001b[1m\u001b[94m|\u001b[0m                                        \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m574\u001b[0m \u001b[91m- \u001b[0m                    return Some(\u001b[91mcrate::tools::\u001b[0mselect_tool::drag_to_move(data, pos, painter));\n\u001b[1m\u001b[94m574\u001b[0m \u001b[92m+ \u001b[0m                    return Some(select_tool::drag_to_move(data, pos, painter));\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/retype_pin.rs","byte_start":3174,"byte_end":3179,"line_start":92,"line_end":92,"column_start":24,"column_end":29,"is_primary":true,"text":[{"text":"                crate::tools::tool::select_tool_for_anchor(data, anchor),","highlight_start":24,"highlight_end":29}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/retype_pin.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::{cell::RefCell, rc::Rc};","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/retype_pin.rs","byte_start":3167,"byte_end":3181,"line_start":92,"line_end":92,"column_start":17,"column_end":31,"is_primary":true,"text":[{"text":"                crate::tools::tool::select_tool_for_anchor(data, anchor),","highlight_start":17,"highlight_end":31}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/retype_pin.rs:92:24\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m92\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                 crate::tools::tool::select_tool_for_anchor(data, anchor),\n   \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::tool;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `tool`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m92\u001b[0m \u001b[91m- \u001b[0m                \u001b[91mcrate::tools::\u001b[0mtool::select_tool_for_anchor(data, anchor),\n\u001b[1m\u001b[94m92\u001b[0m \u001b[92m+ \u001b[0m                tool::select_tool_for_anchor(data, anchor),\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":21361,"byte_end":21366,"line_start":523,"line_end":523,"column_start":40,"column_end":45,"is_primary":true,"text":[{"text":"        (center.distance(pos) < crate::tools::new_pin::new_pin_grab().get())","highlight_start":40,"highlight_end":45}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::collections::BTreeMap;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::new_pin;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `new_pin`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/route_tool.rs","byte_start":21354,"byte_end":21368,"line_start":523,"line_end":523,"column_start":33,"column_end":47,"is_primary":true,"text":[{"text":"        (center.distance(pos) < crate::tools::new_pin::new_pin_grab().get())","highlight_start":33,"highlight_end":47}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/route_tool.rs:523:40\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m523\u001b[0m \u001b[1m\u001b[94m|\u001b[0m         (center.distance(pos) < crate::tools::new_pin::new_pin_grab().get())\n    \u001b[1m\u001b[94m|\u001b[0m                                        \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::new_pin;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `new_pin`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m523\u001b[0m \u001b[91m- \u001b[0m        (center.distance(pos) < \u001b[91mcrate::tools::\u001b[0mnew_pin::new_pin_grab().get())\n\u001b[1m\u001b[94m523\u001b[0m \u001b[92m+ \u001b[0m        (center.distance(pos) < new_pin::new_pin_grab().get())\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":3110,"byte_end":3115,"line_start":78,"line_end":78,"column_start":48,"column_end":53,"is_primary":true,"text":[{"text":"                    if let Some(tool) = crate::tools::select_tool::editor_at_pos(data, pos, painter)","highlight_start":48,"highlight_end":53}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":3103,"byte_end":3117,"line_start":78,"line_end":78,"column_start":41,"column_end":55,"is_primary":true,"text":[{"text":"                    if let Some(tool) = crate::tools::select_tool::editor_at_pos(data, pos, painter)","highlight_start":41,"highlight_end":55}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:78:48\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m78\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     if let Some(tool) = crate::tools::select_tool::editor_at_pos(data, pos, painter)\n   \u001b[1m\u001b[94m|\u001b[0m                                                \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m78\u001b[0m \u001b[91m- \u001b[0m                    if let Some(tool) = \u001b[91mcrate::tools::\u001b[0mselect_tool::editor_at_pos(data, pos, painter)\n\u001b[1m\u001b[94m78\u001b[0m \u001b[92m+ \u001b[0m                    if let Some(tool) = select_tool::editor_at_pos(data, pos, painter)\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":3515,"byte_end":3520,"line_start":86,"line_end":86,"column_start":40,"column_end":45,"is_primary":true,"text":[{"text":"                    return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));","highlight_start":40,"highlight_end":45}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":3508,"byte_end":3522,"line_start":86,"line_end":86,"column_start":33,"column_end":47,"is_primary":true,"text":[{"text":"                    return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));","highlight_start":33,"highlight_end":47}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:86:40\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m86\u001b[0m \u001b[1m\u001b[94m|\u001b[0m                     return Some(crate::tools::select_tool::drag_to_move(data, pos, painter));\n   \u001b[1m\u001b[94m|\u001b[0m                                        \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m86\u001b[0m \u001b[91m- \u001b[0m                    return Some(\u001b[91mcrate::tools::\u001b[0mselect_tool::drag_to_move(data, pos, painter));\n\u001b[1m\u001b[94m86\u001b[0m \u001b[92m+ \u001b[0m                    return Some(select_tool::drag_to_move(data, pos, painter));\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":3845,"byte_end":3850,"line_start":92,"line_end":92,"column_start":36,"column_end":41,"is_primary":true,"text":[{"text":"                            crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":36,"highlight_end":41}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":3838,"byte_end":3852,"line_start":92,"line_end":92,"column_start":29,"column_end":43,"is_primary":true,"text":[{"text":"                            crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":29,"highlight_end":43}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:92:36\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m92\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   crate::tools::select_tool::click_to_select(data, pos, painter)\n   \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m92\u001b[0m \u001b[91m- \u001b[0m                            \u001b[91mcrate::tools::\u001b[0mselect_tool::click_to_select(data, pos, painter)\n\u001b[1m\u001b[94m92\u001b[0m \u001b[92m+ \u001b[0m                            select_tool::click_to_select(data, pos, painter)\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":4489,"byte_end":4494,"line_start":103,"line_end":103,"column_start":36,"column_end":41,"is_primary":true,"text":[{"text":"                            crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":36,"highlight_end":41}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::theme::Style;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::select_tool;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `select_tool`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_pin.rs","byte_start":4482,"byte_end":4496,"line_start":103,"line_end":103,"column_start":29,"column_end":43,"is_primary":true,"text":[{"text":"                            crate::tools::select_tool::click_to_select(data, pos, painter)","highlight_start":29,"highlight_end":43}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_pin.rs:103:36\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m103\u001b[0m \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m...\u001b[0m                   crate::tools::select_tool::click_to_select(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m  1\u001b[0m \u001b[92m+ use crate::select_tool;\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `select_tool`, refer to it directly\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m103\u001b[0m \u001b[91m- \u001b[0m                            \u001b[91mcrate::tools::\u001b[0mselect_tool::click_to_select(data, pos, painter)\n\u001b[1m\u001b[94m103\u001b[0m \u001b[92m+ \u001b[0m                            select_tool::click_to_select(data, pos, painter)\n    \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find `tools` in `crate`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/select_tool.rs","byte_start":1289,"byte_end":1294,"line_start":41,"line_end":41,"column_start":20,"column_end":25,"is_primary":true,"text":[{"text":"            crate::tools::route_start::widget(data, interaction, painter)","highlight_start":20,"highlight_end":25}],"label":"could not find `tools` in the crate root","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider importing this module","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_tool.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use std::ops::ControlFlow;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"use crate::route_start;\n","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null},{"message":"if you import `route_start`, refer to it directly","code":null,"level":"help","spans":[{"file_name":"crates/tools/src/select_tool.rs","byte_start":1282,"byte_end":1296,"line_start":41,"line_end":41,"column_start":13,"column_end":27,"is_primary":true,"text":[{"text":"            crate::tools::route_start::widget(data, interaction, painter)","highlight_start":13,"highlight_end":27}],"label":null,"suggested_replacement":"","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find `tools` in `crate`\u001b[0m\n  \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/select_tool.rs:41:20\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m41\u001b[0m \u001b[1m\u001b[94m|\u001b[0m             crate::tools::route_start::widget(data, interaction, painter)\n   \u001b[1m\u001b[94m|\u001b[0m                    \u001b[1m\u001b[91m^^^^^\u001b[0m \u001b[1m\u001b[91mcould not find `tools` in the crate root\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: consider importing this module\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m 1\u001b[0m \u001b[92m+ use crate::route_start;\u001b[0m\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[96mhelp\u001b[0m: if you import `route_start`, refer to it directly\n   \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m41\u001b[0m \u001b[91m- \u001b[0m            \u001b[91mcrate::tools::\u001b[0mroute_start::widget(data, interaction, painter)\n\u001b[1m\u001b[94m41\u001b[0m \u001b[92m+ \u001b[0m            route_start::widget(data, interaction, painter)\n   \u001b[1m\u001b[94m|\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":13674,"byte_end":13678,"line_start":353,"line_end":353,"column_start":21,"column_end":25,"is_primary":true,"text":[{"text":"const fn chord(key: egui::Key) -> egui::KeyboardShortcut {","highlight_start":21,"highlight_end":25}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:353:21\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m353\u001b[0m \u001b[1m\u001b[94m|\u001b[0m const fn chord(key: egui::Key) -> egui::KeyboardShortcut {\n    \u001b[1m\u001b[94m|\u001b[0m                     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":13688,"byte_end":13692,"line_start":353,"line_end":353,"column_start":35,"column_end":39,"is_primary":true,"text":[{"text":"const fn chord(key: egui::Key) -> egui::KeyboardShortcut {","highlight_start":35,"highlight_end":39}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:353:35\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m353\u001b[0m \u001b[1m\u001b[94m|\u001b[0m const fn chord(key: egui::Key) -> egui::KeyboardShortcut {\n    \u001b[1m\u001b[94m|\u001b[0m                                   \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":13882,"byte_end":13886,"line_start":358,"line_end":358,"column_start":21,"column_end":25,"is_primary":true,"text":[{"text":"const fn digit(key: egui::Key) -> egui::KeyboardShortcut {","highlight_start":21,"highlight_end":25}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:358:21\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m358\u001b[0m \u001b[1m\u001b[94m|\u001b[0m const fn digit(key: egui::Key) -> egui::KeyboardShortcut {\n    \u001b[1m\u001b[94m|\u001b[0m                     \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":13896,"byte_end":13900,"line_start":358,"line_end":358,"column_start":35,"column_end":39,"is_primary":true,"text":[{"text":"const fn digit(key: egui::Key) -> egui::KeyboardShortcut {","highlight_start":35,"highlight_end":39}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:358:35\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m358\u001b[0m \u001b[1m\u001b[94m|\u001b[0m const fn digit(key: egui::Key) -> egui::KeyboardShortcut {\n    \u001b[1m\u001b[94m|\u001b[0m                                   \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":14559,"byte_end":14563,"line_start":371,"line_end":371,"column_start":24,"column_end":28,"is_primary":true,"text":[{"text":"pub const BINDINGS: &[(egui::KeyboardShortcut, CommandId)] = &[","highlight_start":24,"highlight_end":28}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:371:24\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m371\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub const BINDINGS: &[(egui::KeyboardShortcut, CommandId)] = &[\n    \u001b[1m\u001b[94m|\u001b[0m                        \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":15957,"byte_end":15961,"line_start":395,"line_end":395,"column_start":50,"column_end":54,"is_primary":true,"text":[{"text":"pub fn binding(id: CommandId) -> Option<&'static egui::KeyboardShortcut> {","highlight_start":50,"highlight_end":54}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:395:50\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m395\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn binding(id: CommandId) -> Option<&'static egui::KeyboardShortcut> {\n    \u001b[1m\u001b[94m|\u001b[0m                                                  \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":16200,"byte_end":16204,"line_start":401,"line_end":401,"column_start":63,"column_end":67,"is_primary":true,"text":[{"text":"pub fn chords(id: CommandId) -> impl Iterator<Item = &'static egui::KeyboardShortcut> {","highlight_start":63,"highlight_end":67}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:401:63\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m401\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn chords(id: CommandId) -> impl Iterator<Item = &'static egui::KeyboardShortcut> {\n    \u001b[1m\u001b[94m|\u001b[0m                                                               \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"cannot find module or crate `egui` in this scope","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap<u32, u32> = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"crates/tools/src/commands.rs","byte_start":16594,"byte_end":16598,"line_start":411,"line_end":411,"column_start":30,"column_end":34,"is_primary":true,"text":[{"text":"pub fn consume_binding(ctx: &egui::Context) -> Option<CommandId> {","highlight_start":30,"highlight_end":34}],"label":"use of unresolved module or unlinked crate `egui`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m: cannot find module or crate `egui` in this scope\u001b[0m\n   \u001b[1m\u001b[94m--> \u001b[0mcrates/tools/src/commands.rs:411:30\n    \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m411\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn consume_binding(ctx: &egui::Context) -> Option<CommandId> {\n    \u001b[1m\u001b[94m|\u001b[0m                              \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `egui`\u001b[0m\n    \u001b[1m\u001b[94m|\u001b[0m\n    \u001b[1m\u001b[94m= \u001b[0m\u001b[1mhelp\u001b[0m: if you wanted to use a crate named `egui`, use `cargo add egui` to add it to your `Cargo.toml`\n\n"}
{"$message_type":"diagnostic","message":"aborting due to 328 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m: aborting due to 328 previous errors\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0432, E0433, E0583.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mSome errors have detailed explanations: E0432, E0433, E0583.\u001b[0m\n"}
{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0432`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1mFor more information about an error, try `rustc --explain E0432`.\u001b[0m\n"}
