[INFO] fetching crate dot_parse 0.2.0...
[INFO] testing dot_parse-0.2.0 against 1.90.0 for beta-1.91-3
[INFO] extracting crate dot_parse 0.2.0 into /workspace/builds/worker-2-tc1/source
[INFO] started tweaking crates.io crate dot_parse 0.2.0
[INFO] finished tweaking crates.io crate dot_parse 0.2.0
[INFO] tweaked toml for crates.io crate dot_parse 0.2.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate dot_parse 0.2.0 on toolchain 1.90.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate dot_parse 0.2.0 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" "+1.90.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded more-asserts v0.2.1
[INFO] [stderr]   Downloaded dot v0.1.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 273aae82a9ee6f0bd7cd294fd5ccde75502a96c73e9489c25a3de3132f576b62
[INFO] running `Command { std: "docker" "start" "-a" "273aae82a9ee6f0bd7cd294fd5ccde75502a96c73e9489c25a3de3132f576b62", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "273aae82a9ee6f0bd7cd294fd5ccde75502a96c73e9489c25a3de3132f576b62", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "273aae82a9ee6f0bd7cd294fd5ccde75502a96c73e9489c25a3de3132f576b62", kill_on_drop: false }`
[INFO] [stdout] 273aae82a9ee6f0bd7cd294fd5ccde75502a96c73e9489c25a3de3132f576b62
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 91fff1f3ff329e59e5343238394b3f17c5a799e15dbb6faf7fe83468bde77496
[INFO] running `Command { std: "docker" "start" "-a" "91fff1f3ff329e59e5343238394b3f17c5a799e15dbb6faf7fe83468bde77496", kill_on_drop: false }`
[INFO] [stderr]    Compiling more-asserts v0.2.1
[INFO] [stderr]    Compiling dot v0.1.4
[INFO] [stderr]    Compiling dot_parse v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:257:10
[INFO] [stdout]     |
[INFO] [stdout] 257 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/lib.rs:350:61
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stdout]     |                                                             ^                ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 350 -     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stdout] 350 +     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, (usize, &'a str)> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:361:10
[INFO] [stdout]     |
[INFO] [stdout] 361 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:401:10
[INFO] [stdout]     |
[INFO] [stdout] 401 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:705:10
[INFO] [stdout]     |
[INFO] [stdout] 705 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:10:13
[INFO] [stdout]     |
[INFO] [stdout]  10 |             _ => false
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout] ...
[INFO] [stdout] 235 |             (Some(a), Some(_b)) => matches!(a, _b) && id_match(self, other),
[INFO] [stdout]     |                                    ---------------
[INFO] [stdout]     |                                    |           |
[INFO] [stdout]     |                                    |           matches any value
[INFO] [stdout]     |                                    in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `matches` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:10:13
[INFO] [stdout]     |
[INFO] [stdout]  10 |             _ => false
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout] ...
[INFO] [stdout] 488 |         matches!(self, other)
[INFO] [stdout]     |         ---------------------
[INFO] [stdout]     |         |              |
[INFO] [stdout]     |         |              matches any value
[INFO] [stdout]     |         in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `matches` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/lib.rs:488:24
[INFO] [stdout]     |
[INFO] [stdout] 488 |         matches!(self, other)
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/lib.rs:487:18
[INFO] [stdout]     |
[INFO] [stdout] 487 |     fn eq(&self, other: &Self) -> bool {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:604:21
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     key_subgraph => parse_stmt_list_and_return(None, 2),
[INFO] [stdout]     |                     ------------ matches any value
[INFO] [stdout] 604 |                     _ => Err((0, "expecting subgraph")),
[INFO] [stdout]     |                     ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: there is a binding of the same name; if you meant to pattern match against the value of that binding, that is a feature of constants that is not available for `let` bindings
[INFO] [stdout]    --> src/lib.rs:597:13
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let key_subgraph: &str = "subgraph";
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:609:21
[INFO] [stdout]     |
[INFO] [stdout] 608 |                     (key_subgraph, Ok(id)) => parse_stmt_list_and_return(Some(id), 3),
[INFO] [stdout]     |                     ---------------------- matches all the relevant values
[INFO] [stdout] 609 |                     (_, Ok(_)) => Err((0, "expecting subgraph")),
[INFO] [stdout]     |                     ^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:597:13
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let key_subgraph: &str = "subgraph";
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_brace`
[INFO] [stdout]    --> src/lib.rs:598:13
[INFO] [stdout]     |
[INFO] [stdout] 598 |         let right_brace: &str = "}";
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_brace`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_brace`
[INFO] [stdout]    --> src/lib.rs:600:42
[INFO] [stdout]     |
[INFO] [stdout] 600 |             (Some(idx_left_brace), Some(&right_brace)) => match idx_left_brace {
[INFO] [stdout]     |                                          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_brace`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:603:21
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     key_subgraph => parse_stmt_list_and_return(None, 2),
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:608:22
[INFO] [stdout]     |
[INFO] [stdout] 608 |                     (key_subgraph, Ok(id)) => parse_stmt_list_and_return(Some(id), 3),
[INFO] [stdout]     |                      ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get` and `len` are never used
[INFO] [stdout]    --> src/lib.rs:421:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | impl<'a> AList<'a> {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 421 |     fn get(&self, key: &str) -> Option<&IdWrapper<'a>> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     fn len(&self) -> usize {
[INFO] [stdout]     |        ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `key` and `attr_list` are never read
[INFO] [stdout]    --> src/lib.rs:504:5
[INFO] [stdout]     |
[INFO] [stdout] 503 | pub struct AttrStmt<'a> {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 504 |     key: AttrStmtKey,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 505 |     attr_list: AttrList<'a>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `attr_list` are never read
[INFO] [stdout]    --> src/lib.rs:533:5
[INFO] [stdout]     |
[INFO] [stdout] 532 | pub struct NodeStmt<'a> {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 533 |     id: NodeId<'a>,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 534 |     attr_list: Option<AttrList<'a>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `stmt_list` are never read
[INFO] [stdout]    --> src/lib.rs:577:5
[INFO] [stdout]     |
[INFO] [stdout] 576 | pub struct SubGraph<'a> {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 577 |     id: Option<dot::Id<'a>>,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 578 |     stmt_list: StmtList<'a>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `attr_list` is never read
[INFO] [stdout]    --> src/lib.rs:718:5
[INFO] [stdout]     |
[INFO] [stdout] 715 | pub struct EdgeStmt<'a> {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 718 |     attr_list: Option<AttrList<'a>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.91s
[INFO] running `Command { std: "docker" "inspect" "91fff1f3ff329e59e5343238394b3f17c5a799e15dbb6faf7fe83468bde77496", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "91fff1f3ff329e59e5343238394b3f17c5a799e15dbb6faf7fe83468bde77496", kill_on_drop: false }`
[INFO] [stdout] 91fff1f3ff329e59e5343238394b3f17c5a799e15dbb6faf7fe83468bde77496
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fc952ea32fdfe4dd7d1c08e31dcc75cabd047d02042f900b94632071f51f347b
[INFO] running `Command { std: "docker" "start" "-a" "fc952ea32fdfe4dd7d1c08e31dcc75cabd047d02042f900b94632071f51f347b", kill_on_drop: false }`
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:257:10
[INFO] [stdout]     |
[INFO] [stdout] 257 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/lib.rs:350:61
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stdout]     |                                                             ^                ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 350 -     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stdout] 350 +     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, (usize, &'a str)> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:361:10
[INFO] [stdout]     |
[INFO] [stdout] 361 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:401:10
[INFO] [stdout]     |
[INFO] [stdout] 401 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:705:10
[INFO] [stdout]     |
[INFO] [stdout] 705 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:10:13
[INFO] [stdout]     |
[INFO] [stdout]  10 |             _ => false
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout] ...
[INFO] [stdout] 235 |             (Some(a), Some(_b)) => matches!(a, _b) && id_match(self, other),
[INFO] [stdout]     |                                    ---------------
[INFO] [stdout]     |                                    |           |
[INFO] [stdout]     |                                    |           matches any value
[INFO] [stdout]     |                                    in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `matches` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:10:13
[INFO] [stdout]     |
[INFO] [stdout]  10 |             _ => false
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout] ...
[INFO] [stdout] 488 |         matches!(self, other)
[INFO] [stdout]     |         ---------------------
[INFO] [stdout]     |         |              |
[INFO] [stdout]     |         |              matches any value
[INFO] [stdout]     |         in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `matches` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/lib.rs:488:24
[INFO] [stdout]     |
[INFO] [stdout] 488 |         matches!(self, other)
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/lib.rs:487:18
[INFO] [stdout]     |
[INFO] [stdout] 487 |     fn eq(&self, other: &Self) -> bool {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:604:21
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     key_subgraph => parse_stmt_list_and_return(None, 2),
[INFO] [stdout]     |                     ------------ matches any value
[INFO] [stdout] 604 |                     _ => Err((0, "expecting subgraph")),
[INFO] [stdout]     |                     ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: there is a binding of the same name; if you meant to pattern match against the value of that binding, that is a feature of constants that is not available for `let` bindings
[INFO] [stdout]    --> src/lib.rs:597:13
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let key_subgraph: &str = "subgraph";
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling dot_parse v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:609:21
[INFO] [stdout]     |
[INFO] [stdout] 608 |                     (key_subgraph, Ok(id)) => parse_stmt_list_and_return(Some(id), 3),
[INFO] [stdout]     |                     ---------------------- matches all the relevant values
[INFO] [stdout] 609 |                     (_, Ok(_)) => Err((0, "expecting subgraph")),
[INFO] [stdout]     |                     ^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:597:13
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let key_subgraph: &str = "subgraph";
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_brace`
[INFO] [stdout]    --> src/lib.rs:598:13
[INFO] [stdout]     |
[INFO] [stdout] 598 |         let right_brace: &str = "}";
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_brace`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_brace`
[INFO] [stdout]    --> src/lib.rs:600:42
[INFO] [stdout]     |
[INFO] [stdout] 600 |             (Some(idx_left_brace), Some(&right_brace)) => match idx_left_brace {
[INFO] [stdout]     |                                          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_brace`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:603:21
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     key_subgraph => parse_stmt_list_and_return(None, 2),
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:608:22
[INFO] [stdout]     |
[INFO] [stdout] 608 |                     (key_subgraph, Ok(id)) => parse_stmt_list_and_return(Some(id), 3),
[INFO] [stdout]     |                      ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get` and `len` are never used
[INFO] [stdout]    --> src/lib.rs:421:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | impl<'a> AList<'a> {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 421 |     fn get(&self, key: &str) -> Option<&IdWrapper<'a>> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     fn len(&self) -> usize {
[INFO] [stdout]     |        ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `key` and `attr_list` are never read
[INFO] [stdout]    --> src/lib.rs:504:5
[INFO] [stdout]     |
[INFO] [stdout] 503 | pub struct AttrStmt<'a> {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 504 |     key: AttrStmtKey,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 505 |     attr_list: AttrList<'a>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `attr_list` are never read
[INFO] [stdout]    --> src/lib.rs:533:5
[INFO] [stdout]     |
[INFO] [stdout] 532 | pub struct NodeStmt<'a> {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 533 |     id: NodeId<'a>,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 534 |     attr_list: Option<AttrList<'a>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `stmt_list` are never read
[INFO] [stdout]    --> src/lib.rs:577:5
[INFO] [stdout]     |
[INFO] [stdout] 576 | pub struct SubGraph<'a> {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 577 |     id: Option<dot::Id<'a>>,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 578 |     stmt_list: StmtList<'a>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `attr_list` is never read
[INFO] [stdout]    --> src/lib.rs:718:5
[INFO] [stdout]     |
[INFO] [stdout] 715 | pub struct EdgeStmt<'a> {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 718 |     attr_list: Option<AttrList<'a>>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:257:10
[INFO] [stdout]     |
[INFO] [stdout] 257 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/lib.rs:350:61
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stdout]     |                                                             ^                ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 350 -     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stdout] 350 +     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, (usize, &'a str)> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:361:10
[INFO] [stdout]     |
[INFO] [stdout] 361 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:401:10
[INFO] [stdout]     |
[INFO] [stdout] 401 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/lib.rs:705:10
[INFO] [stdout]     |
[INFO] [stdout] 705 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:10:13
[INFO] [stdout]     |
[INFO] [stdout]  10 |             _ => false
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout] ...
[INFO] [stdout] 235 |             (Some(a), Some(_b)) => matches!(a, _b) && id_match(self, other),
[INFO] [stdout]     |                                    ---------------
[INFO] [stdout]     |                                    |           |
[INFO] [stdout]     |                                    |           matches any value
[INFO] [stdout]     |                                    in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `matches` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:10:13
[INFO] [stdout]     |
[INFO] [stdout]  10 |             _ => false
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout] ...
[INFO] [stdout] 488 |         matches!(self, other)
[INFO] [stdout]     |         ---------------------
[INFO] [stdout]     |         |              |
[INFO] [stdout]     |         |              matches any value
[INFO] [stdout]     |         in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `matches` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/lib.rs:488:24
[INFO] [stdout]     |
[INFO] [stdout] 488 |         matches!(self, other)
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/lib.rs:487:18
[INFO] [stdout]     |
[INFO] [stdout] 487 |     fn eq(&self, other: &Self) -> bool {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:604:21
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     key_subgraph => parse_stmt_list_and_return(None, 2),
[INFO] [stdout]     |                     ------------ matches any value
[INFO] [stdout] 604 |                     _ => Err((0, "expecting subgraph")),
[INFO] [stdout]     |                     ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: there is a binding of the same name; if you meant to pattern match against the value of that binding, that is a feature of constants that is not available for `let` bindings
[INFO] [stdout]    --> src/lib.rs:597:13
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let key_subgraph: &str = "subgraph";
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/lib.rs:609:21
[INFO] [stdout]     |
[INFO] [stdout] 608 |                     (key_subgraph, Ok(id)) => parse_stmt_list_and_return(Some(id), 3),
[INFO] [stdout]     |                     ---------------------- matches all the relevant values
[INFO] [stdout] 609 |                     (_, Ok(_)) => Err((0, "expecting subgraph")),
[INFO] [stdout]     |                     ^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:597:13
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let key_subgraph: &str = "subgraph";
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_brace`
[INFO] [stdout]    --> src/lib.rs:598:13
[INFO] [stdout]     |
[INFO] [stdout] 598 |         let right_brace: &str = "}";
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_brace`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_brace`
[INFO] [stdout]    --> src/lib.rs:600:42
[INFO] [stdout]     |
[INFO] [stdout] 600 |             (Some(idx_left_brace), Some(&right_brace)) => match idx_left_brace {
[INFO] [stdout]     |                                          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_brace`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:603:21
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     key_subgraph => parse_stmt_list_and_return(None, 2),
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_subgraph`
[INFO] [stdout]    --> src/lib.rs:608:22
[INFO] [stdout]     |
[INFO] [stdout] 608 |                     (key_subgraph, Ok(id)) => parse_stmt_list_and_return(Some(id), 3),
[INFO] [stdout]     |                      ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `attr_list` is never read
[INFO] [stdout]    --> src/lib.rs:505:5
[INFO] [stdout]     |
[INFO] [stdout] 503 | pub struct AttrStmt<'a> {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] 504 |     key: AttrStmtKey,
[INFO] [stdout] 505 |     attr_list: AttrList<'a>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stmt_list` is never read
[INFO] [stdout]    --> src/lib.rs:578:5
[INFO] [stdout]     |
[INFO] [stdout] 576 | pub struct SubGraph<'a> {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] 577 |     id: Option<dot::Id<'a>>,
[INFO] [stdout] 578 |     stmt_list: StmtList<'a>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:948:35
[INFO] [stdout]     |
[INFO] [stdout] 948 |         assert!(!alist_5.is_ok(), alist_5.unwrap());
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stdout] help: add a "{:?}" format string to use the `Debug` implementation of `AList<'_>`
[INFO] [stdout]     |
[INFO] [stdout] 948 |         assert!(!alist_5.is_ok(), "{:?}", alist_5.unwrap());
[INFO] [stdout]     |                                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:951:35
[INFO] [stdout]     |
[INFO] [stdout] 951 |         assert!(!alist_6.is_ok(), alist_6.unwrap());
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{:?}" format string to use the `Debug` implementation of `AList<'_>`
[INFO] [stdout]     |
[INFO] [stdout] 951 |         assert!(!alist_6.is_ok(), "{:?}", alist_6.unwrap());
[INFO] [stdout]     |                                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:992:41
[INFO] [stdout]     |
[INFO] [stdout] 992 |             assert!(!attr_list.is_ok(), attr_list.unwrap());
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{:?}" format string to use the `Debug` implementation of `AttrList<'_>`
[INFO] [stdout]     |
[INFO] [stdout] 992 |             assert!(!attr_list.is_ok(), "{:?}", attr_list.unwrap());
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:997:41
[INFO] [stdout]     |
[INFO] [stdout] 997 |             assert!(!attr_list.is_ok(), attr_list.unwrap());
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{:?}" format string to use the `Debug` implementation of `AttrList<'_>`
[INFO] [stdout]     |
[INFO] [stdout] 997 |             assert!(!attr_list.is_ok(), "{:?}", attr_list.unwrap());
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1005:41
[INFO] [stdout]      |
[INFO] [stdout] 1005 |             assert!(!node_stmt.is_ok(), node_stmt.unwrap());
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1043:41
[INFO] [stdout]      |
[INFO] [stdout] 1043 |             assert!(!node_stmt.is_ok(), node_stmt.unwrap());
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1055:41
[INFO] [stdout]      |
[INFO] [stdout] 1055 |             assert!(!node_stmt.is_ok(), node_stmt.unwrap());
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1061:41
[INFO] [stdout]      |
[INFO] [stdout] 1061 |             assert!(!node_stmt.is_ok(), node_stmt.unwrap());
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1075:36
[INFO] [stdout]      |
[INFO] [stdout] 1075 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1075 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1075 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1088:36
[INFO] [stdout]      |
[INFO] [stdout] 1088 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1088 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1088 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1102:36
[INFO] [stdout]      |
[INFO] [stdout] 1102 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1102 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1102 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1112:36
[INFO] [stdout]      |
[INFO] [stdout] 1112 |                     assert!(false, subgraph);
[INFO] [stdout]      |                                    ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1125:36
[INFO] [stdout]      |
[INFO] [stdout] 1125 |                     assert!(false, subgraph);
[INFO] [stdout]      |                                    ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1145:36
[INFO] [stdout]      |
[INFO] [stdout] 1145 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1145 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1145 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1159:36
[INFO] [stdout]      |
[INFO] [stdout] 1159 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1159 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1159 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1189:36
[INFO] [stdout]      |
[INFO] [stdout] 1189 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1189 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1189 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1203:36
[INFO] [stdout]      |
[INFO] [stdout] 1203 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1203 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1203 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1222:36
[INFO] [stdout]      |
[INFO] [stdout] 1222 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1222 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1222 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1236:36
[INFO] [stdout]      |
[INFO] [stdout] 1236 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1236 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1236 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1246:55
[INFO] [stdout]      |
[INFO] [stdout] 1246 |                     assert!(stmt.attr_stmt.is_some(), stmt);
[INFO] [stdout]      |                                                       ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{:?}" format string to use the `Debug` implementation of `Stmt<'_>`
[INFO] [stdout]      |
[INFO] [stdout] 1246 |                     assert!(stmt.attr_stmt.is_some(), "{:?}", stmt);
[INFO] [stdout]      |                                                       +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1250:36
[INFO] [stdout]      |
[INFO] [stdout] 1250 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1250 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1250 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1260:57
[INFO] [stdout]      |
[INFO] [stdout] 1260 |                     assert!(stmt.assign_stmt.is_some(), stmt);
[INFO] [stdout]      |                                                         ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{:?}" format string to use the `Debug` implementation of `Stmt<'_>`
[INFO] [stdout]      |
[INFO] [stdout] 1260 |                     assert!(stmt.assign_stmt.is_some(), "{:?}", stmt);
[INFO] [stdout]      |                                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1266:36
[INFO] [stdout]      |
[INFO] [stdout] 1266 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1266 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1266 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1276:54
[INFO] [stdout]      |
[INFO] [stdout] 1276 |                     assert!(stmt.subgraph.is_some(), stmt);
[INFO] [stdout]      |                                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{:?}" format string to use the `Debug` implementation of `Stmt<'_>`
[INFO] [stdout]      |
[INFO] [stdout] 1276 |                     assert!(stmt.subgraph.is_some(), "{:?}", stmt);
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1279:36
[INFO] [stdout]      |
[INFO] [stdout] 1279 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1279 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1279 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/lib.rs:1298:36
[INFO] [stdout]      |
[INFO] [stdout] 1298 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1298 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] 1298 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.97s
[INFO] running `Command { std: "docker" "inspect" "fc952ea32fdfe4dd7d1c08e31dcc75cabd047d02042f900b94632071f51f347b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fc952ea32fdfe4dd7d1c08e31dcc75cabd047d02042f900b94632071f51f347b", kill_on_drop: false }`
[INFO] [stdout] fc952ea32fdfe4dd7d1c08e31dcc75cabd047d02042f900b94632071f51f347b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 413c2e4fdd52469d76fb974b9d4f8494ecdd4aa95da6948ec81a100b26a90b23
[INFO] running `Command { std: "docker" "start" "-a" "413c2e4fdd52469d76fb974b9d4f8494ecdd4aa95da6948ec81a100b26a90b23", kill_on_drop: false }`
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/lib.rs:257:10
[INFO] [stderr]     |
[INFO] [stderr] 257 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around type
[INFO] [stderr]    --> src/lib.rs:350:61
[INFO] [stderr]     |
[INFO] [stderr] 350 |     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stderr]     |                                                             ^                ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 350 -     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stderr] 350 +     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, (usize, &'a str)> {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/lib.rs:361:10
[INFO] [stderr]     |
[INFO] [stderr] 361 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/lib.rs:401:10
[INFO] [stderr]     |
[INFO] [stderr] 401 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/lib.rs:705:10
[INFO] [stderr]     |
[INFO] [stderr] 705 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/lib.rs:10:13
[INFO] [stderr]     |
[INFO] [stderr]  10 |             _ => false
[INFO] [stderr]     |             ^ no value can reach this
[INFO] [stderr] ...
[INFO] [stderr] 235 |             (Some(a), Some(_b)) => matches!(a, _b) && id_match(self, other),
[INFO] [stderr]     |                                    ---------------
[INFO] [stderr]     |                                    |           |
[INFO] [stderr]     |                                    |           matches any value
[INFO] [stderr]     |                                    in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stderr]     = note: this warning originates in the macro `matches` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/lib.rs:10:13
[INFO] [stderr]     |
[INFO] [stderr]  10 |             _ => false
[INFO] [stderr]     |             ^ no value can reach this
[INFO] [stderr] ...
[INFO] [stderr] 488 |         matches!(self, other)
[INFO] [stderr]     |         ---------------------
[INFO] [stderr]     |         |              |
[INFO] [stderr]     |         |              matches any value
[INFO] [stderr]     |         in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `matches` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `other`
[INFO] [stderr]    --> src/lib.rs:488:24
[INFO] [stderr]     |
[INFO] [stderr] 488 |         matches!(self, other)
[INFO] [stderr]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `other`
[INFO] [stderr]    --> src/lib.rs:487:18
[INFO] [stderr]     |
[INFO] [stderr] 487 |     fn eq(&self, other: &Self) -> bool {
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/lib.rs:604:21
[INFO] [stderr]     |
[INFO] [stderr] 603 |                     key_subgraph => parse_stmt_list_and_return(None, 2),
[INFO] [stderr]     |                     ------------ matches any value
[INFO] [stderr] 604 |                     _ => Err((0, "expecting subgraph")),
[INFO] [stderr]     |                     ^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr] note: there is a binding of the same name; if you meant to pattern match against the value of that binding, that is a feature of constants that is not available for `let` bindings
[INFO] [stderr]    --> src/lib.rs:597:13
[INFO] [stderr]     |
[INFO] [stderr] 597 |         let key_subgraph: &str = "subgraph";
[INFO] [stderr]     |             ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/lib.rs:609:21
[INFO] [stderr]     |
[INFO] [stderr] 608 |                     (key_subgraph, Ok(id)) => parse_stmt_list_and_return(Some(id), 3),
[INFO] [stderr]     |                     ---------------------- matches all the relevant values
[INFO] [stderr] 609 |                     (_, Ok(_)) => Err((0, "expecting subgraph")),
[INFO] [stderr]     |                     ^^^^^^^^^^ no value can reach this
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `key_subgraph`
[INFO] [stderr]    --> src/lib.rs:597:13
[INFO] [stderr]     |
[INFO] [stderr] 597 |         let key_subgraph: &str = "subgraph";
[INFO] [stderr]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `right_brace`
[INFO] [stderr]    --> src/lib.rs:598:13
[INFO] [stderr]     |
[INFO] [stderr] 598 |         let right_brace: &str = "}";
[INFO] [stderr]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_brace`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `right_brace`
[INFO] [stderr]    --> src/lib.rs:600:42
[INFO] [stderr]     |
[INFO] [stderr] 600 |             (Some(idx_left_brace), Some(&right_brace)) => match idx_left_brace {
[INFO] [stderr]     |                                          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_brace`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `key_subgraph`
[INFO] [stderr]    --> src/lib.rs:603:21
[INFO] [stderr]     |
[INFO] [stderr] 603 |                     key_subgraph => parse_stmt_list_and_return(None, 2),
[INFO] [stderr]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `key_subgraph`
[INFO] [stderr]    --> src/lib.rs:608:22
[INFO] [stderr]     |
[INFO] [stderr] 608 |                     (key_subgraph, Ok(id)) => parse_stmt_list_and_return(Some(id), 3),
[INFO] [stderr]     |                      ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_subgraph`
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get` and `len` are never used
[INFO] [stderr]    --> src/lib.rs:421:8
[INFO] [stderr]     |
[INFO] [stderr] 384 | impl<'a> AList<'a> {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 421 |     fn get(&self, key: &str) -> Option<&IdWrapper<'a>> {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 425 |     fn len(&self) -> usize {
[INFO] [stderr]     |        ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `key` and `attr_list` are never read
[INFO] [stderr]    --> src/lib.rs:504:5
[INFO] [stderr]     |
[INFO] [stderr] 503 | pub struct AttrStmt<'a> {
[INFO] [stderr]     |            -------- fields in this struct
[INFO] [stderr] 504 |     key: AttrStmtKey,
[INFO] [stderr]     |     ^^^
[INFO] [stderr] 505 |     attr_list: AttrList<'a>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `id` and `attr_list` are never read
[INFO] [stderr]    --> src/lib.rs:533:5
[INFO] [stderr]     |
[INFO] [stderr] 532 | pub struct NodeStmt<'a> {
[INFO] [stderr]     |            -------- fields in this struct
[INFO] [stderr] 533 |     id: NodeId<'a>,
[INFO] [stderr]     |     ^^
[INFO] [stderr] 534 |     attr_list: Option<AttrList<'a>>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `id` and `stmt_list` are never read
[INFO] [stderr]    --> src/lib.rs:577:5
[INFO] [stderr]     |
[INFO] [stderr] 576 | pub struct SubGraph<'a> {
[INFO] [stderr]     |            -------- fields in this struct
[INFO] [stderr] 577 |     id: Option<dot::Id<'a>>,
[INFO] [stderr]     |     ^^
[INFO] [stderr] 578 |     stmt_list: StmtList<'a>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `attr_list` is never read
[INFO] [stderr]    --> src/lib.rs:718:5
[INFO] [stderr]     |
[INFO] [stderr] 715 | pub struct EdgeStmt<'a> {
[INFO] [stderr]     |            -------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 718 |     attr_list: Option<AttrList<'a>>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `dot_parse` (lib) generated 21 warnings (run `cargo fix --lib -p dot_parse` to apply 1 suggestion)
[INFO] [stderr] warning: field `attr_list` is never read
[INFO] [stderr]    --> src/lib.rs:505:5
[INFO] [stderr]     |
[INFO] [stderr] 503 | pub struct AttrStmt<'a> {
[INFO] [stderr]     |            -------- field in this struct
[INFO] [stderr] 504 |     key: AttrStmtKey,
[INFO] [stderr] 505 |     attr_list: AttrList<'a>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `stmt_list` is never read
[INFO] [stderr]    --> src/lib.rs:578:5
[INFO] [stderr]     |
[INFO] [stderr] 576 | pub struct SubGraph<'a> {
[INFO] [stderr]     |            -------- field in this struct
[INFO] [stderr] 577 |     id: Option<dot::Id<'a>>,
[INFO] [stderr] 578 |     stmt_list: StmtList<'a>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/lib.rs:948:35
[INFO] [stderr]     |
[INFO] [stderr] 948 |         assert!(!alist_5.is_ok(), alist_5.unwrap());
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]     = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stderr] help: add a "{:?}" format string to use the `Debug` implementation of `AList<'_>`
[INFO] [stderr]     |
[INFO] [stderr] 948 |         assert!(!alist_5.is_ok(), "{:?}", alist_5.unwrap());
[INFO] [stderr]     |                                   +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/lib.rs:951:35
[INFO] [stderr]     |
[INFO] [stderr] 951 |         assert!(!alist_6.is_ok(), alist_6.unwrap());
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: add a "{:?}" format string to use the `Debug` implementation of `AList<'_>`
[INFO] [stderr]     |
[INFO] [stderr] 951 |         assert!(!alist_6.is_ok(), "{:?}", alist_6.unwrap());
[INFO] [stderr]     |                                   +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/lib.rs:992:41
[INFO] [stderr]     |
[INFO] [stderr] 992 |             assert!(!attr_list.is_ok(), attr_list.unwrap());
[INFO] [stderr]     |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: add a "{:?}" format string to use the `Debug` implementation of `AttrList<'_>`
[INFO] [stderr]     |
[INFO] [stderr] 992 |             assert!(!attr_list.is_ok(), "{:?}", attr_list.unwrap());
[INFO] [stderr]     |                                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/lib.rs:997:41
[INFO] [stderr]     |
[INFO] [stderr] 997 |             assert!(!attr_list.is_ok(), attr_list.unwrap());
[INFO] [stderr]     |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: add a "{:?}" format string to use the `Debug` implementation of `AttrList<'_>`
[INFO] [stderr]     |
[INFO] [stderr] 997 |             assert!(!attr_list.is_ok(), "{:?}", attr_list.unwrap());
[INFO] [stderr]     |                                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1005:41
[INFO] [stderr]      |
[INFO] [stderr] 1005 |             assert!(!node_stmt.is_ok(), node_stmt.unwrap());
[INFO] [stderr]      |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1043:41
[INFO] [stderr]      |
[INFO] [stderr] 1043 |             assert!(!node_stmt.is_ok(), node_stmt.unwrap());
[INFO] [stderr]      |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1055:41
[INFO] [stderr]      |
[INFO] [stderr] 1055 |             assert!(!node_stmt.is_ok(), node_stmt.unwrap());
[INFO] [stderr]      |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1061:41
[INFO] [stderr]      |
[INFO] [stderr] 1061 |             assert!(!node_stmt.is_ok(), node_stmt.unwrap());
[INFO] [stderr]      |                                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1075:36
[INFO] [stderr]      |
[INFO] [stderr] 1075 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1075 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1075 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1088:36
[INFO] [stderr]      |
[INFO] [stderr] 1088 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1088 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1088 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1102:36
[INFO] [stderr]      |
[INFO] [stderr] 1102 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1102 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1102 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1112:36
[INFO] [stderr]      |
[INFO] [stderr] 1112 |                     assert!(false, subgraph);
[INFO] [stderr]      |                                    ^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1125:36
[INFO] [stderr]      |
[INFO] [stderr] 1125 |                     assert!(false, subgraph);
[INFO] [stderr]      |                                    ^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1145:36
[INFO] [stderr]      |
[INFO] [stderr] 1145 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1145 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1145 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1159:36
[INFO] [stderr]      |
[INFO] [stderr] 1159 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1159 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1159 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1189:36
[INFO] [stderr]      |
[INFO] [stderr] 1189 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1189 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1189 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1203:36
[INFO] [stderr]      |
[INFO] [stderr] 1203 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1203 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1203 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1222:36
[INFO] [stderr]      |
[INFO] [stderr] 1222 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1222 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1222 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1236:36
[INFO] [stderr]      |
[INFO] [stderr] 1236 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1236 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1236 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1246:55
[INFO] [stderr]      |
[INFO] [stderr] 1246 |                     assert!(stmt.attr_stmt.is_some(), stmt);
[INFO] [stderr]      |                                                       ^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: add a "{:?}" format string to use the `Debug` implementation of `Stmt<'_>`
[INFO] [stderr]      |
[INFO] [stderr] 1246 |                     assert!(stmt.attr_stmt.is_some(), "{:?}", stmt);
[INFO] [stderr]      |                                                       +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1250:36
[INFO] [stderr]      |
[INFO] [stderr] 1250 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1250 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1250 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1260:57
[INFO] [stderr]      |
[INFO] [stderr] 1260 |                     assert!(stmt.assign_stmt.is_some(), stmt);
[INFO] [stderr]      |                                                         ^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: add a "{:?}" format string to use the `Debug` implementation of `Stmt<'_>`
[INFO] [stderr]      |
[INFO] [stderr] 1260 |                     assert!(stmt.assign_stmt.is_some(), "{:?}", stmt);
[INFO] [stderr]      |                                                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1266:36
[INFO] [stderr]      |
[INFO] [stderr] 1266 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1266 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1266 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1276:54
[INFO] [stderr]      |
[INFO] [stderr] 1276 |                     assert!(stmt.subgraph.is_some(), stmt);
[INFO] [stderr]      |                                                      ^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: add a "{:?}" format string to use the `Debug` implementation of `Stmt<'_>`
[INFO] [stderr]      |
[INFO] [stderr] 1276 |                     assert!(stmt.subgraph.is_some(), "{:?}", stmt);
[INFO] [stderr]      |                                                      +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1279:36
[INFO] [stderr]      |
[INFO] [stderr] 1279 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1279 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr] 1279 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/lib.rs:1298:36
[INFO] [stderr]      |
[INFO] [stderr] 1298 |                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stderr]      |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stdout] 
[INFO] [stderr] 1298 -                     assert!(false, format!("{} {}", idx_err, err_msg));
[INFO] [stdout] running 11 tests
[INFO] [stderr] 1298 +                     assert!(false, "{} {}", idx_err, err_msg);
[INFO] [stdout] test tests::format_print ... ok
[INFO] [stderr]      |
[INFO] [stdout] test tests::parse_alist ... ok
[INFO] [stderr] 
[INFO] [stdout] test tests::parse_edge_rhs ... ok
[INFO] [stderr] warning: `dot_parse` (lib test) generated 44 warnings (16 duplicates) (run `cargo fix --lib -p dot_parse --tests` to apply 20 suggestions)
[INFO] [stdout] test tests::parse_edge_stmt ... ok
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s
[INFO] [stdout] test tests::parse_attrlist ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/libdot_parse-cb768839a1372de1)
[INFO] [stdout] test tests::parse_nodeid ... ok
[INFO] [stderr]      Running unittests src/bin.rs (/opt/rustwide/target/debug/deps/dot_parse-a0881f4cea0f81e2)
[INFO] [stdout] test tests::parse_stmt_list ... ok
[INFO] [stderr]    Doc-tests libdot_parse
[INFO] [stdout] test tests::parse_stmt ... ok
[INFO] [stdout] test tests::parse_node_stmt ... ok
[INFO] [stdout] test tests::parse_subgraph ... ok
[INFO] [stdout] test tests::parse_attr_stmt ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[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] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/lib.rs:257:10
[INFO] [stderr]     |
[INFO] [stderr] 257 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around type
[INFO] [stderr]    --> src/lib.rs:350:61
[INFO] [stderr]     |
[INFO] [stderr] 350 |     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stderr]     |                                                             ^                ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 350 -     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, ((usize, &'a str))> {
[INFO] [stderr] 350 +     fn parse_from(tokens: &[&'a str]) -> Result<NodeId<'a>, (usize, &'a str)> {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/lib.rs:361:10
[INFO] [stderr]     |
[INFO] [stderr] 361 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/lib.rs:401:10
[INFO] [stderr]     |
[INFO] [stderr] 401 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/lib.rs:705:10
[INFO] [stderr]     |
[INFO] [stderr] 705 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: 5 warnings emitted
[INFO] [stderr] 
[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" "413c2e4fdd52469d76fb974b9d4f8494ecdd4aa95da6948ec81a100b26a90b23", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "413c2e4fdd52469d76fb974b9d4f8494ecdd4aa95da6948ec81a100b26a90b23", kill_on_drop: false }`
[INFO] [stdout] 413c2e4fdd52469d76fb974b9d4f8494ecdd4aa95da6948ec81a100b26a90b23
