[INFO] fetching crate halcyon 0.0.1...
[INFO] testing halcyon-0.0.1 against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146098-7
[INFO] extracting crate halcyon 0.0.1 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate halcyon 0.0.1
[INFO] finished tweaking crates.io crate halcyon 0.0.1
[INFO] tweaked toml for crates.io crate halcyon 0.0.1 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate halcyon 0.0.1 on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 764a1aa03105da0d0ce613a2a0e2badf036c32c25c7717ab6002a30a54b8240a
[INFO] running `Command { std: "docker" "start" "-a" "764a1aa03105da0d0ce613a2a0e2badf036c32c25c7717ab6002a30a54b8240a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "764a1aa03105da0d0ce613a2a0e2badf036c32c25c7717ab6002a30a54b8240a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "764a1aa03105da0d0ce613a2a0e2badf036c32c25c7717ab6002a30a54b8240a", kill_on_drop: false }`
[INFO] [stdout] 764a1aa03105da0d0ce613a2a0e2badf036c32c25c7717ab6002a30a54b8240a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4b64eee471a728984ae0aa8de8607e1a6157005de1950589de7b519251392a92
[INFO] running `Command { std: "docker" "start" "-a" "4b64eee471a728984ae0aa8de8607e1a6157005de1950589de7b519251392a92", kill_on_drop: false }`
[INFO] [stderr]    Compiling halcyon v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `MemoryDOM` and `MemoryElement`
[INFO] [stdout]  --> src/lib.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::dom::{Element, MemoryDOM, MemoryElement, DOM};
[INFO] [stdout]   |                           ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::extensions::attributes::Attributes`
[INFO] [stdout]  --> src/lib.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::extensions::attributes::Attributes;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Halcyon`
[INFO] [stdout]  --> src/extensions/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::Halcyon;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     api: Box<DOM>,
[INFO] [stdout]    |              ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     api: Box<dyn DOM>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 |     extensions: Vec<Box<Extension>>,
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 |     extensions: Vec<Box<dyn Extension>>,
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:76:32
[INFO] [stdout]    |
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<dyn Element>>>,
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:82:32
[INFO] [stdout]    |
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<dyn Element>>>,
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:42:60
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<Element>> {
[INFO] [stdout]    |                                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<dyn Element>> {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:10:60
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<Element>>;
[INFO] [stdout]    |                                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<dyn Element>>;
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new() -> Box<DOM> {
[INFO] [stdout]    |                         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new() -> Box<dyn DOM> {
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:28:41
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn new(tag: &str) -> Rc<RefCell<Element>> {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn new(tag: &str) -> Rc<RefCell<dyn Element>> {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<dyn DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:17:51
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                                                   ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<dyn Extension>>) -> Halcyon {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:57:35
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn from_element(e: Rc<RefCell<Element>>) -> VirtualNode {
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn from_element(e: Rc<RefCell<dyn Element>>) -> VirtualNode {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn init(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `empty_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn create(&self, empty_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_empty_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:21:49
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn create(&self, empty_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:22:22
[INFO] [stdout]    |
[INFO] [stdout] 22 |     fn insert(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:23:25
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pre_patch(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:23:50
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pre_patch(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:24:22
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn update(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:24:47
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn update(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:25:22
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn handle(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:25:47
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn handle(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:26:23
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn destroy(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:27:22
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn remove(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/attributes.rs:28:22
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/attributes.rs:28:47
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:26:13
[INFO] [stdout]    |
[INFO] [stdout] 26 |         let mut c = self.current_vnode.borrow();
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `api` is never read
[INFO] [stdout]   --> src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Halcyon {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 11 |     api: Box<DOM>,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Halcyon` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_element` is never used
[INFO] [stdout]   --> src/lib.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl VirtualNode {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 57 |     fn from_element(e: Rc<RefCell<Element>>) -> VirtualNode {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selector`, `data`, `children`, `element`, and `list_key` are never read
[INFO] [stdout]   --> src/lib.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct VirtualNodeElement {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 73 |     selector: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 74 |     data: Option<VirtualNodeData>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 75 |     children: Option<Vec<VirtualNode>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 77 |     list_key: Option<Key>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VirtualNodeElement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `element` and `text` are never read
[INFO] [stdout]   --> src/lib.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct VirtualNodeText {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 83 |     text: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VirtualNodeText` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryDOM` is never constructed
[INFO] [stdout]   --> src/dom/mod.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct MemoryDOM {}
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/dom/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl MemoryDOM {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new() -> Box<DOM> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryElement` is never constructed
[INFO] [stdout]   --> src/dom/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct MemoryElement {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/dom/mod.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl MemoryElement {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 28 |     pub fn new(tag: &str) -> Rc<RefCell<Element>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Attributes` is never constructed
[INFO] [stdout]  --> src/extensions/attributes.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Attributes {}
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/extensions/attributes.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Attributes {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new() -> Attributes {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_attributes` is never used
[INFO] [stdout]   --> src/extensions/attributes.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.31s
[INFO] running `Command { std: "docker" "inspect" "4b64eee471a728984ae0aa8de8607e1a6157005de1950589de7b519251392a92", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4b64eee471a728984ae0aa8de8607e1a6157005de1950589de7b519251392a92", kill_on_drop: false }`
[INFO] [stdout] 4b64eee471a728984ae0aa8de8607e1a6157005de1950589de7b519251392a92
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8a7248d374d032f5d9b63d3df908a72af6cbbc314e127856b8124a46ca4bd416
[INFO] running `Command { std: "docker" "start" "-a" "8a7248d374d032f5d9b63d3df908a72af6cbbc314e127856b8124a46ca4bd416", kill_on_drop: false }`
[INFO] [stdout] warning: unused imports: `MemoryDOM` and `MemoryElement`
[INFO] [stdout]  --> src/lib.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::dom::{Element, MemoryDOM, MemoryElement, DOM};
[INFO] [stdout]   |                           ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::extensions::attributes::Attributes`
[INFO] [stdout]  --> src/lib.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::extensions::attributes::Attributes;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Halcyon`
[INFO] [stdout]  --> src/extensions/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::Halcyon;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     api: Box<DOM>,
[INFO] [stdout]    |              ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     api: Box<dyn DOM>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 |     extensions: Vec<Box<Extension>>,
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 |     extensions: Vec<Box<dyn Extension>>,
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:76:32
[INFO] [stdout]    |
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<dyn Element>>>,
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:82:32
[INFO] [stdout]    |
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<dyn Element>>>,
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:42:60
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<Element>> {
[INFO] [stdout]    |                                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<dyn Element>> {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:10:60
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<Element>>;
[INFO] [stdout]    |                                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<dyn Element>>;
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new() -> Box<DOM> {
[INFO] [stdout]    |                         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new() -> Box<dyn DOM> {
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:28:41
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn new(tag: &str) -> Rc<RefCell<Element>> {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn new(tag: &str) -> Rc<RefCell<dyn Element>> {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<dyn DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:17:51
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                                                   ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<dyn Extension>>) -> Halcyon {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:57:35
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn from_element(e: Rc<RefCell<Element>>) -> VirtualNode {
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn from_element(e: Rc<RefCell<dyn Element>>) -> VirtualNode {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn init(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `empty_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn create(&self, empty_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_empty_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:21:49
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn create(&self, empty_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:22:22
[INFO] [stdout]    |
[INFO] [stdout] 22 |     fn insert(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:23:25
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pre_patch(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:23:50
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pre_patch(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:24:22
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn update(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:24:47
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn update(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:25:22
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn handle(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:25:47
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn handle(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:26:23
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn destroy(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:27:22
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn remove(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/attributes.rs:28:22
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/attributes.rs:28:47
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:26:13
[INFO] [stdout]    |
[INFO] [stdout] 26 |         let mut c = self.current_vnode.borrow();
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `api` is never read
[INFO] [stdout]   --> src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Halcyon {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 11 |     api: Box<DOM>,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Halcyon` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_element` is never used
[INFO] [stdout]   --> src/lib.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl VirtualNode {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 57 |     fn from_element(e: Rc<RefCell<Element>>) -> VirtualNode {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selector`, `data`, `children`, `element`, and `list_key` are never read
[INFO] [stdout]   --> src/lib.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct VirtualNodeElement {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 73 |     selector: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 74 |     data: Option<VirtualNodeData>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 75 |     children: Option<Vec<VirtualNode>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 77 |     list_key: Option<Key>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VirtualNodeElement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `element` and `text` are never read
[INFO] [stdout]   --> src/lib.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct VirtualNodeText {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 83 |     text: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VirtualNodeText` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryDOM` is never constructed
[INFO] [stdout]   --> src/dom/mod.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct MemoryDOM {}
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/dom/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl MemoryDOM {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new() -> Box<DOM> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryElement` is never constructed
[INFO] [stdout]   --> src/dom/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct MemoryElement {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/dom/mod.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl MemoryElement {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 28 |     pub fn new(tag: &str) -> Rc<RefCell<Element>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Attributes` is never constructed
[INFO] [stdout]  --> src/extensions/attributes.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Attributes {}
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/extensions/attributes.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Attributes {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new() -> Attributes {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling halcyon v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `update_attributes` is never used
[INFO] [stdout]   --> src/extensions/attributes.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Halcyon`
[INFO] [stdout]  --> src/extensions/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::Halcyon;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     api: Box<DOM>,
[INFO] [stdout]    |              ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     api: Box<dyn DOM>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 |     extensions: Vec<Box<Extension>>,
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 |     extensions: Vec<Box<dyn Extension>>,
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:76:32
[INFO] [stdout]    |
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<dyn Element>>>,
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:82:32
[INFO] [stdout]    |
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<dyn Element>>>,
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:42:60
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<Element>> {
[INFO] [stdout]    |                                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<dyn Element>> {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:10:60
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<Element>>;
[INFO] [stdout]    |                                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<dyn Element>>;
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/lib.rs:111:35
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn render(element: Rc<RefCell<Element>>, container: VirtualNode) {
[INFO] [stdout]     |                                   ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn render(element: Rc<RefCell<dyn Element>>, container: VirtualNode) {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new() -> Box<DOM> {
[INFO] [stdout]    |                         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new() -> Box<dyn DOM> {
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/dom/mod.rs:28:41
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn new(tag: &str) -> Rc<RefCell<Element>> {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn new(tag: &str) -> Rc<RefCell<dyn Element>> {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<dyn DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:17:51
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stdout]    |                                                   ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<dyn Extension>>) -> Halcyon {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lib.rs:57:35
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn from_element(e: Rc<RefCell<Element>>) -> VirtualNode {
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn from_element(e: Rc<RefCell<dyn Element>>) -> VirtualNode {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn init(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `empty_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn create(&self, empty_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_empty_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:21:49
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn create(&self, empty_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:22:22
[INFO] [stdout]    |
[INFO] [stdout] 22 |     fn insert(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:23:25
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pre_patch(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:23:50
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pre_patch(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:24:22
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn update(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:24:47
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn update(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:25:22
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn handle(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:25:47
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn handle(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:26:23
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn destroy(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vnode`
[INFO] [stdout]   --> src/extensions/mod.rs:27:22
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn remove(&self, vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_vnode`
[INFO] [stdout]   --> src/extensions/attributes.rs:28:22
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_vnode`
[INFO] [stdout]   --> src/extensions/attributes.rs:28:47
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stdout]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:26:13
[INFO] [stdout]    |
[INFO] [stdout] 26 |         let mut c = self.current_vnode.borrow();
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `api` is never read
[INFO] [stdout]   --> src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Halcyon {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 11 |     api: Box<DOM>,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Halcyon` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selector`, `data`, `children`, `element`, and `list_key` are never read
[INFO] [stdout]   --> src/lib.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct VirtualNodeElement {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 73 |     selector: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 74 |     data: Option<VirtualNodeData>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 75 |     children: Option<Vec<VirtualNode>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 76 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 77 |     list_key: Option<Key>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VirtualNodeElement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `element` and `text` are never read
[INFO] [stdout]   --> src/lib.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct VirtualNodeText {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 82 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 83 |     text: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VirtualNodeText` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.50s
[INFO] running `Command { std: "docker" "inspect" "8a7248d374d032f5d9b63d3df908a72af6cbbc314e127856b8124a46ca4bd416", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8a7248d374d032f5d9b63d3df908a72af6cbbc314e127856b8124a46ca4bd416", kill_on_drop: false }`
[INFO] [stdout] 8a7248d374d032f5d9b63d3df908a72af6cbbc314e127856b8124a46ca4bd416
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 4eab45547f04a8c98eee37d52a98ebe60d14f58d4fa804c2e1128f03337cdc4d
[INFO] running `Command { std: "docker" "start" "-a" "4eab45547f04a8c98eee37d52a98ebe60d14f58d4fa804c2e1128f03337cdc4d", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `MemoryDOM` and `MemoryElement`
[INFO] [stderr]  --> src/lib.rs:1:27
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::dom::{Element, MemoryDOM, MemoryElement, DOM};
[INFO] [stderr]   |                           ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused import: `crate::extensions::attributes::Attributes`
[INFO] [stdout] running 1 test
[INFO] [stderr]  --> src/lib.rs:2:5
[INFO] [stdout] test tests::it_works ... ok
[INFO] [stderr]   |
[INFO] [stdout] 
[INFO] [stderr] 2 | use crate::extensions::attributes::Attributes;
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::Halcyon`
[INFO] [stderr]  --> src/extensions/mod.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::Halcyon;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/lib.rs:11:14
[INFO] [stderr]    |
[INFO] [stderr] 11 |     api: Box<DOM>,
[INFO] [stderr]    |              ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 11 |     api: Box<dyn DOM>,
[INFO] [stderr]    |              +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/lib.rs:13:25
[INFO] [stderr]    |
[INFO] [stderr] 13 |     extensions: Vec<Box<Extension>>,
[INFO] [stderr]    |                         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 13 |     extensions: Vec<Box<dyn Extension>>,
[INFO] [stderr]    |                         +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/lib.rs:76:32
[INFO] [stderr]    |
[INFO] [stderr] 76 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stderr]    |                                ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 76 |     element: Option<Rc<RefCell<dyn Element>>>,
[INFO] [stderr]    |                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/lib.rs:82:32
[INFO] [stderr]    |
[INFO] [stderr] 82 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stderr]    |                                ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 82 |     element: Option<Rc<RefCell<dyn Element>>>,
[INFO] [stderr]    |                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/dom/mod.rs:42:60
[INFO] [stderr]    |
[INFO] [stderr] 42 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<Element>> {
[INFO] [stderr]    |                                                            ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 42 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<dyn Element>> {
[INFO] [stderr]    |                                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/dom/mod.rs:10:60
[INFO] [stderr]    |
[INFO] [stderr] 10 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<Element>>;
[INFO] [stderr]    |                                                            ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 10 |     fn query_selector(&self, selector: &str) -> Rc<RefCell<dyn Element>>;
[INFO] [stderr]    |                                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/dom/mod.rs:17:25
[INFO] [stderr]    |
[INFO] [stderr] 17 |     pub fn new() -> Box<DOM> {
[INFO] [stderr]    |                         ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 17 |     pub fn new() -> Box<dyn DOM> {
[INFO] [stderr]    |                         +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/dom/mod.rs:28:41
[INFO] [stderr]    |
[INFO] [stderr] 28 |     pub fn new(tag: &str) -> Rc<RefCell<Element>> {
[INFO] [stderr]    |                                         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 28 |     pub fn new(tag: &str) -> Rc<RefCell<dyn Element>> {
[INFO] [stderr]    |                                         +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/lib.rs:17:25
[INFO] [stderr]    |
[INFO] [stderr] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stderr]    |                         ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 17 |     pub fn new(api: Box<dyn DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stderr]    |                         +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/lib.rs:17:51
[INFO] [stderr]    |
[INFO] [stderr] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<Extension>>) -> Halcyon {
[INFO] [stderr]    |                                                   ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 17 |     pub fn new(api: Box<DOM>, extensions: Vec<Box<dyn Extension>>) -> Halcyon {
[INFO] [stderr]    |                                                   +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/lib.rs:57:35
[INFO] [stderr]    |
[INFO] [stderr] 57 |     fn from_element(e: Rc<RefCell<Element>>) -> VirtualNode {
[INFO] [stderr]    |                                   ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 57 |     fn from_element(e: Rc<RefCell<dyn Element>>) -> VirtualNode {
[INFO] [stderr]    |                                   +++
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:20:20
[INFO] [stderr]    |
[INFO] [stderr] 20 |     fn init(&self, vnode: &VirtualNode) {}
[INFO] [stderr]    |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `empty_vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:21:22
[INFO] [stderr]    |
[INFO] [stderr] 21 |     fn create(&self, empty_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_empty_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:21:49
[INFO] [stderr]    |
[INFO] [stderr] 21 |     fn create(&self, empty_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:22:22
[INFO] [stderr]    |
[INFO] [stderr] 22 |     fn insert(&self, vnode: &VirtualNode) {}
[INFO] [stderr]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `old_vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:23:25
[INFO] [stderr]    |
[INFO] [stderr] 23 |     fn pre_patch(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:23:50
[INFO] [stderr]    |
[INFO] [stderr] 23 |     fn pre_patch(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `old_vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:24:22
[INFO] [stderr]    |
[INFO] [stderr] 24 |     fn update(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:24:47
[INFO] [stderr]    |
[INFO] [stderr] 24 |     fn update(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `old_vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:25:22
[INFO] [stderr]    |
[INFO] [stderr] 25 |     fn handle(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:25:47
[INFO] [stderr]    |
[INFO] [stderr] 25 |     fn handle(&self, old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:26:23
[INFO] [stderr]    |
[INFO] [stderr] 26 |     fn destroy(&self, vnode: &VirtualNode) {}
[INFO] [stderr]    |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vnode`
[INFO] [stderr]   --> src/extensions/mod.rs:27:22
[INFO] [stderr]    |
[INFO] [stderr] 27 |     fn remove(&self, vnode: &VirtualNode) {}
[INFO] [stderr]    |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `old_vnode`
[INFO] [stderr]   --> src/extensions/attributes.rs:28:22
[INFO] [stderr]    |
[INFO] [stderr] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_old_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_vnode`
[INFO] [stderr]   --> src/extensions/attributes.rs:28:47
[INFO] [stderr]    |
[INFO] [stderr] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |                                               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_vnode`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/lib.rs:26:13
[INFO] [stderr]    |
[INFO] [stderr] 26 |         let mut c = self.current_vnode.borrow();
[INFO] [stderr]    |             ----^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `api` is never read
[INFO] [stderr]   --> src/lib.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct Halcyon {
[INFO] [stderr]    |            ------- field in this struct
[INFO] [stderr] 11 |     api: Box<DOM>,
[INFO] [stderr]    |     ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Halcyon` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_element` is never used
[INFO] [stderr]   --> src/lib.rs:57:8
[INFO] [stderr]    |
[INFO] [stderr] 56 | impl VirtualNode {
[INFO] [stderr]    | ---------------- associated function in this implementation
[INFO] [stderr] 57 |     fn from_element(e: Rc<RefCell<Element>>) -> VirtualNode {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `selector`, `data`, `children`, `element`, and `list_key` are never read
[INFO] [stderr]   --> src/lib.rs:73:5
[INFO] [stderr]    |
[INFO] [stderr] 72 | pub struct VirtualNodeElement {
[INFO] [stderr]    |            ------------------ fields in this struct
[INFO] [stderr] 73 |     selector: String,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 74 |     data: Option<VirtualNodeData>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 75 |     children: Option<Vec<VirtualNode>>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 76 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 77 |     list_key: Option<Key>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `VirtualNodeElement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `element` and `text` are never read
[INFO] [stderr]   --> src/lib.rs:82:5
[INFO] [stderr]    |
[INFO] [stderr] 81 | pub struct VirtualNodeText {
[INFO] [stderr]    |            --------------- fields in this struct
[INFO] [stderr] 82 |     element: Option<Rc<RefCell<Element>>>,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 83 |     text: String,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `VirtualNodeText` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MemoryDOM` is never constructed
[INFO] [stderr]   --> src/dom/mod.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub struct MemoryDOM {}
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/dom/mod.rs:17:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | impl MemoryDOM {
[INFO] [stderr]    | -------------- associated function in this implementation
[INFO] [stderr] 17 |     pub fn new() -> Box<DOM> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MemoryElement` is never constructed
[INFO] [stderr]   --> src/dom/mod.rs:23:12
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct MemoryElement {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/dom/mod.rs:28:12
[INFO] [stderr]    |
[INFO] [stderr] 27 | impl MemoryElement {
[INFO] [stderr]    | ------------------ associated function in this implementation
[INFO] [stderr] 28 |     pub fn new(tag: &str) -> Rc<RefCell<Element>> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Attributes` is never constructed
[INFO] [stderr]  --> src/extensions/attributes.rs:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub struct Attributes {}
[INFO] [stderr]   |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/extensions/attributes.rs:23:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | impl Attributes {
[INFO] [stderr]    | --------------- associated function in this implementation
[INFO] [stderr] 23 |     pub fn new() -> Attributes {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `update_attributes` is never used
[INFO] [stderr]   --> src/extensions/attributes.rs:28:4
[INFO] [stderr]    |
[INFO] [stderr] 28 | fn update_attributes(old_vnode: &VirtualNode, new_vnode: &VirtualNode) {}
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `halcyon` (lib) generated 40 warnings (run `cargo fix --lib -p halcyon` to apply 29 suggestions)
[INFO] [stderr] warning: unused import: `crate::Halcyon`
[INFO] [stderr]  --> src/extensions/mod.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::Halcyon;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/lib.rs:111:35
[INFO] [stderr]     |
[INFO] [stderr] 111 |     fn render(element: Rc<RefCell<Element>>, container: VirtualNode) {
[INFO] [stderr]     |                                   ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 111 |     fn render(element: Rc<RefCell<dyn Element>>, container: VirtualNode) {
[INFO] [stderr]     |                                   +++
[INFO] [stderr] 
[INFO] [stderr] warning: `halcyon` (lib test) generated 31 warnings (29 duplicates) (run `cargo fix --lib -p halcyon --tests` to apply 2 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.02s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/halcyon-5275cae76db6cca4)
[INFO] [stderr]    Doc-tests halcyon
[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" "4eab45547f04a8c98eee37d52a98ebe60d14f58d4fa804c2e1128f03337cdc4d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4eab45547f04a8c98eee37d52a98ebe60d14f58d4fa804c2e1128f03337cdc4d", kill_on_drop: false }`
[INFO] [stdout] 4eab45547f04a8c98eee37d52a98ebe60d14f58d4fa804c2e1128f03337cdc4d
