[INFO] cloning repository https://github.com/brittonr/irohscii
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/brittonr/irohscii" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrittonr%2Firohscii", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrittonr%2Firohscii'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d7b8b505441aca94d449f37ad8687c0122499ea7
[INFO] testing brittonr/irohscii against try#bd7d74411512a3dd3b35d2f699c51dd2557c7e7e+cargoflags=-Zbuild-dir-new-layout for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrittonr%2Firohscii" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/brittonr/irohscii
[INFO] finished tweaking git repo https://github.com/brittonr/irohscii
[INFO] tweaked toml for git repo https://github.com/brittonr/irohscii written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/brittonr/irohscii on toolchain bd7d74411512a3dd3b35d2f699c51dd2557c7e7e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/brittonr/irohscii already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b925091e821031089f600738a2d0633f7567946823f0595c6c058cab79e7ba2d
[INFO] running `Command { std: "docker" "start" "-a" "b925091e821031089f600738a2d0633f7567946823f0595c6c058cab79e7ba2d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b925091e821031089f600738a2d0633f7567946823f0595c6c058cab79e7ba2d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b925091e821031089f600738a2d0633f7567946823f0595c6c058cab79e7ba2d", kill_on_drop: false }`
[INFO] [stdout] b925091e821031089f600738a2d0633f7567946823f0595c6c058cab79e7ba2d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "build" "--frozen" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] dcc2827be8d7321535a3a108db7b05350175dd627f58ee107a9a86f977e295d2
[INFO] running `Command { std: "docker" "start" "-a" "dcc2827be8d7321535a3a108db7b05350175dd627f58ee107a9a86f977e295d2", kill_on_drop: false }`
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]    Compiling critical-section v1.2.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.104
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.6
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling const-oid v0.10.1
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling pem-rfc7468 v1.0.0
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling curve25519-dalek v5.0.0-pre.1
[INFO] [stderr]    Compiling cordyceps v0.3.4
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling spin v0.10.0
[INFO] [stderr]    Compiling cc v1.2.51
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling diatomic-waker v0.2.3
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling heapless v0.7.17
[INFO] [stderr]    Compiling lru v0.16.2
[INFO] [stderr]    Compiling iroh-quinn-udp v0.5.7
[INFO] [stderr]    Compiling n0-future v0.3.1
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling palette v0.7.6
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling futures-buffered v0.2.12
[INFO] [stderr]    Compiling by_address v1.2.1
[INFO] [stderr]    Compiling hash32 v0.2.1
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling netlink-packet-core v0.8.1
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling instability v0.3.10
[INFO] [stderr]    Compiling signature v3.0.0-rc.6
[INFO] [stderr]    Compiling fast-srgb8 v1.0.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling toml_edit v0.23.10+spec-1.0.0
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling netlink-packet-route v0.25.1
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling netwatch v0.12.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling pkarr v5.0.0
[INFO] [stderr]    Compiling iroh-quinn v0.14.0
[INFO] [stderr]    Compiling base32 v0.5.1
[INFO] [stderr]    Compiling tagptr v0.2.0
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling simple-dns v0.9.3
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling moka v0.12.12
[INFO] [stderr]    Compiling iroh-relay v0.95.1
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling constant_time_eq v0.3.1
[INFO] [stderr]    Compiling openssl-probe v0.2.0
[INFO] [stderr]    Compiling resolv-conf v0.7.6
[INFO] [stderr]    Compiling self_cell v1.2.1
[INFO] [stderr]    Compiling zmij v1.0.3
[INFO] [stderr]    Compiling lru v0.13.0
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling base16ct v0.3.0
[INFO] [stderr]    Compiling simdutf8 v0.1.5
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]    Compiling blake3 v1.8.2
[INFO] [stderr]    Compiling arrayref v0.3.9
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling iroh v0.95.1
[INFO] [stderr]    Compiling unicode-truncate v2.0.0
[INFO] [stderr]    Compiling serde_bytes v0.11.19
[INFO] [stderr]    Compiling z32 v1.3.0
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling xmltree v0.10.3
[INFO] [stderr]    Compiling leb128 v0.2.5
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling rmp v0.8.15
[INFO] [stderr]    Compiling smol_str v0.3.4
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling serde_json v1.0.148
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling n0-error-macros v0.1.2
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling spez v0.1.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling hybrid-array v0.4.5
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling rustls-pki-types v1.13.2
[INFO] [stderr]    Compiling crypto-common v0.2.0-rc.4
[INFO] [stderr]    Compiling block-buffer v0.11.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.8
[INFO] [stderr]    Compiling der v0.8.0-rc.10
[INFO] [stderr]    Compiling n0-error v0.1.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling inout v0.2.2
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling derive_more-impl v1.0.0
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling digest v0.11.0-rc.3
[INFO] [stderr]    Compiling pin-project v1.1.10
[INFO] [stderr]    Compiling sha2 v0.11.0-rc.2
[INFO] [stderr]    Compiling palette_derive v0.7.6
[INFO] [stderr]    Compiling cipher v0.5.0-rc.1
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling kasuari v0.4.11
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling cobs v0.3.0
[INFO] [stderr]    Compiling webpki-roots v1.0.4
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling postcard-derive v0.2.2
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling spki v0.8.0-rc.4
[INFO] [stderr]    Compiling pkcs8 v0.11.0-rc.8
[INFO] [stderr]    Compiling universal-hash v0.6.0-rc.2
[INFO] [stderr]    Compiling iroh-metrics-derive v0.4.0
[INFO] [stderr]    Compiling num_enum_derive v0.7.5
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]    Compiling poly1305 v0.9.0-rc.2
[INFO] [stderr]    Compiling salsa20 v0.11.0-rc.1
[INFO] [stderr]    Compiling chacha20 v0.10.0-rc.2
[INFO] [stderr]    Compiling aead v0.6.0-rc.2
[INFO] [stderr]    Compiling sha1 v0.11.0-rc.2
[INFO] [stderr]    Compiling derive_more v1.0.0
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling hexane v0.1.6
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling crypto_secretbox v0.2.0-pre.0
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling num_enum v0.7.5
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling ed25519 v3.0.0-rc.2
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling ntimestamp v1.0.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling serdect v0.4.1
[INFO] [stderr]    Compiling automerge v0.7.2
[INFO] [stderr]    Compiling rmp-serde v1.3.1
[INFO] [stderr]    Compiling postcard v1.1.3
[INFO] [stderr]    Compiling clap v4.5.53
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling iroh-metrics v0.37.0
[INFO] [stderr]    Compiling ed25519-dalek v3.0.0-pre.1
[INFO] [stderr]    Compiling iroh-quinn-proto v0.13.0
[INFO] [stderr]    Compiling crypto_box v0.10.0-pre.0
[INFO] [stderr]    Compiling attohttpc v0.30.1
[INFO] [stderr]    Compiling tokio-util v0.7.17
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling netlink-sys v0.8.7
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling async-compat v0.2.5
[INFO] [stderr]    Compiling backon v1.6.0
[INFO] [stderr]    Compiling netdev v0.38.2
[INFO] [stderr]    Compiling netlink-proto v0.12.0
[INFO] [stderr]    Compiling iroh-base v0.95.1
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.12
[INFO] [stderr]    Compiling tokio-websockets v0.12.3
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling n0-watcher v0.5.0
[INFO] [stderr]    Compiling rustls-platform-verifier v0.5.3
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hickory-proto v0.25.2
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling hickory-resolver v0.25.2
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling igd-next v0.16.2
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling portmapper v0.12.0
[INFO] [stderr]    Compiling irohscii v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: methods `ensure_shapes_map` and `get_shape_order_list` are never used
[INFO] [stdout]    --> src/document.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl Document {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Group`
[INFO] [stdout]  --> src/app.rs:8:55
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::document::{default_storage_path, Document, Group, GroupId, ShapeId};
[INFO] [stdout]   |                                                       ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:469:9
[INFO] [stdout]     |
[INFO] [stdout] 437 |         KeyCode::Char('r') => app.set_tool(Tool::Rectangle),
[INFO] [stdout]     |         ------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 469 |         KeyCode::Char('r') if app.show_layers && app.active_layer.is_some() => app.start_layer_rename(),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mouse` is never read
[INFO] [stdout]    --> src/app.rs:277:9
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub mouse: MouseState,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/app.rs:525:12
[INFO] [stdout]      |
[INFO] [stdout]  314 | impl App {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  525 |     pub fn dismiss_status(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  954 |     pub fn clear_hover_snap(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1024 |     pub fn try_select(&mut self, pos: Position) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1153 |     pub fn expand_selection_to_groups(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1171 |     pub fn get_selected_groups(&self) -> Vec<GroupId> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1182 |     pub fn is_grouped(&self, id: ShapeId) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2042 |     pub fn cycle_brush(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2059 |     pub fn cycle_color(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2182 |     pub fn automerge(&self) -> &automerge::Automerge {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Canvas` is never constructed
[INFO] [stdout]   --> src/canvas.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Canvas {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/canvas.rs:31:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl Canvas {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  31 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn get(&self, pos: Position) -> char {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, pos: Position, ch: char) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn bounds(&self) -> Option<(i32, i32, i32, i32)> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn to_string_content(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn from_string(content: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn draw_line(&mut self, from: Position, to: Position, ch: char) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn draw_rect(&mut self, from: Position, to: Position) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]    --> src/document.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct Document {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 110 |     id: DocumentId,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/document.rs:157:12
[INFO] [stdout]      |
[INFO] [stdout]  117 | impl Document {
[INFO] [stdout]      | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  157 |     pub fn from_automerge(doc: Automerge, id: DocumentId) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  214 |     pub fn automerge(&self) -> &Automerge {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  219 |     pub fn automerge_mut(&mut self) -> &mut Automerge {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  236 |     pub fn id(&self) -> DocumentId {
[INFO] [stdout]      |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  365 |     pub fn read_shape(&self, id: ShapeId) -> Result<Option<ShapeKind>> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  707 |     pub fn get_root_group(&self, id: GroupId) -> Result<GroupId> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1001 |     pub fn move_layer(&mut self, id: LayerId, new_index: usize) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1040 |     pub fn translate_shape(&mut self, id: ShapeId, dx: i32, dy: i32) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1050 |     pub fn update_connections_for_shape(&mut self, moved_id: ShapeId, dx: i32, dy: i32) -> Result<Vec<ShapeId>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1119 |     pub fn update_connections_for_resize(&mut self, resized_id: ShapeId, old_kind: &ShapeKind, new_kind: &ShapeKind) -> Result<Vec...
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_corresponding_snap` is never used
[INFO] [stdout]     --> src/document.rs:1926:4
[INFO] [stdout]      |
[INFO] [stdout] 1926 | fn find_corresponding_snap(pos: &Position, old_snaps: &[Position], new_snaps: &[Position]) -> Option<Position> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_id` is never used
[INFO] [stdout]   --> src/layers.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl Layer {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn with_id(id: LayerId, name: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `local_peer_id`, `has_earlier_dragger`, `peers_dragging`, and `peers_resizing` are never used
[INFO] [stdout]    --> src/presence.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl PresenceManager {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn local_peer_id(&self) -> PeerId {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn has_earlier_dragger(&self, shape_id: crate::document::ShapeId, our_start_ms: u64) -> Option<&PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn peers_dragging(&self) -> impl Iterator<Item = &PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn peers_resizing(&self) -> impl Iterator<Item = &PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next` is never used
[INFO] [stdout]    --> src/shapes.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl ShapeColor {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn next(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `connections` is never used
[INFO] [stdout]    --> src/shapes.rs:583:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl ShapeKind {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn connections(&self) -> (Option<u64>, Option<u64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/shapes.rs:872:12
[INFO] [stdout]     |
[INFO] [stdout] 870 | impl CachedShape {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] 871 |     /// Create a cached shape from id and kind
[INFO] [stdout] 872 |     pub fn new(id: ShapeId, kind: ShapeKind) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_layer_visible`, `len`, and `update_shapes` are never used
[INFO] [stdout]     --> src/shapes.rs:1285:12
[INFO] [stdout]      |
[INFO] [stdout] 1210 | impl ShapeView {
[INFO] [stdout]      | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1285 |     pub fn is_layer_visible(&self, layer_id: LayerId) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1364 |     pub fn len(&self) -> usize {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1369 |     pub fn update_shapes(&mut self, doc: &Document, ids: &[ShapeId]) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `storage_path` is never read
[INFO] [stdout]   --> src/sync/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct SyncConfig {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 33 |     pub mode: SyncMode,
[INFO] [stdout] 34 |     pub storage_path: Option<PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PeerStatus` is never constructed
[INFO] [stdout]   --> src/sync/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum SyncEvent {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 66 |     PeerStatus { peer_count: usize, connected: bool },
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ShapeChange` is never used
[INFO] [stdout]   --> src/sync/mod.rs:88:10
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub enum ShapeChange {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `local_peer_id` is never used
[INFO] [stdout]   --> src/sync/presence_protocol.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PresenceProtocol {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn local_peer_id(&self) -> PeerId {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UndoManager` is never constructed
[INFO] [stdout]   --> src/undo.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct UndoManager {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/undo.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl UndoManager {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 22 |     /// Create a new undo manager
[INFO] [stdout] 23 |     pub fn new(max_history: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn save_state(&mut self, doc: &Document) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn undo(&mut self, current_doc: &Document) -> Option<Automerge> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn redo(&mut self, current_doc: &Document) -> Option<Automerge> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn undo_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn redo_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 05s
[INFO] running `Command { std: "docker" "inspect" "dcc2827be8d7321535a3a108db7b05350175dd627f58ee107a9a86f977e295d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dcc2827be8d7321535a3a108db7b05350175dd627f58ee107a9a86f977e295d2", kill_on_drop: false }`
[INFO] [stdout] dcc2827be8d7321535a3a108db7b05350175dd627f58ee107a9a86f977e295d2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "--no-run" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 4ba17fb2f7c50d80785736a4afcb3ed5f1fccd1c0f96710b141da8708191ec67
[INFO] running `Command { std: "docker" "start" "-a" "4ba17fb2f7c50d80785736a4afcb3ed5f1fccd1c0f96710b141da8708191ec67", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling n0-future v0.3.1
[INFO] [stderr]    Compiling pkarr v5.0.0
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling backon v1.6.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling n0-watcher v0.5.0
[INFO] [stderr]    Compiling netwatch v0.12.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling iroh-relay v0.95.1
[INFO] [stderr]    Compiling portmapper v0.12.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling proptest v1.9.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling iroh v0.95.1
[INFO] [stderr]    Compiling irohscii v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: methods `ensure_shapes_map` and `get_shape_order_list` are never used
[INFO] [stdout]    --> src/document.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl Document {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ensure_shapes_map` and `get_shape_order_list` are never used
[INFO] [stdout]    --> src/document.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl Document {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Group`
[INFO] [stdout]  --> src/app.rs:8:55
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::document::{default_storage_path, Document, Group, GroupId, ShapeId};
[INFO] [stdout]   |                                                       ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Group`
[INFO] [stdout]  --> src/app.rs:8:55
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::document::{default_storage_path, Document, Group, GroupId, ShapeId};
[INFO] [stdout]   |                                                       ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:469:9
[INFO] [stdout]     |
[INFO] [stdout] 437 |         KeyCode::Char('r') => app.set_tool(Tool::Rectangle),
[INFO] [stdout]     |         ------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 469 |         KeyCode::Char('r') if app.show_layers && app.active_layer.is_some() => app.start_layer_rename(),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mouse` is never read
[INFO] [stdout]    --> src/app.rs:277:9
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub mouse: MouseState,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/app.rs:525:12
[INFO] [stdout]      |
[INFO] [stdout]  314 | impl App {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  525 |     pub fn dismiss_status(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  954 |     pub fn clear_hover_snap(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1024 |     pub fn try_select(&mut self, pos: Position) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1153 |     pub fn expand_selection_to_groups(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1171 |     pub fn get_selected_groups(&self) -> Vec<GroupId> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1182 |     pub fn is_grouped(&self, id: ShapeId) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2042 |     pub fn cycle_brush(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2059 |     pub fn cycle_color(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2182 |     pub fn automerge(&self) -> &automerge::Automerge {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Canvas` is never constructed
[INFO] [stdout]   --> src/canvas.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Canvas {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/canvas.rs:31:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl Canvas {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  31 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn get(&self, pos: Position) -> char {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn set(&mut self, pos: Position, ch: char) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn bounds(&self) -> Option<(i32, i32, i32, i32)> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn to_string_content(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn from_string(content: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn draw_line(&mut self, from: Position, to: Position, ch: char) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn draw_rect(&mut self, from: Position, to: Position) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]    --> src/document.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct Document {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 110 |     id: DocumentId,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/document.rs:157:12
[INFO] [stdout]      |
[INFO] [stdout]  117 | impl Document {
[INFO] [stdout]      | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  157 |     pub fn from_automerge(doc: Automerge, id: DocumentId) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  214 |     pub fn automerge(&self) -> &Automerge {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  219 |     pub fn automerge_mut(&mut self) -> &mut Automerge {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  236 |     pub fn id(&self) -> DocumentId {
[INFO] [stdout]      |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  365 |     pub fn read_shape(&self, id: ShapeId) -> Result<Option<ShapeKind>> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  707 |     pub fn get_root_group(&self, id: GroupId) -> Result<GroupId> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1001 |     pub fn move_layer(&mut self, id: LayerId, new_index: usize) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1040 |     pub fn translate_shape(&mut self, id: ShapeId, dx: i32, dy: i32) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1050 |     pub fn update_connections_for_shape(&mut self, moved_id: ShapeId, dx: i32, dy: i32) -> Result<Vec<ShapeId>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1119 |     pub fn update_connections_for_resize(&mut self, resized_id: ShapeId, old_kind: &ShapeKind, new_kind: &ShapeKind) -> Result<Vec...
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_corresponding_snap` is never used
[INFO] [stdout]     --> src/document.rs:1926:4
[INFO] [stdout]      |
[INFO] [stdout] 1926 | fn find_corresponding_snap(pos: &Position, old_snaps: &[Position], new_snaps: &[Position]) -> Option<Position> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_id` is never used
[INFO] [stdout]   --> src/layers.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl Layer {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn with_id(id: LayerId, name: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `local_peer_id`, `has_earlier_dragger`, `peers_dragging`, and `peers_resizing` are never used
[INFO] [stdout]    --> src/presence.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl PresenceManager {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn local_peer_id(&self) -> PeerId {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn has_earlier_dragger(&self, shape_id: crate::document::ShapeId, our_start_ms: u64) -> Option<&PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn peers_dragging(&self) -> impl Iterator<Item = &PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn peers_resizing(&self) -> impl Iterator<Item = &PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next` is never used
[INFO] [stdout]    --> src/shapes.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl ShapeColor {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn next(self) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `connections` is never used
[INFO] [stdout]    --> src/shapes.rs:583:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl ShapeKind {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn connections(&self) -> (Option<u64>, Option<u64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/shapes.rs:872:12
[INFO] [stdout]     |
[INFO] [stdout] 870 | impl CachedShape {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] 871 |     /// Create a cached shape from id and kind
[INFO] [stdout] 872 |     pub fn new(id: ShapeId, kind: ShapeKind) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_layer_visible`, `len`, and `update_shapes` are never used
[INFO] [stdout]     --> src/shapes.rs:1285:12
[INFO] [stdout]      |
[INFO] [stdout] 1210 | impl ShapeView {
[INFO] [stdout]      | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1285 |     pub fn is_layer_visible(&self, layer_id: LayerId) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1364 |     pub fn len(&self) -> usize {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1369 |     pub fn update_shapes(&mut self, doc: &Document, ids: &[ShapeId]) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `storage_path` is never read
[INFO] [stdout]   --> src/sync/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct SyncConfig {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 33 |     pub mode: SyncMode,
[INFO] [stdout] 34 |     pub storage_path: Option<PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PeerStatus` is never constructed
[INFO] [stdout]   --> src/sync/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum SyncEvent {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 66 |     PeerStatus { peer_count: usize, connected: bool },
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ShapeChange` is never used
[INFO] [stdout]   --> src/sync/mod.rs:88:10
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub enum ShapeChange {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `local_peer_id` is never used
[INFO] [stdout]   --> src/sync/presence_protocol.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PresenceProtocol {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn local_peer_id(&self) -> PeerId {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UndoManager` is never constructed
[INFO] [stdout]   --> src/undo.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct UndoManager {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/undo.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl UndoManager {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 22 |     /// Create a new undo manager
[INFO] [stdout] 23 |     pub fn new(max_history: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn save_state(&mut self, doc: &Document) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn undo(&mut self, current_doc: &Document) -> Option<Automerge> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn redo(&mut self, current_doc: &Document) -> Option<Automerge> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn undo_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn redo_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:469:9
[INFO] [stdout]     |
[INFO] [stdout] 437 |         KeyCode::Char('r') => app.set_tool(Tool::Rectangle),
[INFO] [stdout]     |         ------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 469 |         KeyCode::Char('r') if app.show_layers && app.active_layer.is_some() => app.start_layer_rename(),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mouse` is never read
[INFO] [stdout]    --> src/app.rs:277:9
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub mouse: MouseState,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/app.rs:525:12
[INFO] [stdout]      |
[INFO] [stdout]  314 | impl App {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  525 |     pub fn dismiss_status(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  954 |     pub fn clear_hover_snap(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1024 |     pub fn try_select(&mut self, pos: Position) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1153 |     pub fn expand_selection_to_groups(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1171 |     pub fn get_selected_groups(&self) -> Vec<GroupId> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1182 |     pub fn is_grouped(&self, id: ShapeId) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2042 |     pub fn cycle_brush(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2059 |     pub fn cycle_color(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2182 |     pub fn automerge(&self) -> &automerge::Automerge {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]    --> src/document.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct Document {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 110 |     id: DocumentId,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/document.rs:157:12
[INFO] [stdout]      |
[INFO] [stdout]  117 | impl Document {
[INFO] [stdout]      | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  157 |     pub fn from_automerge(doc: Automerge, id: DocumentId) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  219 |     pub fn automerge_mut(&mut self) -> &mut Automerge {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  236 |     pub fn id(&self) -> DocumentId {
[INFO] [stdout]      |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  365 |     pub fn read_shape(&self, id: ShapeId) -> Result<Option<ShapeKind>> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  707 |     pub fn get_root_group(&self, id: GroupId) -> Result<GroupId> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1001 |     pub fn move_layer(&mut self, id: LayerId, new_index: usize) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1040 |     pub fn translate_shape(&mut self, id: ShapeId, dx: i32, dy: i32) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1050 |     pub fn update_connections_for_shape(&mut self, moved_id: ShapeId, dx: i32, dy: i32) -> Result<Vec<ShapeId>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1119 |     pub fn update_connections_for_resize(&mut self, resized_id: ShapeId, old_kind: &ShapeKind, new_kind: &ShapeKind) -> Result<Vec...
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `local_peer_id`, `has_earlier_dragger`, `peers_dragging`, and `peers_resizing` are never used
[INFO] [stdout]    --> src/presence.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl PresenceManager {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn local_peer_id(&self) -> PeerId {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn has_earlier_dragger(&self, shape_id: crate::document::ShapeId, our_start_ms: u64) -> Option<&PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn peers_dragging(&self) -> impl Iterator<Item = &PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn peers_resizing(&self) -> impl Iterator<Item = &PeerPresence> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `connections` is never used
[INFO] [stdout]    --> src/shapes.rs:583:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl ShapeKind {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn connections(&self) -> (Option<u64>, Option<u64>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_layer_visible` and `update_shapes` are never used
[INFO] [stdout]     --> src/shapes.rs:1285:12
[INFO] [stdout]      |
[INFO] [stdout] 1210 | impl ShapeView {
[INFO] [stdout]      | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1285 |     pub fn is_layer_visible(&self, layer_id: LayerId) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1369 |     pub fn update_shapes(&mut self, doc: &Document, ids: &[ShapeId]) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `storage_path` is never read
[INFO] [stdout]   --> src/sync/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct SyncConfig {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 33 |     pub mode: SyncMode,
[INFO] [stdout] 34 |     pub storage_path: Option<PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PeerStatus` is never constructed
[INFO] [stdout]   --> src/sync/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum SyncEvent {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 66 |     PeerStatus { peer_count: usize, connected: bool },
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ShapeChange` is never used
[INFO] [stdout]   --> src/sync/mod.rs:88:10
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub enum ShapeChange {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `local_peer_id` is never used
[INFO] [stdout]   --> src/sync/presence_protocol.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PresenceProtocol {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn local_peer_id(&self) -> PeerId {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 11s
[INFO] running `Command { std: "docker" "inspect" "4ba17fb2f7c50d80785736a4afcb3ed5f1fccd1c0f96710b141da8708191ec67", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4ba17fb2f7c50d80785736a4afcb3ed5f1fccd1c0f96710b141da8708191ec67", kill_on_drop: false }`
[INFO] [stdout] 4ba17fb2f7c50d80785736a4afcb3ed5f1fccd1c0f96710b141da8708191ec67
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] a47fb8676f5819cd36e82c6463ede57a35c72de0cafcb1defe1c5aab6cb75cdc
[INFO] running `Command { std: "docker" "start" "-a" "a47fb8676f5819cd36e82c6463ede57a35c72de0cafcb1defe1c5aab6cb75cdc", kill_on_drop: false }`
[INFO] [stderr] warning: methods `ensure_shapes_map` and `get_shape_order_list` are never used
[INFO] [stderr]    --> src/document.rs:269:8
[INFO] [stderr]     |
[INFO] [stderr] 117 | impl Document {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `irohscii` (lib) generated 1 warning
[INFO] [stderr] warning: unused import: `Group`
[INFO] [stderr]  --> src/app.rs:8:55
[INFO] [stderr]   |
[INFO] [stderr] 8 | use crate::document::{default_storage_path, Document, Group, GroupId, ShapeId};
[INFO] [stderr]   |                                                       ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/main.rs:469:9
[INFO] [stderr]     |
[INFO] [stderr] 437 |         KeyCode::Char('r') => app.set_tool(Tool::Rectangle),
[INFO] [stderr]     |         ------------------ matches all the relevant values
[INFO] [stderr] ...
[INFO] [stderr] 469 |         KeyCode::Char('r') if app.show_layers && app.active_layer.is_some() => app.start_layer_rename(),
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `mouse` is never read
[INFO] [stderr]    --> src/app.rs:277:9
[INFO] [stderr]     |
[INFO] [stderr] 262 | pub struct App {
[INFO] [stderr]     |            --- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 277 |     pub mouse: MouseState,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]     --> src/app.rs:525:12
[INFO] [stderr]      |
[INFO] [stderr]  314 | impl App {
[INFO] [stderr]      | -------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  525 |     pub fn dismiss_status(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  954 |     pub fn clear_hover_snap(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1024 |     pub fn try_select(&mut self, pos: Position) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1153 |     pub fn expand_selection_to_groups(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1171 |     pub fn get_selected_groups(&self) -> Vec<GroupId> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1182 |     pub fn is_grouped(&self, id: ShapeId) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2042 |     pub fn cycle_brush(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2059 |     pub fn cycle_color(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2182 |     pub fn automerge(&self) -> &automerge::Automerge {
[INFO] [stderr]      |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Canvas` is never constructed
[INFO] [stderr]   --> src/canvas.rs:20:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct Canvas {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/canvas.rs:31:12
[INFO] [stderr]     |
[INFO] [stderr]  30 | impl Canvas {
[INFO] [stderr]     | ----------- associated items in this implementation
[INFO] [stderr]  31 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  38 |     pub fn get(&self, pos: Position) -> char {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  43 |     pub fn set(&mut self, pos: Position, ch: char) {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  52 |     pub fn bounds(&self) -> Option<(i32, i32, i32, i32)> {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  73 |     pub fn clear(&mut self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  78 |     pub fn to_string_content(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 103 |     pub fn from_string(content: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 116 |     pub fn draw_line(&mut self, from: Position, to: Position, ch: char) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 123 |     pub fn draw_rect(&mut self, from: Position, to: Position) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `id` is never read
[INFO] [stderr]    --> src/document.rs:110:5
[INFO] [stderr]     |
[INFO] [stderr] 106 | pub struct Document {
[INFO] [stderr]     |            -------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 110 |     id: DocumentId,
[INFO] [stderr]     |     ^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]     --> src/document.rs:157:12
[INFO] [stderr]      |
[INFO] [stderr]  117 | impl Document {
[INFO] [stderr]      | ------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  157 |     pub fn from_automerge(doc: Automerge, id: DocumentId) -> Self {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  214 |     pub fn automerge(&self) -> &Automerge {
[INFO] [stderr]      |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  219 |     pub fn automerge_mut(&mut self) -> &mut Automerge {
[INFO] [stderr]      |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  236 |     pub fn id(&self) -> DocumentId {
[INFO] [stderr]      |            ^^
[INFO] [stderr] ...
[INFO] [stderr]  269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  365 |     pub fn read_shape(&self, id: ShapeId) -> Result<Option<ShapeKind>> {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  707 |     pub fn get_root_group(&self, id: GroupId) -> Result<GroupId> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1001 |     pub fn move_layer(&mut self, id: LayerId, new_index: usize) -> Result<()> {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1040 |     pub fn translate_shape(&mut self, id: ShapeId, dx: i32, dy: i32) -> Result<()> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1050 |     pub fn update_connections_for_shape(&mut self, moved_id: ShapeId, dx: i32, dy: i32) -> Result<Vec<ShapeId>> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1119 |     pub fn update_connections_for_resize(&mut self, resized_id: ShapeId, old_kind: &ShapeKind, new_kind: &ShapeKind) -> Result<Vec...
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `find_corresponding_snap` is never used
[INFO] [stderr]     --> src/document.rs:1926:4
[INFO] [stderr]      |
[INFO] [stderr] 1926 | fn find_corresponding_snap(pos: &Position, old_snaps: &[Position], new_snaps: &[Position]) -> Option<Position> {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `with_id` is never used
[INFO] [stderr]   --> src/layers.rs:50:12
[INFO] [stderr]    |
[INFO] [stderr] 40 | impl Layer {
[INFO] [stderr]    | ---------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 50 |     pub fn with_id(id: LayerId, name: impl Into<String>) -> Self {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `local_peer_id`, `has_earlier_dragger`, `peers_dragging`, and `peers_resizing` are never used
[INFO] [stderr]    --> src/presence.rs:199:12
[INFO] [stderr]     |
[INFO] [stderr] 190 | impl PresenceManager {
[INFO] [stderr]     | -------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 199 |     pub fn local_peer_id(&self) -> PeerId {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 244 |     pub fn has_earlier_dragger(&self, shape_id: crate::document::ShapeId, our_start_ms: u64) -> Option<&PeerPresence> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 252 |     pub fn peers_dragging(&self) -> impl Iterator<Item = &PeerPresence> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 259 |     pub fn peers_resizing(&self) -> impl Iterator<Item = &PeerPresence> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `next` is never used
[INFO] [stderr]    --> src/shapes.rs:105:12
[INFO] [stderr]     |
[INFO] [stderr]  37 | impl ShapeColor {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 105 |     pub fn next(self) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `connections` is never used
[INFO] [stderr]    --> src/shapes.rs:583:12
[INFO] [stderr]     |
[INFO] [stderr] 273 | impl ShapeKind {
[INFO] [stderr]     | -------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 583 |     pub fn connections(&self) -> (Option<u64>, Option<u64>) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/shapes.rs:872:12
[INFO] [stderr]     |
[INFO] [stderr] 870 | impl CachedShape {
[INFO] [stderr]     | ---------------- associated function in this implementation
[INFO] [stderr] 871 |     /// Create a cached shape from id and kind
[INFO] [stderr] 872 |     pub fn new(id: ShapeId, kind: ShapeKind) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_layer_visible`, `len`, and `update_shapes` are never used
[INFO] [stderr]     --> src/shapes.rs:1285:12
[INFO] [stderr]      |
[INFO] [stderr] 1210 | impl ShapeView {
[INFO] [stderr]      | -------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 1285 |     pub fn is_layer_visible(&self, layer_id: LayerId) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1364 |     pub fn len(&self) -> usize {
[INFO] [stderr]      |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 1369 |     pub fn update_shapes(&mut self, doc: &Document, ids: &[ShapeId]) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `storage_path` is never read
[INFO] [stderr]   --> src/sync/mod.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub struct SyncConfig {
[INFO] [stderr]    |            ---------- field in this struct
[INFO] [stderr] 33 |     pub mode: SyncMode,
[INFO] [stderr] 34 |     pub storage_path: Option<PathBuf>,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SyncConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `PeerStatus` is never constructed
[INFO] [stderr]   --> src/sync/mod.rs:66:5
[INFO] [stderr]    |
[INFO] [stderr] 60 | pub enum SyncEvent {
[INFO] [stderr]    |          --------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 66 |     PeerStatus { peer_count: usize, connected: bool },
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SyncEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ShapeChange` is never used
[INFO] [stderr]   --> src/sync/mod.rs:88:10
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub enum ShapeChange {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `local_peer_id` is never used
[INFO] [stderr]   --> src/sync/presence_protocol.rs:64:12
[INFO] [stderr]    |
[INFO] [stderr] 43 | impl PresenceProtocol {
[INFO] [stderr]    | --------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 64 |     pub fn local_peer_id(&self) -> PeerId {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `UndoManager` is never constructed
[INFO] [stderr]   --> src/undo.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct UndoManager {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]   --> src/undo.rs:23:12
[INFO] [stderr]    |
[INFO] [stderr] 21 | impl UndoManager {
[INFO] [stderr]    | ---------------- associated items in this implementation
[INFO] [stderr] 22 |     /// Create a new undo manager
[INFO] [stderr] 23 |     pub fn new(max_history: usize) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub fn save_state(&mut self, doc: &Document) {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 44 |     pub fn undo(&mut self, current_doc: &Document) -> Option<Automerge> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub fn redo(&mut self, current_doc: &Document) -> Option<Automerge> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 70 |     pub fn can_undo(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 75 |     pub fn can_redo(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 80 |     pub fn clear(&mut self) {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 86 |     pub fn undo_count(&self) -> usize {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 91 |     pub fn redo_count(&self) -> usize {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `irohscii` (bin "irohscii") generated 21 warnings (run `cargo fix --bin "irohscii" -p irohscii` to apply 1 suggestion)
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]     --> src/document.rs:157:12
[INFO] [stderr]      |
[INFO] [stderr]  117 | impl Document {
[INFO] [stderr]      | ------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  157 |     pub fn from_automerge(doc: Automerge, id: DocumentId) -> Self {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  219 |     pub fn automerge_mut(&mut self) -> &mut Automerge {
[INFO] [stderr]      |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  236 |     pub fn id(&self) -> DocumentId {
[INFO] [stderr]      |            ^^
[INFO] [stderr] ...
[INFO] [stderr]  269 |     fn ensure_shapes_map(&mut self) -> Result<ObjId> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  286 |     fn get_shape_order_list(&self) -> Result<ObjId> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  365 |     pub fn read_shape(&self, id: ShapeId) -> Result<Option<ShapeKind>> {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  707 |     pub fn get_root_group(&self, id: GroupId) -> Result<GroupId> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1001 |     pub fn move_layer(&mut self, id: LayerId, new_index: usize) -> Result<()> {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1040 |     pub fn translate_shape(&mut self, id: ShapeId, dx: i32, dy: i32) -> Result<()> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1050 |     pub fn update_connections_for_shape(&mut self, moved_id: ShapeId, dx: i32, dy: i32) -> Result<Vec<ShapeId>> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1119 |     pub fn update_connections_for_resize(&mut self, resized_id: ShapeId, old_kind: &ShapeKind, new_kind: &ShapeKind) -> Result<Vec...
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_layer_visible` and `update_shapes` are never used
[INFO] [stderr]     --> src/shapes.rs:1285:12
[INFO] [stderr]      |
[INFO] [stderr] 1210 | impl ShapeView {
[INFO] [stderr]      | -------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 1285 |     pub fn is_layer_visible(&self, layer_id: LayerId) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1369 |     pub fn update_shapes(&mut self, doc: &Document, ids: &[ShapeId]) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `irohscii` (bin "irohscii" test) generated 13 warnings (11 duplicates)
[INFO] [stderr] warning: `irohscii` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.75s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/irohscii/cc7bc01d9915c016/deps/irohscii-cc7bc01d9915c016)
[INFO] [stdout] 
[INFO] [stdout] running 149 tests
[INFO] [stdout] test canvas::tests::arrow_points_down ... ok
[INFO] [stdout] test canvas::tests::arrow_points_left ... ok
[INFO] [stdout] test canvas::tests::arrow_points_up ... ok
[INFO] [stdout] test canvas::tests::canvas_clear ... ok
[INFO] [stdout] test canvas::tests::canvas_bounds_single_char ... ok
[INFO] [stdout] test canvas::tests::canvas_bounds_multiple_chars ... ok
[INFO] [stdout] test canvas::tests::canvas_draw_line ... ok
[INFO] [stdout] test canvas::tests::arrow_points_has_arrowhead ... ok
[INFO] [stdout] test canvas::tests::canvas_default ... ok
[INFO] [stdout] test canvas::tests::canvas_bounds_empty ... ok
[INFO] [stdout] test canvas::tests::canvas_draw_rect ... ok
[INFO] [stdout] test canvas::tests::canvas_new_is_empty ... ok
[INFO] [stdout] test canvas::tests::canvas_set_and_get ... ok
[INFO] [stdout] test canvas::tests::canvas_set_space_removes ... ok
[INFO] [stdout] test canvas::tests::line_points_contiguous ... ok
[INFO] [stdout] test canvas::tests::line_points_diagonal_45_degrees ... ok
[INFO] [stdout] test canvas::tests::ellipse_points_small ... ok
[INFO] [stdout] test canvas::tests::line_points_negative_coords ... ok
[INFO] [stdout] test canvas::tests::line_points_horizontal ... ok
[INFO] [stdout] test canvas::tests::line_points_styled_orthogonal_hv ... ok
[INFO] [stdout] test canvas::tests::line_points_styled_straight_horizontal ... ok
[INFO] [stdout] test canvas::tests::line_points_reverse_direction ... ok
[INFO] [stdout] test canvas::tests::line_points_styled_straight_vertical ... ok
[INFO] [stdout] test canvas::tests::line_points_vertical ... ok
[INFO] [stdout] test canvas::tests::canvas_to_string_empty ... ok
[INFO] [stdout] test canvas::tests::cloud_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::diamond_points_has_tips ... ok
[INFO] [stdout] test canvas::tests::double_rect_points_full ... ok
[INFO] [stdout] test canvas::tests::diamond_points_small ... ok
[INFO] [stdout] test canvas::tests::cylinder_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::canvas_to_string_and_from_string ... ok
[INFO] [stdout] test canvas::tests::line_points_single_point ... ok
[INFO] [stdout] test canvas::tests::hexagon_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::line_style_name ... ok
[INFO] [stdout] test canvas::tests::parallelogram_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::line_style_cycle ... ok
[INFO] [stdout] test canvas::tests::position_hash ... ok
[INFO] [stdout] test canvas::tests::ellipse_points_has_sides ... ok
[INFO] [stdout] test canvas::tests::rect_points_full_rect ... ok
[INFO] [stdout] test canvas::tests::position_negative_coords ... ok
[INFO] [stdout] test canvas::tests::rect_points_horizontal_line ... ok
[INFO] [stdout] test canvas::tests::rect_points_single_point ... ok
[INFO] [stdout] test canvas::tests::rounded_rect_points_full ... ok
[INFO] [stdout] test canvas::tests::position_new ... ok
[INFO] [stdout] test canvas::tests::star_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::rect_points_swapped_corners ... ok
[INFO] [stdout] test canvas::tests::rect_points_vertical_line ... ok
[INFO] [stdout] test canvas::tests::trapezoid_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::triangle_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::viewport_canvas_to_screen_visible ... ok
[INFO] [stdout] test canvas::tests::viewport_canvas_to_screen_not_visible ... ok
[INFO] [stdout] test canvas::tests::viewport_resize ... ok
[INFO] [stdout] test canvas::tests::viewport_screen_to_canvas ... ok
[INFO] [stdout] test canvas::tests::viewport_screen_to_canvas_with_offset ... ok
[INFO] [stdout] test canvas::tests::viewport_new ... ok
[INFO] [stdout] test canvas::tests::line_style_default ... ok
[INFO] [stdout] test canvas::tests::position_equality ... ok
[INFO] [stdout] test canvas::proptest_tests::line_points_are_contiguous ... ok
[INFO] [stdout] test canvas::proptest_tests::viewport_roundtrip ... ok
[INFO] [stdout] test canvas::tests::viewport_pan ... ok
[INFO] [stdout] test document::tests::document_id_display ... ok
[INFO] [stdout] test document::tests::document_id_new_unique ... ok
[INFO] [stdout] test canvas::proptest_tests::line_includes_endpoints ... ok
[INFO] [stdout] test canvas::proptest_tests::rect_bounds_normalized ... ok
[INFO] [stdout] test document::tests::document_default_layer ... ok
[INFO] [stdout] test document::tests::document_mark_dirty ... ok
[INFO] [stdout] test document::tests::document_layer_visibility ... ok
[INFO] [stdout] test document::tests::document_layer_locked ... ok
[INFO] [stdout] test document::tests::document_create_layer ... ok
[INFO] [stdout] test document::tests::document_add_shape ... ok
[INFO] [stdout] test document::tests::document_delete_layer ... ok
[INFO] [stdout] test document::tests::document_dirty_flag ... ok
[INFO] [stdout] test document::tests::document_create_group ... ok
[INFO] [stdout] test document::tests::document_delete_shape ... ok
[INFO] [stdout] test document::tests::document_delete_group ... ok
[INFO] [stdout] test document::tests::document_add_multiple_shapes ... ok
[INFO] [stdout] test document::tests::document_bring_to_front ... ok
[INFO] [stdout] test document::tests::document_bring_forward ... ok
[INFO] [stdout] test document::tests::group_id_display ... ok
[INFO] [stdout] test document::tests::str_to_shape_color_all_colors ... ok
[INFO] [stdout] test document::tests::shape_id_new_unique ... ok
[INFO] [stdout] test document::tests::str_to_shape_color_unknown ... ok
[INFO] [stdout] test document::tests::find_corresponding_snap_basic ... ok
[INFO] [stdout] test layers::tests::layer_default ... ok
[INFO] [stdout] test document::tests::shape_id_display ... ok
[INFO] [stdout] test document::tests::find_corresponding_snap_empty ... ok
[INFO] [stdout] test layers::tests::layer_id_default ... ok
[INFO] [stdout] test layers::tests::layer_id_display ... ok
[INFO] [stdout] test layers::tests::layer_id_equality ... ok
[INFO] [stdout] test layers::tests::layer_id_hash ... ok
[INFO] [stdout] test layers::tests::layer_id_new_unique ... ok
[INFO] [stdout] test presence::tests::peer_presence_color_index_deterministic ... ok
[INFO] [stdout] test presence::tests::peer_presence_color_index_within_bounds ... ok
[INFO] [stdout] test presence::tests::activity_labels_are_not_empty ... ok
[INFO] [stdout] test presence::tests::peer_presence_serialization_roundtrip_without_layer ... ok
[INFO] [stdout] test presence::tests::peer_presence_serialization_roundtrip_with_layer ... ok
[INFO] [stdout] test presence::tests::presence_manager_does_not_store_local_peer ... ok
[INFO] [stdout] test layers::tests::layer_new ... ok
[INFO] [stdout] test presence::tests::peer_presence_with_layer ... ok
[INFO] [stdout] test presence::tests::peer_presence_without_layer ... ok
[INFO] [stdout] test document::tests::group_id_new_unique ... ok
[INFO] [stdout] test layers::tests::layer_with_id ... ok
[INFO] [stdout] test presence::tests::presence_manager_updates_existing_peer ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_freehand ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_rectangle ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_rectangle_swapped ... ok
[INFO] [stdout] test presence::tests::presence_message_serialization ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_text ... ok
[INFO] [stdout] test shapes::tests::cached_shape_contains ... ok
[INFO] [stdout] test shapes::tests::cached_shape_label ... ok
[INFO] [stdout] test shapes::tests::cached_shape_resize_handles_line ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_ellipse ... ok
[INFO] [stdout] test presence::tests::presence_manager_update_peer_with_layer ... ok
[INFO] [stdout] test shapes::tests::cached_shape_resize_handles_rectangle ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_freehand_empty ... ok
[INFO] [stdout] test presence::tests::peer_presence_display_name_format ... ok
[INFO] [stdout] test shapes::tests::resize_ellipse ... ok
[INFO] [stdout] test shapes::tests::resize_rectangle_bottom_right ... ok
[INFO] [stdout] test shapes::tests::shape_color_name ... ok
[INFO] [stdout] test shapes::tests::resize_rectangle_top_left ... ok
[INFO] [stdout] test shapes::tests::shape_color_cycle_all ... ok
[INFO] [stdout] test document::tests::document_merge ... ok
[INFO] [stdout] test shapes::tests::resize_line_end ... ok
[INFO] [stdout] test shapes::tests::resize_line_start ... ok
[INFO] [stdout] test shapes::tests::shape_color_default ... ok
[INFO] [stdout] test shapes::tests::shape_kind_snap_points_line ... ok
[INFO] [stdout] test shapes::tests::shape_kind_supports_label ... ok
[INFO] [stdout] test shapes::tests::shape_color_to_css ... ok
[INFO] [stdout] test shapes::tests::shape_kind_translated_freehand ... ok
[INFO] [stdout] test shapes::tests::shape_kind_translated_text ... ok
[INFO] [stdout] test shapes::tests::shape_kind_label ... ok
[INFO] [stdout] test shapes::tests::shape_kind_snap_points_rectangle ... ok
[INFO] [stdout] test shapes::tests::shape_kind_color ... ok
[INFO] [stdout] test shapes::tests::shape_kind_translated_rectangle ... ok
[INFO] [stdout] test shapes::tests::shape_kind_type_name ... ok
[INFO] [stdout] test shapes::tests::shape_view_default ... ok
[INFO] [stdout] test shapes::tests::shape_kind_with_color ... ok
[INFO] [stdout] test shapes::tests::shape_kind_translated_line ... ok
[INFO] [stdout] test document::tests::document_new ... ok
[INFO] [stdout] test shapes::tests::shape_view_new ... ok
[INFO] [stdout] test shapes::tests::cached_shape_snap_points ... ok
[INFO] [stdout] test shapes::tests::shape_kind_with_label ... ok
[INFO] [stdout] test document::tests::document_rename_layer ... ok
[INFO] [stdout] test document::tests::document_save_and_load ... ok
[INFO] [stdout] test document::tests::document_update_shape ... ok
[INFO] [stdout] test document::tests::document_shape_order ... ok
[INFO] [stdout] test document::tests::document_send_backward ... ok
[INFO] [stdout] test document::tests::document_send_to_back ... ok
[INFO] [stdout] test document::tests::document_read_all_groups ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 149 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.76s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/irohscii/fd4a439e28ce7e74/deps/irohscii-fd4a439e28ce7e74)
[INFO] [stdout] 
[INFO] [stdout] running 199 tests
[INFO] [stdout] test canvas::tests::arrow_points_has_arrowhead ... ok
[INFO] [stdout] test canvas::tests::canvas_bounds_multiple_chars ... ok
[INFO] [stdout] test canvas::tests::canvas_clear ... ok
[INFO] [stdout] test canvas::tests::canvas_bounds_single_char ... ok
[INFO] [stdout] test canvas::tests::canvas_bounds_empty ... ok
[INFO] [stdout] test canvas::tests::arrow_points_up ... ok
[INFO] [stdout] test canvas::tests::arrow_points_down ... ok
[INFO] [stdout] test canvas::tests::canvas_default ... ok
[INFO] [stdout] test canvas::tests::arrow_points_left ... ok
[INFO] [stdout] test canvas::tests::canvas_draw_line ... ok
[INFO] [stdout] test canvas::tests::canvas_set_space_removes ... ok
[INFO] [stdout] test canvas::tests::canvas_to_string_empty ... ok
[INFO] [stdout] test canvas::tests::cloud_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::diamond_points_has_tips ... ok
[INFO] [stdout] test canvas::tests::diamond_points_small ... ok
[INFO] [stdout] test canvas::tests::canvas_to_string_and_from_string ... ok
[INFO] [stdout] test canvas::tests::canvas_draw_rect ... ok
[INFO] [stdout] test canvas::tests::double_rect_points_full ... ok
[INFO] [stdout] test canvas::tests::line_points_horizontal ... ok
[INFO] [stdout] test canvas::tests::ellipse_points_small ... ok
[INFO] [stdout] test canvas::tests::line_points_negative_coords ... ok
[INFO] [stdout] test canvas::tests::hexagon_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::line_points_diagonal_45_degrees ... ok
[INFO] [stdout] test canvas::tests::line_points_reverse_direction ... ok
[INFO] [stdout] test canvas::tests::line_points_single_point ... ok
[INFO] [stdout] test canvas::tests::line_points_styled_orthogonal_hv ... ok
[INFO] [stdout] test canvas::tests::line_points_styled_straight_horizontal ... ok
[INFO] [stdout] test canvas::tests::line_points_styled_straight_vertical ... ok
[INFO] [stdout] test canvas::tests::line_points_vertical ... ok
[INFO] [stdout] test canvas::tests::line_points_contiguous ... ok
[INFO] [stdout] test canvas::tests::line_style_default ... ok
[INFO] [stdout] test canvas::tests::line_style_name ... ok
[INFO] [stdout] test canvas::tests::cylinder_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::parallelogram_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::position_equality ... ok
[INFO] [stdout] test canvas::tests::line_style_cycle ... ok
[INFO] [stdout] test canvas::tests::position_negative_coords ... ok
[INFO] [stdout] test canvas::tests::position_hash ... ok
[INFO] [stdout] test canvas::tests::position_new ... ok
[INFO] [stdout] test canvas::tests::rect_points_full_rect ... ok
[INFO] [stdout] test canvas::tests::rect_points_single_point ... ok
[INFO] [stdout] test canvas::tests::rect_points_swapped_corners ... ok
[INFO] [stdout] test canvas::tests::rect_points_vertical_line ... ok
[INFO] [stdout] test canvas::tests::trapezoid_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::triangle_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::star_points_not_empty ... ok
[INFO] [stdout] test canvas::tests::viewport_canvas_to_screen_visible ... ok
[INFO] [stdout] test canvas::tests::viewport_canvas_to_screen_not_visible ... ok
[INFO] [stdout] test canvas::tests::viewport_resize ... ok
[INFO] [stdout] test canvas::tests::viewport_screen_to_canvas ... ok
[INFO] [stdout] test canvas::tests::viewport_pan ... ok
[INFO] [stdout] test canvas::tests::viewport_new ... ok
[INFO] [stdout] test canvas::tests::viewport_screen_to_canvas_with_offset ... ok
[INFO] [stdout] test canvas::tests::rect_points_horizontal_line ... ok
[INFO] [stdout] test canvas::tests::rounded_rect_points_full ... ok
[INFO] [stdout] test canvas::proptest_tests::line_points_are_contiguous ... ok
[INFO] [stdout] test canvas::proptest_tests::line_includes_endpoints ... ok
[INFO] [stdout] test canvas::proptest_tests::viewport_roundtrip ... ok
[INFO] [stdout] test canvas::proptest_tests::rect_bounds_normalized ... ok
[INFO] [stdout] test document::tests::document_id_display ... ok
[INFO] [stdout] test document::tests::document_id_new_unique ... ok
[INFO] [stdout] test canvas::tests::canvas_set_and_get ... ok
[INFO] [stdout] test document::tests::document_default_layer ... ok
[INFO] [stdout] test document::tests::document_layer_visibility ... ok
[INFO] [stdout] test document::tests::document_layer_locked ... ok
[INFO] [stdout] test document::tests::document_create_layer ... ok
[INFO] [stdout] test document::tests::document_add_shape ... ok
[INFO] [stdout] test document::tests::document_mark_dirty ... ok
[INFO] [stdout] test document::tests::document_rename_layer ... ok
[INFO] [stdout] test document::tests::document_dirty_flag ... ok
[INFO] [stdout] test document::tests::document_delete_layer ... ok
[INFO] [stdout] test document::tests::document_new ... ok
[INFO] [stdout] test document::tests::find_corresponding_snap_basic ... ok
[INFO] [stdout] test document::tests::find_corresponding_snap_empty ... ok
[INFO] [stdout] test document::tests::group_id_display ... ok
[INFO] [stdout] test document::tests::group_id_new_unique ... ok
[INFO] [stdout] test document::tests::shape_id_display ... ok
[INFO] [stdout] test document::tests::shape_id_new_unique ... ok
[INFO] [stdout] test document::tests::str_to_shape_color_all_colors ... ok
[INFO] [stdout] test document::tests::str_to_shape_color_unknown ... ok
[INFO] [stdout] test file_io::tests::load_ascii_nonexistent_file ... ok
[INFO] [stdout] test file_io::tests::load_ascii_preserves_lines ... ok
[INFO] [stdout] test file_io::tests::load_ascii_skips_empty_lines ... ok
[INFO] [stdout] test file_io::tests::render_label_to_grid_centered ... ok
[INFO] [stdout] test canvas::tests::canvas_new_is_empty ... ok
[INFO] [stdout] test document::tests::document_delete_shape ... ok
[INFO] [stdout] test document::tests::document_create_group ... ok
[INFO] [stdout] test document::tests::document_delete_group ... ok
[INFO] [stdout] test document::tests::document_update_shape ... ok
[INFO] [stdout] test file_io::tests::render_shapes_to_text_empty ... ok
[INFO] [stdout] test document::tests::document_add_multiple_shapes ... ok
[INFO] [stdout] test layers::tests::layer_id_default ... ok
[INFO] [stdout] test layers::tests::layer_default ... ok
[INFO] [stdout] test document::tests::document_bring_to_front ... ok
[INFO] [stdout] test layers::tests::layer_id_hash ... ok
[INFO] [stdout] test layers::tests::layer_id_new_unique ... ok
[INFO] [stdout] test layers::tests::layer_new ... ok
[INFO] [stdout] test layers::tests::layer_with_id ... ok
[INFO] [stdout] test layers::tests::layer_id_display ... ok
[INFO] [stdout] test presence::tests::activity_labels_are_not_empty ... ok
[INFO] [stdout] test layers::tests::layer_id_equality ... ok
[INFO] [stdout] test presence::tests::peer_presence_color_index_deterministic ... ok
[INFO] [stdout] test presence::tests::peer_presence_color_index_within_bounds ... ok
[INFO] [stdout] test document::tests::document_bring_forward ... ok
[INFO] [stdout] test presence::tests::peer_presence_display_name_format ... ok
[INFO] [stdout] test presence::tests::peer_presence_serialization_roundtrip_without_layer ... ok
[INFO] [stdout] test presence::tests::presence_manager_does_not_store_local_peer ... ok
[INFO] [stdout] test presence::tests::presence_manager_update_peer_with_layer ... ok
[INFO] [stdout] test presence::tests::presence_manager_updates_existing_peer ... ok
[INFO] [stdout] test presence::tests::presence_message_serialization ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_ellipse ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_freehand ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_freehand_empty ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_rectangle ... ok
[INFO] [stdout] test presence::tests::peer_presence_without_layer ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_rectangle_swapped ... ok
[INFO] [stdout] test shapes::tests::cached_shape_bounds_text ... ok
[INFO] [stdout] test presence::tests::peer_presence_serialization_roundtrip_with_layer ... ok
[INFO] [stdout] test presence::tests::peer_presence_with_layer ... ok
[INFO] [stdout] test file_io::tests::render_shapes_to_text_text_shape ... ok
[INFO] [stdout] test shapes::tests::cached_shape_label ... ok
[INFO] [stdout] test shapes::tests::cached_shape_resize_handles_line ... ok
[INFO] [stdout] test shapes::tests::resize_ellipse ... ok
[INFO] [stdout] test shapes::tests::cached_shape_resize_handles_rectangle ... ok
[INFO] [stdout] test shapes::tests::cached_shape_snap_points ... ok
[INFO] [stdout] test file_io::tests::save_and_load_ascii_roundtrip ... ok
[INFO] [stdout] test shapes::tests::resize_line_end ... ok
[INFO] [stdout] test shapes::tests::resize_rectangle_bottom_right ... ok
[INFO] [stdout] test shapes::tests::cached_shape_contains ... ok
[INFO] [stdout] test shapes::tests::shape_color_name ... ok
[INFO] [stdout] test shapes::tests::shape_color_default ... ok
[INFO] [stdout] test shapes::tests::shape_kind_label ... ok
[INFO] [stdout] test shapes::tests::shape_color_cycle_all ... ok
[INFO] [stdout] test shapes::tests::shape_kind_snap_points_rectangle ... ok
[INFO] [stdout] test shapes::tests::resize_rectangle_top_left ... ok
[INFO] [stdout] test shapes::tests::shape_kind_translated_freehand ... ok
[INFO] [stdout] test shapes::tests::shape_kind_translated_line ... ok
[INFO] [stdout] test shapes::tests::shape_color_to_css ... ok
[INFO] [stdout] test shapes::tests::shape_kind_snap_points_line ... ok
[INFO] [stdout] test shapes::tests::shape_kind_supports_label ... ok
[INFO] [stdout] test document::tests::document_save_and_load ... ok
[INFO] [stdout] test shapes::tests::resize_line_start ... ok
[INFO] [stdout] test shapes::tests::shape_kind_translated_rectangle ... ok
[INFO] [stdout] test shapes::tests::shape_kind_with_color ... ok
[INFO] [stdout] test shapes::tests::shape_kind_type_name ... ok
[INFO] [stdout] test shapes::tests::shape_kind_translated_text ... ok
[INFO] [stdout] test shapes::tests::shape_kind_with_label ... ok
[INFO] [stdout] test shapes::tests::shape_view_default ... ok
[INFO] [stdout] test shapes::tests::shape_view_new ... ok
[INFO] [stdout] test svg_export::tests::escape_xml_greater_than ... ok
[INFO] [stdout] test svg_export::tests::escape_xml_less_than ... ok
[INFO] [stdout] test svg_export::tests::escape_xml_apostrophe ... ok
[INFO] [stdout] test svg_export::tests::escape_xml_ampersand ... ok
[INFO] [stdout] test svg_export::tests::escape_xml_multiple ... ok
[INFO] [stdout] test svg_export::tests::escape_xml_none_needed ... ok
[INFO] [stdout] test file_io::tests::save_ascii_creates_file ... ok
[INFO] [stdout] test svg_export::tests::escape_xml_quote ... ok
[INFO] [stdout] test document::tests::document_merge ... ok
[INFO] [stdout] test svg_export::tests::calculate_bounds_empty ... ok
[INFO] [stdout] test file_io::tests::render_shapes_to_text_single_rect ... ok
[INFO] [stdout] test document::tests::document_send_to_back ... ok
[INFO] [stdout] test svg_export::tests::export_svg_ellipse ... ok
[INFO] [stdout] test document::tests::document_send_backward ... ok
[INFO] [stdout] test file_io::tests::render_shapes_to_text_with_label ... ok
[INFO] [stdout] test canvas::tests::ellipse_points_has_sides ... ok
[INFO] [stdout] test svg_export::tests::export_svg_line ... ok
[INFO] [stdout] test document::tests::document_shape_order ... ok
[INFO] [stdout] test svg_export::tests::calculate_bounds_multiple_shapes ... ok
[INFO] [stdout] test svg_export::tests::calculate_bounds_single_rect ... ok
[INFO] [stdout] test svg_export::tests::export_svg_arrow ... ok
[INFO] [stdout] test svg_export::tests::export_svg_has_arrow_marker ... ok
[INFO] [stdout] test svg_export::tests::export_svg_rectangle ... ok
[INFO] [stdout] test document::tests::document_read_all_groups ... ok
[INFO] [stdout] test svg_export::tests::export_svg_has_footer ... ok
[INFO] [stdout] test svg_export::tests::export_svg_has_header ... ok
[INFO] [stdout] test svg_export::tests::to_svg_coords_origin ... ok
[INFO] [stdout] test svg_export::tests::to_svg_coords_negative ... ok
[INFO] [stdout] test svg_export::tests::to_svg_coords_positive ... ok
[INFO] [stdout] test ui::tests::truncate_name_unicode ... ok
[INFO] [stdout] test ui::tests::truncate_name_empty_string ... ok
[INFO] [stdout] test ui::tests::truncate_name_exact_length ... ok
[INFO] [stdout] test ui::tests::truncate_name_long_string ... ok
[INFO] [stdout] test undo::tests::undo_manager_new ... ok
[INFO] [stdout] test ui::tests::truncate_name_very_small_max ... ok
[INFO] [stdout] test undo::tests::undo_manager_default ... ok
[INFO] [stdout] test undo::tests::undo_manager_save_state ... ok
[INFO] [stdout] test svg_export::tests::export_svg_text ... ok
[INFO] [stdout] test undo::tests::undo_manager_clear ... ok
[INFO] [stdout] test undo::tests::undo_manager_save_clears_redo ... ok
[INFO] [stdout] test svg_export::tests::export_svg_with_color ... ok
[INFO] [stdout] test undo::tests::undo_manager_redo_empty ... ok
[INFO] [stdout] test undo::tests::undo_manager_max_history ... ok
[INFO] [stdout] test undo::tests::undo_manager_undo_redo_cycle ... ok
[INFO] [stdout] test undo::tests::undo_manager_undo_empty ... ok
[INFO] [stdout] test svg_export::tests::save_svg_creates_file ... ok
[INFO] [stdout] test svg_export::tests::export_svg_with_label ... ok
[INFO] [stdout] test shapes::tests::shape_kind_color ... ok
[INFO] [stdout] test ui::tests::truncate_name_whitespace ... ok
[INFO] [stdout] test ui::tests::truncate_name_short_string ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 199 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.65s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/sync_integration.rs (/opt/rustwide/target/debug/build/irohscii/7da98504b9aa98bd/deps/sync_integration-7da98504b9aa98bd)
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test proptest_tests::proptest_ticket_prefix_required ... ok
[INFO] [stdout] test proptest_tests::proptest_ticket_format_invariants ... ok
[INFO] [stdout] test test_ticket_encoding_roundtrip ... ok
[INFO] [stdout] test test_late_joiner_receives_full_state ... ok
[INFO] [stdout] test test_layer_presence_sync ... ok
[INFO] [stdout] test test_graceful_shutdown_presence_removed ... ok
[INFO] [stdout] test test_multiple_peers_same_layer ... ok
[INFO] [stdout] test test_layer_id_serialization_roundtrip ... ok
[INFO] [stdout] test test_concurrent_shape_modification ... ok
[INFO] [stdout] test test_layer_switching_updates_presence ... ok
[INFO] [stdout] test test_presence_sync ... ok
[INFO] [stdout] test test_presence_without_layer ... ok
[INFO] [stdout] test test_peer_disconnect_handling ... ok
[INFO] [stdout] test test_concurrent_edits_converge ... ok
[INFO] [stdout] test test_three_peer_mesh_sync ... ok
[INFO] [stdout] test test_bidirectional_sync ... ok
[INFO] [stdout] test test_invalid_ticket_rejected ... ok
[INFO] [stdout] test test_rapid_layer_switching_presence ... ok
[INFO] [stdout] test test_two_peer_document_sync ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 27.70s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests irohscii
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "a47fb8676f5819cd36e82c6463ede57a35c72de0cafcb1defe1c5aab6cb75cdc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a47fb8676f5819cd36e82c6463ede57a35c72de0cafcb1defe1c5aab6cb75cdc", kill_on_drop: false }`
[INFO] [stdout] a47fb8676f5819cd36e82c6463ede57a35c72de0cafcb1defe1c5aab6cb75cdc
