[INFO] cloning repository https://github.com/burbokop/dudes_in_space
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/burbokop/dudes_in_space" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fburbokop%2Fdudes_in_space", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fburbokop%2Fdudes_in_space'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5dee675d3bdc6902a661a1a310ffd2c8b9197910
[INFO] checking burbokop/dudes_in_space against master#642c19bfc3a5c1de985bf5d0cc8207ac9d22708a for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fburbokop%2Fdudes_in_space" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/burbokop/dudes_in_space
[INFO] finished tweaking git repo https://github.com/burbokop/dudes_in_space
[INFO] tweaked toml for git repo https://github.com/burbokop/dudes_in_space written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/burbokop/dudes_in_space on toolchain 642c19bfc3a5c1de985bf5d0cc8207ac9d22708a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/burbokop/dudes_in_space 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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded darling_macro v0.21.0
[INFO] [stderr]   Downloaded deluxe-core v0.5.0
[INFO] [stderr]   Downloaded serde-intermediate-derive v1.6.1
[INFO] [stderr]   Downloaded darling_core v0.21.0
[INFO] [stderr]   Downloaded deluxe v0.5.0
[INFO] [stderr]   Downloaded darling v0.21.0
[INFO] [stderr]   Downloaded deluxe-macros v0.5.0
[INFO] [stderr]   Downloaded serde-intermediate v1.6.1
[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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 518d7f649a4592acbdbafa2c018bdc9ee4d7db173f9b022ea20577a30092ebfc
[INFO] running `Command { std: "docker" "start" "-a" "518d7f649a4592acbdbafa2c018bdc9ee4d7db173f9b022ea20577a30092ebfc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "518d7f649a4592acbdbafa2c018bdc9ee4d7db173f9b022ea20577a30092ebfc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "518d7f649a4592acbdbafa2c018bdc9ee4d7db173f9b022ea20577a30092ebfc", kill_on_drop: false }`
[INFO] [stdout] 518d7f649a4592acbdbafa2c018bdc9ee4d7db173f9b022ea20577a30092ebfc
[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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 321c7c1f77a46e258f7a0a76f3053ba8b44632e9cb379cc296dcad51b7de352b
[INFO] running `Command { std: "docker" "start" "-a" "321c7c1f77a46e258f7a0a76f3053ba8b44632e9cb379cc296dcad51b7de352b", kill_on_drop: false }`
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling if_chain v1.0.2
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]     Checking fixedbitset v0.4.2
[INFO] [stderr]     Checking unicode-ident v1.0.18
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling convert_case v0.8.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking ident_case v1.0.1
[INFO] [stderr]     Checking strsim v0.11.1
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]     Checking fnv v1.0.7
[INFO] [stderr]     Checking proc-macro2 v1.0.95
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]     Checking quote v1.0.40
[INFO] [stderr]     Checking petgraph v0.6.5
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]    Compiling serde-intermediate-derive v1.6.1
[INFO] [stderr]     Checking darling_core v0.21.0
[INFO] [stderr]     Checking deluxe-core v0.5.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling pest v2.8.1
[INFO] [stderr]    Compiling darling_macro v0.21.0
[INFO] [stderr]    Compiling deluxe-macros v0.5.0
[INFO] [stderr]    Compiling darling v0.21.0
[INFO] [stderr]    Compiling pest_meta v2.8.1
[INFO] [stderr]    Compiling deluxe v0.5.0
[INFO] [stderr]     Checking dyn_serde_macro v0.0.1 (/opt/rustwide/workdir/dyn_serde_macro)
[INFO] [stdout] warning: unused import: `darling::util::PathList`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use darling::util::PathList;
[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 imports: `FromDeriveInput` and `FromVariant`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use darling::{FromDeriveInput, FromField, FromMeta, FromVariant};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeMap`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::BTreeMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::marker::PhantomData`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::marker::PhantomData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::ext::IdentExt`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use syn::ext::IdentExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::punctuated::Punctuated`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use syn::punctuated::Punctuated;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::token::Trait`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use syn::token::Trait;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Attribute`, `ExprPath`, `PatIdent`, `TypeGroup`, and `parse::Parse`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |     self, Attribute, Data, DeriveInput, Expr, ExprPath, Fields, GenericArgument, PatIdent, Path,
[INFO] [stdout]    |           ^^^^^^^^^                           ^^^^^^^^                           ^^^^^^^^
[INFO] [stdout] 16 |     PathArguments, Type, TypeGroup, TypePath, Variant, parse::Parse, parse_macro_input,
[INFO] [stdout]    |                          ^^^^^^^^^                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExprGroup`, `LitInt`, and `Token`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | use syn::{ExprGroup, Ident, LitInt, Token};
[INFO] [stdout]    |           ^^^^^^^^^         ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ToTokens` and `format_ident`
[INFO] [stdout]  --> dyn_serde_macro/src/dyn_serde_trait.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use quote::{ToTokens, format_ident, quote};
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `parse::Parse` and `parse_macro_input`
[INFO] [stdout]  --> dyn_serde_macro/src/dyn_serde_trait.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use syn::{self, parse::Parse, parse_macro_input};
[INFO] [stdout]   |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `darling::util::PathList`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use darling::util::PathList;
[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 imports: `FromDeriveInput` and `FromVariant`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use darling::{FromDeriveInput, FromField, FromMeta, FromVariant};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeMap`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::BTreeMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::marker::PhantomData`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::marker::PhantomData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::ext::IdentExt`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use syn::ext::IdentExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::punctuated::Punctuated`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use syn::punctuated::Punctuated;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::token::Trait`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use syn::token::Trait;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Attribute`, `ExprPath`, `PatIdent`, `TypeGroup`, and `parse::Parse`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |     self, Attribute, Data, DeriveInput, Expr, ExprPath, Fields, GenericArgument, PatIdent, Path,
[INFO] [stdout]    |           ^^^^^^^^^                           ^^^^^^^^                           ^^^^^^^^
[INFO] [stdout] 16 |     PathArguments, Type, TypeGroup, TypePath, Variant, parse::Parse, parse_macro_input,
[INFO] [stdout]    |                          ^^^^^^^^^                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExprGroup`, `LitInt`, and `Token`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | use syn::{ExprGroup, Ident, LitInt, Token};
[INFO] [stdout]    |           ^^^^^^^^^         ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ToTokens` and `format_ident`
[INFO] [stdout]  --> dyn_serde_macro/src/dyn_serde_trait.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use quote::{ToTokens, format_ident, quote};
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `parse::Parse` and `parse_macro_input`
[INFO] [stdout]  --> dyn_serde_macro/src/dyn_serde_trait.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use syn::{self, parse::Parse, parse_macro_input};
[INFO] [stdout]   |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling pest_generator v2.8.1
[INFO] [stdout] warning: unused import: `darling::util::PathList`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use darling::util::PathList;
[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 imports: `FromDeriveInput` and `FromVariant`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use darling::{FromDeriveInput, FromField, FromMeta, FromVariant};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeMap`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::BTreeMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::marker::PhantomData`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::marker::PhantomData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::ext::IdentExt`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use syn::ext::IdentExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::punctuated::Punctuated`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use syn::punctuated::Punctuated;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::token::Trait`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use syn::token::Trait;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Attribute`, `ExprPath`, `PatIdent`, `TypeGroup`, and `parse::Parse`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |     self, Attribute, Data, DeriveInput, Expr, ExprPath, Fields, GenericArgument, PatIdent, Path,
[INFO] [stdout]    |           ^^^^^^^^^                           ^^^^^^^^                           ^^^^^^^^
[INFO] [stdout] 16 |     PathArguments, Type, TypeGroup, TypePath, Variant, parse::Parse, parse_macro_input,
[INFO] [stdout]    |                          ^^^^^^^^^                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExprGroup`, `LitInt`, and `Token`
[INFO] [stdout]   --> dyn_serde_macro/src/deserialize_seed.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | use syn::{ExprGroup, Ident, LitInt, Token};
[INFO] [stdout]    |           ^^^^^^^^^         ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ToTokens` and `format_ident`
[INFO] [stdout]  --> dyn_serde_macro/src/dyn_serde_trait.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use quote::{ToTokens, format_ident, quote};
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `parse::Parse` and `parse_macro_input`
[INFO] [stdout]  --> dyn_serde_macro/src/dyn_serde_trait.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use syn::{self, parse::Parse, parse_macro_input};
[INFO] [stdout]   |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToTokens`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use quote::{ToTokens, format_ident, quote};
[INFO] [stdout]   |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expected_root`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |     let expected_root: String = format!("struct {}", ident);
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_root`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expected_key`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     let expected_key: String = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field_assignments`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let field_assignments: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_field_assignments`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variant_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let variant_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variant_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `locale_variable_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |     let locale_variable_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_locale_variable_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field_names`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:252:9
[INFO] [stdout]     |
[INFO] [stdout] 252 |     let field_names: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_field_names`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_decls`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |     let var_decls: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_decls`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_arms`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |     let key_arms: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value_arms`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:285:9
[INFO] [stdout]     |
[INFO] [stdout] 285 |     let value_arms: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_value_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `check_missings`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:296:9
[INFO] [stdout]     |
[INFO] [stdout] 296 |     let check_missings: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_check_missings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToTokens`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use quote::{ToTokens, format_ident, quote};
[INFO] [stdout]   |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expected_root`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |     let expected_root: String = format!("struct {}", ident);
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_root`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expected_key`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     let expected_key: String = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field_assignments`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let field_assignments: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_field_assignments`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variant_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let variant_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variant_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `locale_variable_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |     let locale_variable_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_locale_variable_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field_names`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:252:9
[INFO] [stdout]     |
[INFO] [stdout] 252 |     let field_names: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_field_names`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_decls`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |     let var_decls: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_decls`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_arms`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |     let key_arms: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value_arms`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:285:9
[INFO] [stdout]     |
[INFO] [stdout] 285 |     let value_arms: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_value_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `check_missings`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:296:9
[INFO] [stdout]     |
[INFO] [stdout] 296 |     let check_missings: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_check_missings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:329:5
[INFO] [stdout]     |
[INFO] [stdout] 329 |     name: String,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `locale_variable_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:454:9
[INFO] [stdout]     |
[INFO] [stdout] 454 |     let locale_variable_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_locale_variable_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:329:5
[INFO] [stdout]     |
[INFO] [stdout] 329 |     name: String,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `locale_variable_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:454:9
[INFO] [stdout]     |
[INFO] [stdout] 454 |     let locale_variable_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_locale_variable_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_ident` is never read
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:594:9
[INFO] [stdout]     |
[INFO] [stdout] 591 |     struct VariantRecipe {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 594 |         struct_ident: Ident,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_ident` is never read
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:735:9
[INFO] [stdout]     |
[INFO] [stdout] 732 |     struct VariantRecipe {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 735 |         struct_ident: Ident,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToTokens`
[INFO] [stdout]  --> dyn_serde_macro/src/deserialize_seed.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use quote::{ToTokens, format_ident, quote};
[INFO] [stdout]   |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_ident` is never read
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:594:9
[INFO] [stdout]     |
[INFO] [stdout] 591 |     struct VariantRecipe {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 594 |         struct_ident: Ident,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_ident` is never read
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:735:9
[INFO] [stdout]     |
[INFO] [stdout] 732 |     struct VariantRecipe {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 735 |         struct_ident: Ident,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expected_root`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |     let expected_root: String = format!("struct {}", ident);
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_root`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expected_key`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     let expected_key: String = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field_assignments`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let field_assignments: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_field_assignments`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variant_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let variant_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variant_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `locale_variable_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |     let locale_variable_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_locale_variable_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field_names`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:252:9
[INFO] [stdout]     |
[INFO] [stdout] 252 |     let field_names: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_field_names`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_decls`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |     let var_decls: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_decls`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_arms`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |     let key_arms: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value_arms`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:285:9
[INFO] [stdout]     |
[INFO] [stdout] 285 |     let value_arms: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_value_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `check_missings`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:296:9
[INFO] [stdout]     |
[INFO] [stdout] 296 |     let check_missings: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_check_missings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:329:5
[INFO] [stdout]     |
[INFO] [stdout] 329 |     name: String,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `locale_variable_idents`
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:454:9
[INFO] [stdout]     |
[INFO] [stdout] 454 |     let locale_variable_idents: Vec<_> = fields
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_locale_variable_idents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_ident` is never read
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:594:9
[INFO] [stdout]     |
[INFO] [stdout] 591 |     struct VariantRecipe {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 594 |         struct_ident: Ident,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `struct_ident` is never read
[INFO] [stdout]    --> dyn_serde_macro/src/deserialize_seed.rs:735:9
[INFO] [stdout]     |
[INFO] [stdout] 732 |     struct VariantRecipe {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 735 |         struct_ident: Ident,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling pest_derive v2.8.1
[INFO] [stderr]     Checking serde-intermediate v1.6.1
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking dyn_serde v0.0.1 (/opt/rustwide/workdir/dyn_serde)
[INFO] [stdout] warning: unused import: `Unexpected`
[INFO] [stdout]  --> dyn_serde/src/lib.rs:1:57
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::de::{DeserializeSeed, Error as _, SeqAccess, Unexpected, Visitor};
[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: `std::cell::RefCell`
[INFO] [stdout]  --> dyn_serde/src/lib.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::__private::de::missing_field`
[INFO] [stdout]    --> dyn_serde/src/lib.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     use serde::__private::de::missing_field;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Foo_Discriminant` should have an upper camel case name
[INFO] [stdout]    --> dyn_serde/src/lib.rs:246:18
[INFO] [stdout]     |
[INFO] [stdout] 246 |             enum Foo_Discriminant {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FooDiscriminant`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Foo_Bar` should have an upper camel case name
[INFO] [stdout]    --> dyn_serde/src/lib.rs:251:20
[INFO] [stdout]     |
[INFO] [stdout] 251 |             struct Foo_Bar {
[INFO] [stdout]     |                    ^^^^^^^ help: convert the identifier to upper camel case: `FooBar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Foo_Baz` should have an upper camel case name
[INFO] [stdout]    --> dyn_serde/src/lib.rs:256:20
[INFO] [stdout]     |
[INFO] [stdout] 256 |             struct Foo_Baz {
[INFO] [stdout]     |                    ^^^^^^^ help: convert the identifier to upper camel case: `FooBaz`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Unexpected`
[INFO] [stdout]  --> dyn_serde/src/lib.rs:1:57
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::de::{DeserializeSeed, Error as _, SeqAccess, Unexpected, Visitor};
[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: `std::cell::RefCell`
[INFO] [stdout]  --> dyn_serde/src/lib.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::__private::de::missing_field`
[INFO] [stdout]    --> dyn_serde/src/lib.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     use serde::__private::de::missing_field;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Foo_Discriminant` should have an upper camel case name
[INFO] [stdout]    --> dyn_serde/src/lib.rs:246:18
[INFO] [stdout]     |
[INFO] [stdout] 246 |             enum Foo_Discriminant {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FooDiscriminant`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Foo_Bar` should have an upper camel case name
[INFO] [stdout]    --> dyn_serde/src/lib.rs:251:20
[INFO] [stdout]     |
[INFO] [stdout] 251 |             struct Foo_Bar {
[INFO] [stdout]     |                    ^^^^^^^ help: convert the identifier to upper camel case: `FooBar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Foo_Baz` should have an upper camel case name
[INFO] [stdout]    --> dyn_serde/src/lib.rs:256:20
[INFO] [stdout]     |
[INFO] [stdout] 256 |             struct Foo_Baz {
[INFO] [stdout]     |                    ^^^^^^^ help: convert the identifier to upper camel case: `FooBaz`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> dyn_serde/src/lib.rs:286:33
[INFO] [stdout]     |
[INFO] [stdout] 286 | ...                   let v = variant.struct_variant(&[], V {})?;
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variant`
[INFO] [stdout]    --> dyn_serde/src/lib.rs:291:49
[INFO] [stdout]     |
[INFO] [stdout] 291 |                         (Foo_Discriminant::Baz, variant) => {
[INFO] [stdout]     |                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variant`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `formatter`
[INFO] [stdout]    --> dyn_serde/src/lib.rs:281:53
[INFO] [stdout]     |
[INFO] [stdout] 281 | ...                   fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
[INFO] [stdout]     |                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_formatter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Foo` is never used
[INFO] [stdout]    --> dyn_serde/src/lib.rs:234:14
[INFO] [stdout]     |
[INFO] [stdout] 234 |     pub enum Foo {
[INFO] [stdout]     |              ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> dyn_serde/src/lib.rs:286:33
[INFO] [stdout]     |
[INFO] [stdout] 286 | ...                   let v = variant.struct_variant(&[], V {})?;
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variant`
[INFO] [stdout]    --> dyn_serde/src/lib.rs:291:49
[INFO] [stdout]     |
[INFO] [stdout] 291 |                         (Foo_Discriminant::Baz, variant) => {
[INFO] [stdout]     |                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variant`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `formatter`
[INFO] [stdout]    --> dyn_serde/src/lib.rs:281:53
[INFO] [stdout]     |
[INFO] [stdout] 281 | ...                   fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
[INFO] [stdout]     |                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_formatter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Foo` is never used
[INFO] [stdout]    --> dyn_serde/src/lib.rs:234:14
[INFO] [stdout]     |
[INFO] [stdout] 234 |     pub enum Foo {
[INFO] [stdout]     |              ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking dudes_in_space_api v0.0.1 (/opt/rustwide/workdir/api)
[INFO] [stdout] xxx_field: vessels -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(848..852) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(853..857) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "vessel_seed", span: #0 bytes(858..869) }) }) | None
[INFO] [stdout] xxx_field: nebulae -> None | None
[INFO] [stdout] xxx_field: vessels -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(848..852) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(853..857) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "vessel_seed", span: #0 bytes(858..869) }) }) | None
[INFO] [stdout] xxx_field: nebulae -> None | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate ::
[INFO] [stdout] environment :: EnvironmentSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Environment; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["vessels", "nebulae"]; enum Field
[INFO] [stdout]         { Vessels, Nebulae } impl < '__de > serde :: de :: Deserialize < '__de
[INFO] [stdout]         > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     { formatter.write_str("`vessels`, `nebulae`") } fn visit_str
[INFO] [stdout]                     < E > (self, value : & str) -> Result < Field, E > where E :
[INFO] [stdout]                     serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "vessels" => Ok(Field :: Vessels), "nebulae" =>
[INFO] [stdout]                             Ok(Field :: Nebulae), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: environment :: EnvironmentSeed < 'v > } impl < 'v,
[INFO] [stdout]         '__de > serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Environment; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Environment") }
[INFO] [stdout]             fn visit_map < V > (self, mut map : V) -> Result < Self :: Value,
[INFO] [stdout]             V :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut vessels : Option < Vec < Vessel > > = None; let mut
[INFO] [stdout]                 nebulae : Option < Vec < Nebula > > = None; while let
[INFO] [stdout]                 Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Vessels =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if vessels.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("vessels"));
[INFO] [stdout]                             } vessels =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.vessel_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         }, Field :: Nebulae =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if nebulae.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("nebulae"));
[INFO] [stdout]                             } nebulae = Some(map.next_value() ?);
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let vessels : Vec < Vessel > =
[INFO] [stdout]                 vessels.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("vessels")) ? ; let nebulae : Vec < Nebula > =
[INFO] [stdout]                 nebulae.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("nebulae")) ? ;
[INFO] [stdout]                 Ok(Environment { vessels, nebulae, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Environment", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate ::
[INFO] [stdout] environment :: EnvironmentSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Environment; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["vessels", "nebulae"]; enum Field
[INFO] [stdout]         { Vessels, Nebulae } impl < '__de > serde :: de :: Deserialize < '__de
[INFO] [stdout]         > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     { formatter.write_str("`vessels`, `nebulae`") } fn visit_str
[INFO] [stdout]                     < E > (self, value : & str) -> Result < Field, E > where E :
[INFO] [stdout]                     serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "vessels" => Ok(Field :: Vessels), "nebulae" =>
[INFO] [stdout]                             Ok(Field :: Nebulae), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: environment :: EnvironmentSeed < 'v > } impl < 'v,
[INFO] [stdout]         '__de > serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Environment; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Environment") }
[INFO] [stdout]             fn visit_map < V > (self, mut map : V) -> Result < Self :: Value,
[INFO] [stdout]             V :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut vessels : Option < Vec < Vessel > > = None; let mut
[INFO] [stdout]                 nebulae : Option < Vec < Nebula > > = None; while let
[INFO] [stdout]                 Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Vessels =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if vessels.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("vessels"));
[INFO] [stdout]                             } vessels =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.vessel_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         }, Field :: Nebulae =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if nebulae.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("nebulae"));
[INFO] [stdout]                             } nebulae = Some(map.next_value() ?);
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let vessels : Vec < Vessel > =
[INFO] [stdout]                 vessels.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("vessels")) ? ; let nebulae : Vec < Nebula > =
[INFO] [stdout]                 nebulae.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("nebulae")) ? ;
[INFO] [stdout]                 Ok(Environment { vessels, nebulae, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Environment", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: content -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(16267..16271) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(16272..16276) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "content_seed", span: #0 bytes(16277..16289) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: module ::
[INFO] [stdout] ModuleStorageSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = ModuleStorage; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["content"]; enum Field { Content } impl <
[INFO] [stdout]         '__de > serde :: de :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result { formatter.write_str("`content`") }
[INFO] [stdout]                     fn visit_str < E > (self, value : & str) -> Result < Field,
[INFO] [stdout]                     E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "content" => Ok(Field :: Content), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: module :: ModuleStorageSeed < 'v > } impl < 'v,
[INFO] [stdout]         '__de > serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = ModuleStorage; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result
[INFO] [stdout]             { formatter.write_str("struct ModuleStorage") } fn visit_map < V >
[INFO] [stdout]             (self, mut map : V) -> Result < Self :: Value, V :: Error > where
[INFO] [stdout]             V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut content : Option < Vec < Box < dyn Module > > > =
[INFO] [stdout]                 None; while let Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Content =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if content.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("content"));
[INFO] [stdout]                             } content =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.content_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let content : Vec < Box < dyn Module > > =
[INFO] [stdout]                 content.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("content")) ? ; Ok(ModuleStorage { content, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("ModuleStorage", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: content -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(16267..16271) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(16272..16276) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "content_seed", span: #0 bytes(16277..16289) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: module ::
[INFO] [stdout] ModuleStorageSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = ModuleStorage; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["content"]; enum Field { Content } impl <
[INFO] [stdout]         '__de > serde :: de :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result { formatter.write_str("`content`") }
[INFO] [stdout]                     fn visit_str < E > (self, value : & str) -> Result < Field,
[INFO] [stdout]                     E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "content" => Ok(Field :: Content), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: module :: ModuleStorageSeed < 'v > } impl < 'v,
[INFO] [stdout]         '__de > serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = ModuleStorage; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result
[INFO] [stdout]             { formatter.write_str("struct ModuleStorage") } fn visit_map < V >
[INFO] [stdout]             (self, mut map : V) -> Result < Self :: Value, V :: Error > where
[INFO] [stdout]             V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut content : Option < Vec < Box < dyn Module > > > =
[INFO] [stdout]                 None; while let Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Content =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if content.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("content"));
[INFO] [stdout]                             } content =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.content_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let content : Vec < Box < dyn Module > > =
[INFO] [stdout]                 content.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("content")) ? ; Ok(ModuleStorage { content, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("ModuleStorage", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] xxx_field: name -> None | None
[INFO] [stdout] xxx_field: age -> None | None
[INFO] [stdout] xxx_field: gender -> None | None
[INFO] [stdout] xxx_field: passions -> None | None
[INFO] [stdout] xxx_field: morale -> None | None
[INFO] [stdout] xxx_field: boldness -> None | None
[INFO] [stdout] xxx_field: awareness -> None | None
[INFO] [stdout] xxx_field: objective -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(27572..27576) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(27577..27581) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "objective_seed", span: #0 bytes(27582..27596) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: person ::
[INFO] [stdout] PersonSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Person; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = &
[INFO] [stdout]         ["id", "name", "age", "gender", "passions", "morale", "boldness",
[INFO] [stdout]         "awareness", "objective"]; enum Field
[INFO] [stdout]         {
[INFO] [stdout]             Id, Name, Age, Gender, Passions, Morale, Boldness, Awareness,
[INFO] [stdout]             Objective
[INFO] [stdout]         } impl < '__de > serde :: de :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     {
[INFO] [stdout]                         formatter.write_str("`id`, `name`, `age`, `gender`, `passions`, `morale`, `boldness`, `awareness`, `objective`")
[INFO] [stdout]                     } fn visit_str < E > (self, value : & str) -> Result <
[INFO] [stdout]                     Field, E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "id" => Ok(Field :: Id), "name" => Ok(Field :: Name), "age"
[INFO] [stdout]                             => Ok(Field :: Age), "gender" => Ok(Field :: Gender),
[INFO] [stdout]                             "passions" => Ok(Field :: Passions), "morale" =>
[INFO] [stdout]                             Ok(Field :: Morale), "boldness" => Ok(Field :: Boldness),
[INFO] [stdout]                             "awareness" => Ok(Field :: Awareness), "objective" =>
[INFO] [stdout]                             Ok(Field :: Objective), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: person :: PersonSeed < 'v > } impl < 'v, '__de >
[INFO] [stdout]         serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Person; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Person") } fn
[INFO] [stdout]             visit_map < V > (self, mut map : V) -> Result < Self :: Value, V
[INFO] [stdout]             :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut id : Option < PersonId > = None; let mut name : Option
[INFO] [stdout]                 < String > = None; let mut age : Option < u8 > = None; let mut
[INFO] [stdout]                 gender : Option < Gender > = None; let mut passions : Option <
[INFO] [stdout]                 Vec < Passion > > = None; let mut morale : Option < Morale > =
[INFO] [stdout]                 None; let mut boldness : Option < Boldness > = None; let mut
[INFO] [stdout]                 awareness : Option < Awareness > = None; let mut objective :
[INFO] [stdout]                 Option < Option < Box < dyn DynObjective > > > = None; while
[INFO] [stdout]                 let Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Name =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if name.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("name"));
[INFO] [stdout]                             } name = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Age =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if age.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("age"));
[INFO] [stdout]                             } age = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Gender =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if gender.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("gender"));
[INFO] [stdout]                             } gender = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Passions =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if passions.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("passions"));
[INFO] [stdout]                             } passions = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Morale =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if morale.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("morale"));
[INFO] [stdout]                             } morale = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Boldness =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if boldness.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("boldness"));
[INFO] [stdout]                             } boldness = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Awareness =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if awareness.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("awareness"));
[INFO] [stdout]                             } awareness = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Objective =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if objective.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("objective"));
[INFO] [stdout]                             } objective =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.objective_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let id : PersonId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; let name : String =
[INFO] [stdout]                 name.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("name")) ? ; let age : u8 =
[INFO] [stdout]                 age.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("age")) ? ; let gender : Gender =
[INFO] [stdout]                 gender.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("gender")) ? ; let passions : Vec < Passion > =
[INFO] [stdout]                 passions.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("passions")) ? ; let morale : Morale =
[INFO] [stdout]                 morale.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("morale")) ? ; let boldness : Boldness =
[INFO] [stdout]                 boldness.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("boldness")) ? ; let awareness : Awareness =
[INFO] [stdout]                 awareness.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("awareness")) ? ; let objective : Option < Box <
[INFO] [stdout]                 dyn DynObjective > > =
[INFO] [stdout]                 objective.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("objective")) ? ;
[INFO] [stdout]                 Ok(Person
[INFO] [stdout]                 {
[INFO] [stdout]                     id, name, age, gender, passions, morale, boldness,
[INFO] [stdout]                     awareness, objective,
[INFO] [stdout]                 })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Person", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: input -> None | None
[INFO] [stdout] xxx_field: output -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(37342..37346) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(37347..37351) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "module_factory_seed", span: #0 bytes(37352..37371) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: recipe ::
[INFO] [stdout] AssemblyRecipeSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = AssemblyRecipe; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["input", "output"]; enum Field
[INFO] [stdout]         { Input, Output } impl < '__de > serde :: de :: Deserialize < '__de >
[INFO] [stdout]         for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     { formatter.write_str("`input`, `output`") } fn visit_str <
[INFO] [stdout]                     E > (self, value : & str) -> Result < Field, E > where E :
[INFO] [stdout]                     serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "input" => Ok(Field :: Input), "output" =>
[INFO] [stdout]                             Ok(Field :: Output), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: recipe :: AssemblyRecipeSeed < 'v > } impl < 'v,
[INFO] [stdout]         '__de > serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = AssemblyRecipe; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result
[INFO] [stdout]             { formatter.write_str("struct AssemblyRecipe") } fn visit_map < V
[INFO] [stdout]             > (self, mut map : V) -> Result < Self :: Value, V :: Error >
[INFO] [stdout]             where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut input : Option < InputRecipe > = None; let mut output
[INFO] [stdout]                 : Option < Rc < dyn ModuleFactory > > = None; while let
[INFO] [stdout]                 Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Input =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if input.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("input"));
[INFO] [stdout]                             } input = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Output =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if output.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("output"));
[INFO] [stdout]                             } output =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.module_factory_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let input : InputRecipe =
[INFO] [stdout]                 input.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("input")) ? ; let output : Rc < dyn
[INFO] [stdout]                 ModuleFactory > =
[INFO] [stdout]                 output.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("output")) ? ;
[INFO] [stdout]                 Ok(AssemblyRecipe { input, output, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("AssemblyRecipe", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] xxx_field: name -> None | None
[INFO] [stdout] xxx_field: age -> None | None
[INFO] [stdout] xxx_field: gender -> None | None
[INFO] [stdout] xxx_field: passions -> None | None
[INFO] [stdout] xxx_field: morale -> None | None
[INFO] [stdout] xxx_field: boldness -> None | None
[INFO] [stdout] xxx_field: awareness -> None | None
[INFO] [stdout] xxx_field: objective -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(27572..27576) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(27577..27581) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "objective_seed", span: #0 bytes(27582..27596) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: person ::
[INFO] [stdout] PersonSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Person; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = &
[INFO] [stdout]         ["id", "name", "age", "gender", "passions", "morale", "boldness",
[INFO] [stdout]         "awareness", "objective"]; enum Field
[INFO] [stdout]         {
[INFO] [stdout]             Id, Name, Age, Gender, Passions, Morale, Boldness, Awareness,
[INFO] [stdout]             Objective
[INFO] [stdout]         } impl < '__de > serde :: de :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     {
[INFO] [stdout]                         formatter.write_str("`id`, `name`, `age`, `gender`, `passions`, `morale`, `boldness`, `awareness`, `objective`")
[INFO] [stdout]                     } fn visit_str < E > (self, value : & str) -> Result <
[INFO] [stdout]                     Field, E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "id" => Ok(Field :: Id), "name" => Ok(Field :: Name), "age"
[INFO] [stdout]                             => Ok(Field :: Age), "gender" => Ok(Field :: Gender),
[INFO] [stdout]                             "passions" => Ok(Field :: Passions), "morale" =>
[INFO] [stdout]                             Ok(Field :: Morale), "boldness" => Ok(Field :: Boldness),
[INFO] [stdout]                             "awareness" => Ok(Field :: Awareness), "objective" =>
[INFO] [stdout]                             Ok(Field :: Objective), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: person :: PersonSeed < 'v > } impl < 'v, '__de >
[INFO] [stdout]         serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Person; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Person") } fn
[INFO] [stdout]             visit_map < V > (self, mut map : V) -> Result < Self :: Value, V
[INFO] [stdout]             :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut id : Option < PersonId > = None; let mut name : Option
[INFO] [stdout]                 < String > = None; let mut age : Option < u8 > = None; let mut
[INFO] [stdout]                 gender : Option < Gender > = None; let mut passions : Option <
[INFO] [stdout]                 Vec < Passion > > = None; let mut morale : Option < Morale > =
[INFO] [stdout]                 None; let mut boldness : Option < Boldness > = None; let mut
[INFO] [stdout]                 awareness : Option < Awareness > = None; let mut objective :
[INFO] [stdout]                 Option < Option < Box < dyn DynObjective > > > = None; while
[INFO] [stdout]                 let Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Name =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if name.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("name"));
[INFO] [stdout]                             } name = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Age =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if age.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("age"));
[INFO] [stdout]                             } age = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Gender =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if gender.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("gender"));
[INFO] [stdout]                             } gender = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Passions =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if passions.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("passions"));
[INFO] [stdout]                             } passions = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Morale =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if morale.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("morale"));
[INFO] [stdout]                             } morale = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Boldness =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if boldness.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("boldness"));
[INFO] [stdout]                             } boldness = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Awareness =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if awareness.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("awareness"));
[INFO] [stdout]                             } awareness = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Objective =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if objective.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("objective"));
[INFO] [stdout]                             } objective =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.objective_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let id : PersonId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; let name : String =
[INFO] [stdout]                 name.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("name")) ? ; let age : u8 =
[INFO] [stdout]                 age.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("age")) ? ; let gender : Gender =
[INFO] [stdout]                 gender.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("gender")) ? ; let passions : Vec < Passion > =
[INFO] [stdout]                 passions.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("passions")) ? ; let morale : Morale =
[INFO] [stdout]                 morale.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("morale")) ? ; let boldness : Boldness =
[INFO] [stdout]                 boldness.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("boldness")) ? ; let awareness : Awareness =
[INFO] [stdout]                 awareness.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("awareness")) ? ; let objective : Option < Box <
[INFO] [stdout]                 dyn DynObjective > > =
[INFO] [stdout]                 objective.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("objective")) ? ;
[INFO] [stdout]                 Ok(Person
[INFO] [stdout]                 {
[INFO] [stdout]                     id, name, age, gender, passions, morale, boldness,
[INFO] [stdout]                     awareness, objective,
[INFO] [stdout]                 })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Person", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: input -> None | None
[INFO] [stdout] xxx_field: output -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(37342..37346) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(37347..37351) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "module_factory_seed", span: #0 bytes(37352..37371) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: recipe ::
[INFO] [stdout] AssemblyRecipeSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = AssemblyRecipe; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["input", "output"]; enum Field
[INFO] [stdout]         { Input, Output } impl < '__de > serde :: de :: Deserialize < '__de >
[INFO] [stdout]         for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     { formatter.write_str("`input`, `output`") } fn visit_str <
[INFO] [stdout]                     E > (self, value : & str) -> Result < Field, E > where E :
[INFO] [stdout]                     serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "input" => Ok(Field :: Input), "output" =>
[INFO] [stdout]                             Ok(Field :: Output), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: recipe :: AssemblyRecipeSeed < 'v > } impl < 'v,
[INFO] [stdout]         '__de > serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = AssemblyRecipe; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result
[INFO] [stdout]             { formatter.write_str("struct AssemblyRecipe") } fn visit_map < V
[INFO] [stdout]             > (self, mut map : V) -> Result < Self :: Value, V :: Error >
[INFO] [stdout]             where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut input : Option < InputRecipe > = None; let mut output
[INFO] [stdout]                 : Option < Rc < dyn ModuleFactory > > = None; while let
[INFO] [stdout]                 Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Input =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if input.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("input"));
[INFO] [stdout]                             } input = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Output =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if output.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("output"));
[INFO] [stdout]                             } output =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.module_factory_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let input : InputRecipe =
[INFO] [stdout]                 input.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("input")) ? ; let output : Rc < dyn
[INFO] [stdout]                 ModuleFactory > =
[INFO] [stdout]                 output.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("output")) ? ;
[INFO] [stdout]                 Ok(AssemblyRecipe { input, output, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("AssemblyRecipe", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] xxx_field: owner -> None | None
[INFO] [stdout] xxx_field: pos -> None | None
[INFO] [stdout] xxx_field: modules -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(108332..108336) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(108337..108341) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "module_seq_seed", span: #0 bytes(108342..108357) }) }) | None
[INFO] [stdout] xxx_field: requests -> None | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: vessel ::
[INFO] [stdout] VesselSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Vessel; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["id", "owner", "pos", "modules"]; enum
[INFO] [stdout]         Field { Id, Owner, Pos, Modules } impl < '__de > serde :: de ::
[INFO] [stdout]         Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     { formatter.write_str("`id`, `owner`, `pos`, `modules`") }
[INFO] [stdout]                     fn visit_str < E > (self, value : & str) -> Result < Field,
[INFO] [stdout]                     E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "id" => Ok(Field :: Id), "owner" => Ok(Field :: Owner),
[INFO] [stdout]                             "pos" => Ok(Field :: Pos), "modules" =>
[INFO] [stdout]                             Ok(Field :: Modules), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: vessel :: VesselSeed < 'v > } impl < 'v, '__de >
[INFO] [stdout]         serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Vessel; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Vessel") } fn
[INFO] [stdout]             visit_map < V > (self, mut map : V) -> Result < Self :: Value, V
[INFO] [stdout]             :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut id : Option < VesselId > = None; let mut owner :
[INFO] [stdout]                 Option < PersonId > = None; let mut pos : Option < Point <
[INFO] [stdout]                 Float > > = None; let mut modules : Option < Vec < RefCell <
[INFO] [stdout]                 Box < dyn Module > > > > = None; while let Some(key) =
[INFO] [stdout]                 map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Owner =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if owner.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("owner"));
[INFO] [stdout]                             } owner = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Pos =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if pos.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("pos"));
[INFO] [stdout]                             } pos = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Modules =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if modules.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("modules"));
[INFO] [stdout]                             } modules =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.module_seq_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let id : VesselId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; let owner : PersonId =
[INFO] [stdout]                 owner.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("owner")) ? ; let pos : Point < Float > =
[INFO] [stdout]                 pos.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("pos")) ? ; let modules : Vec < RefCell < Box <
[INFO] [stdout]                 dyn Module > > > =
[INFO] [stdout]                 modules.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("modules")) ? ;
[INFO] [stdout]                 Ok(Vessel
[INFO] [stdout]                 { id, owner, pos, modules, requests : Default :: default(), })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Vessel", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: vessel -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(114642..114646) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(114647..114651) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "vessel_seed", span: #0 bytes(114652..114663) }) }) | None
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] xxx_field: owner -> None | None
[INFO] [stdout] xxx_field: pos -> None | None
[INFO] [stdout] xxx_field: modules -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(108332..108336) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(108337..108341) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "module_seq_seed", span: #0 bytes(108342..108357) }) }) | None
[INFO] [stdout] xxx_field: requests -> None | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: vessel ::
[INFO] [stdout] DockingClampSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = DockingClamp; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["vessel"]; enum Field { Vessel } impl <
[INFO] [stdout]         '__de > serde :: de :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result { formatter.write_str("`vessel`") }
[INFO] [stdout]                     fn visit_str < E > (self, value : & str) -> Result < Field,
[INFO] [stdout]                     E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "vessel" => Ok(Field :: Vessel), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: vessel :: DockingClampSeed < 'v > } impl < 'v, '__de
[INFO] [stdout]         > serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = DockingClamp; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result
[INFO] [stdout]             { formatter.write_str("struct DockingClamp") } fn visit_map < V >
[INFO] [stdout]             (self, mut map : V) -> Result < Self :: Value, V :: Error > where
[INFO] [stdout]             V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut vessel : Option < Option < Vessel > > = None; while
[INFO] [stdout]                 let Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Vessel =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if vessel.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("vessel"));
[INFO] [stdout]                             } vessel =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.vessel_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let vessel : Option < Vessel > =
[INFO] [stdout]                 vessel.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("vessel")) ? ; Ok(DockingClamp { vessel, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("DockingClamp", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: vessel ::
[INFO] [stdout] VesselSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Vessel; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["id", "owner", "pos", "modules"]; enum
[INFO] [stdout]         Field { Id, Owner, Pos, Modules } impl < '__de > serde :: de ::
[INFO] [stdout]         Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     { formatter.write_str("`id`, `owner`, `pos`, `modules`") }
[INFO] [stdout]                     fn visit_str < E > (self, value : & str) -> Result < Field,
[INFO] [stdout]                     E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "id" => Ok(Field :: Id), "owner" => Ok(Field :: Owner),
[INFO] [stdout]                             "pos" => Ok(Field :: Pos), "modules" =>
[INFO] [stdout]                             Ok(Field :: Modules), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: vessel :: VesselSeed < 'v > } impl < 'v, '__de >
[INFO] [stdout]         serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Vessel; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Vessel") } fn
[INFO] [stdout]             visit_map < V > (self, mut map : V) -> Result < Self :: Value, V
[INFO] [stdout]             :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut id : Option < VesselId > = None; let mut owner :
[INFO] [stdout]                 Option < PersonId > = None; let mut pos : Option < Point <
[INFO] [stdout]                 Float > > = None; let mut modules : Option < Vec < RefCell <
[INFO] [stdout]                 Box < dyn Module > > > > = None; while let Some(key) =
[INFO] [stdout]                 map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Owner =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if owner.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("owner"));
[INFO] [stdout]                             } owner = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Pos =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if pos.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("pos"));
[INFO] [stdout]                             } pos = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Modules =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if modules.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("modules"));
[INFO] [stdout]                             } modules =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.module_seq_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let id : VesselId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; let owner : PersonId =
[INFO] [stdout]                 owner.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("owner")) ? ; let pos : Point < Float > =
[INFO] [stdout]                 pos.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("pos")) ? ; let modules : Vec < RefCell < Box <
[INFO] [stdout]                 dyn Module > > > =
[INFO] [stdout]                 modules.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("modules")) ? ;
[INFO] [stdout]                 Ok(Vessel
[INFO] [stdout]                 { id, owner, pos, modules, requests : Default :: default(), })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Vessel", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: vessel -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(114642..114646) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(114647..114651) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "vessel_seed", span: #0 bytes(114652..114663) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: vessel ::
[INFO] [stdout] DockingClampSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = DockingClamp; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["vessel"]; enum Field { Vessel } impl <
[INFO] [stdout]         '__de > serde :: de :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result { formatter.write_str("`vessel`") }
[INFO] [stdout]                     fn visit_str < E > (self, value : & str) -> Result < Field,
[INFO] [stdout]                     E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "vessel" => Ok(Field :: Vessel), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         { seed : crate :: vessel :: DockingClampSeed < 'v > } impl < 'v, '__de
[INFO] [stdout]         > serde :: de :: Visitor < '__de > for Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = DockingClamp; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result
[INFO] [stdout]             { formatter.write_str("struct DockingClamp") } fn visit_map < V >
[INFO] [stdout]             (self, mut map : V) -> Result < Self :: Value, V :: Error > where
[INFO] [stdout]             V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut vessel : Option < Option < Vessel > > = None; while
[INFO] [stdout]                 let Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Vessel =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if vessel.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("vessel"));
[INFO] [stdout]                             } vessel =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.vessel_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let vessel : Option < Vessel > =
[INFO] [stdout]                 vessel.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("vessel")) ? ; Ok(DockingClamp { vessel, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("DockingClamp", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] warning: unused imports: `DeserializeSeed`, `SeqAccess`, and `Visitor`
[INFO] [stdout]  --> api/src/environment/environment.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::de::{DeserializeSeed, MapAccess, SeqAccess, Visitor};
[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 imports: `DeserializeSeed`, `SeqAccess`, and `Visitor`
[INFO] [stdout]  --> api/src/environment/environment.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::de::{DeserializeSeed, MapAccess, SeqAccess, Visitor};
[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 imports: `Deserialize`, `Serializer`, and `de`
[INFO] [stdout]  --> api/src/environment/environment.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Deserializer, Serialize, Serializer, de};
[INFO] [stdout]   |             ^^^^^^^^^^^                           ^^^^^^^^^^  ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> api/src/environment/environment.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Formatter`
[INFO] [stdout]   --> api/src/environment/environment.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fmt::Formatter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize`, `Serializer`, and `de`
[INFO] [stdout]  --> api/src/environment/environment.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Deserializer, Serialize, Serializer, de};
[INFO] [stdout]   |             ^^^^^^^^^^^                           ^^^^^^^^^^  ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> api/src/environment/environment.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Formatter`
[INFO] [stdout]   --> api/src/environment/environment.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fmt::Formatter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> api/src/item/item_storage.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 |         if (!ok) {
[INFO] [stdout]    |            ^   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 67 -         if (!ok) {
[INFO] [stdout] 67 +         if !ok  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> api/src/item/item_storage.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 |         if (!ok) {
[INFO] [stdout]    |            ^   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 67 -         if (!ok) {
[INFO] [stdout] 67 +         if !ok  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]   --> api/src/module/console.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::ops::Deref;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> api/src/module/module_capability.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::math::Complex`
[INFO] [stdout]  --> api/src/module/process_token.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::utils::math::Complex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]   --> api/src/module/console.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::ops::Deref;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BorrowError` and `Ref`
[INFO] [stdout]  --> api/src/module/process_token.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::{BorrowError, Ref, RefCell};
[INFO] [stdout]   |                 ^^^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> api/src/module/process_token.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> api/src/module/module_capability.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConcatModuleCapabilities` and `ModuleCapability`
[INFO] [stdout]  --> api/src/person/person.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     ConcatModuleCapabilities, Module, ModuleCapability, ModuleConsole, ProcessTokenContext,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SliceRandom`
[INFO] [stdout]   --> api/src/person/person.rs:12:66
[INFO] [stdout]    |
[INFO] [stdout] 12 | use rand::prelude::{Distribution, IndexedRandom, IteratorRandom, SliceRandom};
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::math::Complex`
[INFO] [stdout]  --> api/src/module/process_token.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::utils::math::Complex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BorrowError` and `Ref`
[INFO] [stdout]  --> api/src/module/process_token.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::{BorrowError, Ref, RefCell};
[INFO] [stdout]   |                 ^^^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> api/src/module/process_token.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConcatModuleCapabilities` and `ModuleCapability`
[INFO] [stdout]  --> api/src/person/person.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     ConcatModuleCapabilities, Module, ModuleCapability, ModuleConsole, ProcessTokenContext,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SliceRandom`
[INFO] [stdout]   --> api/src/person/person.rs:12:66
[INFO] [stdout]    |
[INFO] [stdout] 12 | use rand::prelude::{Distribution, IndexedRandom, IteratorRandom, SliceRandom};
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::de::DeserializeSeed`
[INFO] [stdout]   --> api/src/person/person.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use serde::de::DeserializeSeed;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]   --> api/src/person/person.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::error::Error;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::de::DeserializeSeed`
[INFO] [stdout]   --> api/src/person/person.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use serde::de::DeserializeSeed;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]   --> api/src/person/person.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::error::Error;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeMap`
[INFO] [stdout]  --> api/src/person/objective.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::BTreeMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]   --> api/src/person/objective.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fmt::{Debug, Display};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> api/src/person/logger.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RefMut` and `Ref`
[INFO] [stdout]  --> api/src/person/utils.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::{Ref, RefMut};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Person`
[INFO] [stdout]  --> api/src/vessel/vessel.rs:2:52
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::person::{Logger, ObjectiveDeciderVault, Person, PersonId};
[INFO] [stdout]   |                                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `de`
[INFO] [stdout]  --> api/src/vessel/vessel.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use serde::{Deserialize, Deserializer, Serialize, de};
[INFO] [stdout]   |             ^^^^^^^^^^^                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::BTreeMap`
[INFO] [stdout]  --> api/src/person/objective.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::BTreeMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]   --> api/src/person/objective.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fmt::{Debug, Display};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> api/src/person/logger.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VesselId`
[INFO] [stdout]  --> api/src/vessel/docking_clamp.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::vessel::{Vessel, VesselId, VesselSeed};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RefMut` and `Ref`
[INFO] [stdout]  --> api/src/person/utils.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::{Ref, RefMut};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoxSeed` and `OptionSeed`
[INFO] [stdout]  --> api/src/vessel/docking_clamp.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use dyn_serde::{BoxSeed, DynDeserializeSeedVault, OptionSeed};
[INFO] [stdout]   |                 ^^^^^^^                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Person`
[INFO] [stdout]  --> api/src/vessel/vessel.rs:2:52
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::person::{Logger, ObjectiveDeciderVault, Person, PersonId};
[INFO] [stdout]   |                                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `de`
[INFO] [stdout]  --> api/src/vessel/vessel.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use serde::{Deserialize, Deserializer, Serialize, de};
[INFO] [stdout]   |             ^^^^^^^^^^^                           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VesselId`
[INFO] [stdout]  --> api/src/vessel/docking_clamp.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::vessel::{Vessel, VesselId, VesselSeed};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoxSeed` and `OptionSeed`
[INFO] [stdout]  --> api/src/vessel/docking_clamp.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use dyn_serde::{BoxSeed, DynDeserializeSeedVault, OptionSeed};
[INFO] [stdout]   |                 ^^^^^^^                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserializer`
[INFO] [stdout]  --> api/src/environment/environment.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Deserializer, Serialize, Serializer, de};
[INFO] [stdout]   |                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MapAccess`
[INFO] [stdout]  --> api/src/environment/environment.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::de::{DeserializeSeed, MapAccess, SeqAccess, Visitor};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MapAccess`
[INFO] [stdout]  --> api/src/vessel/vessel.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::de::{DeserializeSeed, MapAccess, SeqAccess, Visitor};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Module`
[INFO] [stdout]  --> api/src/person/person.rs:2:31
[INFO] [stdout]   |
[INFO] [stdout] 2 |     ConcatModuleCapabilities, Module, ModuleCapability, ModuleConsole, ProcessTokenContext,
[INFO] [stdout]   |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Objective`
[INFO] [stdout]  --> api/src/person/person.rs:4:32
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::person::objective::{Objective, ObjectiveSeed, ObjectiveStatus};
[INFO] [stdout]   |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/item/item.rs:30:19
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter`
[INFO] [stdout]   --> api/src/item/item_storage.rs:12:48
[INFO] [stdout]    |
[INFO] [stdout] 12 |     fn from_iter<T: IntoIterator<Item = Item>>(iter: T) -> Self {
[INFO] [stdout]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> api/src/item/item_storage.rs:20:17
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn try_from(value: Vec<Item>) -> Result<Self, Self::Error> {
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> api/src/item/item_storage.rs:31:32
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn add_item(&mut self, item: Item) -> Item {
[INFO] [stdout]    |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> api/src/item/item_storage.rs:36:36
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn try_add_item(&mut self, item: Item) -> bool {
[INFO] [stdout]    |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item_id`
[INFO] [stdout]   --> api/src/item/item_storage.rs:41:35
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn remove_item(&mut self, item_id: ItemId, count: ItemCount) -> Item {
[INFO] [stdout]    |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_item_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count`
[INFO] [stdout]   --> api/src/item/item_storage.rs:41:52
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn remove_item(&mut self, item_id: ItemId, count: ItemCount) -> Item {
[INFO] [stdout]    |                                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> api/src/item/item_storage.rs:46:39
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn try_remove_item(&mut self, item: Item) -> bool {
[INFO] [stdout]    |                                       ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item_id`
[INFO] [stdout]   --> api/src/item/item_storage.rs:50:25
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn count(&self, item_id: ItemId) -> ItemCount {
[INFO] [stdout]    |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_item_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserializer`
[INFO] [stdout]  --> api/src/environment/environment.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Deserializer, Serialize, Serializer, de};
[INFO] [stdout]   |                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MapAccess`
[INFO] [stdout]  --> api/src/environment/environment.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::de::{DeserializeSeed, MapAccess, SeqAccess, Visitor};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MapAccess`
[INFO] [stdout]  --> api/src/vessel/vessel.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::de::{DeserializeSeed, MapAccess, SeqAccess, Visitor};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Module`
[INFO] [stdout]  --> api/src/person/person.rs:2:31
[INFO] [stdout]   |
[INFO] [stdout] 2 |     ConcatModuleCapabilities, Module, ModuleCapability, ModuleConsole, ProcessTokenContext,
[INFO] [stdout]   |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Objective`
[INFO] [stdout]  --> api/src/person/person.rs:4:32
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::person::objective::{Objective, ObjectiveSeed, ObjectiveStatus};
[INFO] [stdout]   |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/item/item.rs:30:19
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `role`
[INFO] [stdout]    --> api/src/module/console.rs:183:28
[INFO] [stdout]     |
[INFO] [stdout] 183 |     fn give_command(&self, role: Role) {}
[INFO] [stdout]     |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_role`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vessel_id`
[INFO] [stdout]    --> api/src/module/console.rs:197:23
[INFO] [stdout]     |
[INFO] [stdout] 197 |     fn fire_at(&self, vessel_id: u32) {
[INFO] [stdout]     |                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vessel_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter`
[INFO] [stdout]   --> api/src/item/item_storage.rs:12:48
[INFO] [stdout]    |
[INFO] [stdout] 12 |     fn from_iter<T: IntoIterator<Item = Item>>(iter: T) -> Self {
[INFO] [stdout]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> api/src/item/item_storage.rs:20:17
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn try_from(value: Vec<Item>) -> Result<Self, Self::Error> {
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> api/src/item/item_storage.rs:31:32
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn add_item(&mut self, item: Item) -> Item {
[INFO] [stdout]    |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> api/src/item/item_storage.rs:36:36
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn try_add_item(&mut self, item: Item) -> bool {
[INFO] [stdout]    |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item_id`
[INFO] [stdout]   --> api/src/item/item_storage.rs:41:35
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn remove_item(&mut self, item_id: ItemId, count: ItemCount) -> Item {
[INFO] [stdout]    |                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_item_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count`
[INFO] [stdout]   --> api/src/item/item_storage.rs:41:52
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn remove_item(&mut self, item_id: ItemId, count: ItemCount) -> Item {
[INFO] [stdout]    |                                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> api/src/item/item_storage.rs:46:39
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn try_remove_item(&mut self, item: Item) -> bool {
[INFO] [stdout]    |                                       ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item_id`
[INFO] [stdout]   --> api/src/item/item_storage.rs:50:25
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn count(&self, item_id: ItemId) -> ItemCount {
[INFO] [stdout]    |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_item_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rhs`
[INFO] [stdout]   --> api/src/module/module_capability.rs:32:21
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn concat(self, rhs: &[ModuleCapability]) -> Self::Output {
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_rhs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> api/src/module/process_token.rs:95:38
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn mark_completed(&mut self, context: &ProcessTokenContext) {
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> api/src/module/process_token.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `role`
[INFO] [stdout]    --> api/src/module/console.rs:183:28
[INFO] [stdout]     |
[INFO] [stdout] 183 |     fn give_command(&self, role: Role) {}
[INFO] [stdout]     |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_role`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vessel_id`
[INFO] [stdout]    --> api/src/module/console.rs:197:23
[INFO] [stdout]     |
[INFO] [stdout] 197 |     fn fire_at(&self, vessel_id: u32) {
[INFO] [stdout]     |                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vessel_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rhs`
[INFO] [stdout]   --> api/src/module/module_capability.rs:32:21
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn concat(self, rhs: &[ModuleCapability]) -> Self::Output {
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_rhs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> api/src/module/process_token.rs:95:38
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn mark_completed(&mut self, context: &ProcessTokenContext) {
[INFO] [stdout]    |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> api/src/module/process_token.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> api/src/recipe/recipe.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |     fn try_from(value: Vec<Item>) -> Result<Self, Self::Error> {
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> api/src/recipe/recipe.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn try_from(value: Vec<Item>) -> Result<Self, Self::Error> {
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]   --> api/src/utils/color.rs:22:25
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn with_r(self, r: Float) -> Self {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `g`
[INFO] [stdout]   --> api/src/utils/color.rs:26:25
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn with_g(self, g: Float) -> Self {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_g`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> api/src/utils/color.rs:30:25
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub fn with_b(self, b: Float) -> Self {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/utils/color.rs:43:51
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn map_r<F: FnOnce(Float) -> Float>(self, f: F) -> Self {
[INFO] [stdout]    |                                                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/utils/color.rs:47:51
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub fn map_g<F: FnOnce(Float) -> Float>(self, f: F) -> Self {
[INFO] [stdout]    |                                                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/utils/color.rs:51:51
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn map_b<F: FnOnce(Float) -> Float>(self, f: F) -> Self {
[INFO] [stdout]    |                                                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> api/src/recipe/recipe.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |     fn try_from(value: Vec<Item>) -> Result<Self, Self::Error> {
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> api/src/recipe/recipe.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |     fn try_from(value: Vec<Item>) -> Result<Self, Self::Error> {
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> api/src/utils/math/rect.rs:227:34
[INFO] [stdout]     |
[INFO] [stdout] 227 |     pub fn contains_point(&self, other: &Point<T>) -> bool {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]   --> api/src/utils/color.rs:22:25
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn with_r(self, r: Float) -> Self {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `g`
[INFO] [stdout]   --> api/src/utils/color.rs:26:25
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn with_g(self, g: Float) -> Self {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_g`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> api/src/utils/color.rs:30:25
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub fn with_b(self, b: Float) -> Self {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/utils/color.rs:43:51
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn map_r<F: FnOnce(Float) -> Float>(self, f: F) -> Self {
[INFO] [stdout]    |                                                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/utils/color.rs:47:51
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub fn map_g<F: FnOnce(Float) -> Float>(self, f: F) -> Self {
[INFO] [stdout]    |                                                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/utils/color.rs:51:51
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn map_b<F: FnOnce(Float) -> Float>(self, f: F) -> Self {
[INFO] [stdout]    |                                                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/utils/utils.rs:91:19
[INFO] [stdout]    |
[INFO] [stdout] 91 |     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> api/src/utils/math/rect.rs:227:34
[INFO] [stdout]     |
[INFO] [stdout] 227 |     pub fn contains_point(&self, other: &Point<T>) -> bool {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `vessel_by_id` is never used
[INFO] [stdout]   --> api/src/environment/environment.rs:37:19
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Environment {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub(crate) fn vessel_by_id(&self, id: VesselId) -> Option<&Vessel> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderHolder` is never constructed
[INFO] [stdout]    --> api/src/item/order.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | struct OrderHolder {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CaptainControlPanel` is never used
[INFO] [stdout]    --> api/src/module/console.rs:182:18
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub(crate) trait CaptainControlPanel {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `NavigatorControlPanel` is never used
[INFO] [stdout]    --> api/src/module/console.rs:186:18
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub(crate) trait NavigatorControlPanel {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `GunnerControlPanel` is never used
[INFO] [stdout]    --> api/src/module/console.rs:192:18
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub(crate) trait GunnerControlPanel {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `modules_with_cap` are never used
[INFO] [stdout]   --> api/src/module/module_storage.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ModuleStorage {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 15 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<&Box<dyn Module>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Role` is never used
[INFO] [stdout]    --> api/src/person/person.rs:173:17
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub(crate) enum Role {
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_this_vessel_fly` is never used
[INFO] [stdout]  --> api/src/person/utils.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn can_this_vessel_fly(
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `for_each_docking_clamps_with_vessels_which_can_fly` is never used
[INFO] [stdout]   --> api/src/person/utils.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn for_each_docking_clamps_with_vessels_which_can_fly<F>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `input` and `output` are never read
[INFO] [stdout]  --> api/src/recipe/recipe.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Recipe {
[INFO] [stdout]   |            ------ fields in this struct
[INFO] [stdout] 6 |     input: Vec<Item>,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 7 |     output: Vec<Item>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OutputRecipe` is never constructed
[INFO] [stdout]   --> api/src/recipe/recipe.rs:50:19
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub(crate) struct OutputRecipe {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_degrees` is never used
[INFO] [stdout]   --> api/src/utils/math/angle.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl<T> Angle<T> {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub(crate) fn from_degrees<U>(value: U) -> Self
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_degrees` and `radians` are never used
[INFO] [stdout]    --> api/src/utils/math/angle.rs:121:19
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl<T> DeltaAngle<T> {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub(crate) fn from_degrees<U>(value: U) -> Self
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub(crate) fn radians(self) -> T
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rotation` and `apply_affine_without_translation` are never used
[INFO] [stdout]    --> api/src/utils/math/matrix.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl<T> Matrix<T> {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn rotation(&self) -> Complex<T>
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     fn apply_affine_without_translation<'a>(&'a self, rhs: &Point<T>) -> Point<T>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SKEW_X` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub const SKEW_X: usize = 1;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SKEW_Y` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub const SKEW_Y: usize = 3;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PERSP0` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub const PERSP0: usize = 6;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PERSP1` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub const PERSP1: usize = 7;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PERSP2` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub const PERSP2: usize = 8;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FitIntoRangeError` is never constructed
[INFO] [stdout]   --> api/src/utils/math/misc.rs:22:19
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) struct FitIntoRangeError<T> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fit_into_range` is never used
[INFO] [stdout]   --> api/src/utils/math/misc.rs:36:15
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub(crate) fn fit_into_range<T, I, O>(x: T, input: I, output: O) -> Result<T, FitIntoRangeError<T>>
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_into_range_inclusive` is never used
[INFO] [stdout]   --> api/src/utils/math/misc.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) fn map_into_range_inclusive<T, I, O>(x: T, input: I, output: O) -> T
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FitIntoRangeInclusiveError` is never constructed
[INFO] [stdout]   --> api/src/utils/math/misc.rs:67:19
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub(crate) struct FitIntoRangeInclusiveError<T> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fit_into_range_inclusive` is never used
[INFO] [stdout]   --> api/src/utils/math/misc.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub(crate) fn fit_into_range_inclusive<T, I, O>(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp_into_range` is never used
[INFO] [stdout]    --> api/src/utils/math/misc.rs:103:15
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub(crate) fn clamp_into_range<T, I, O>(x: T, input: I, output: O) -> T
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign` is never used
[INFO] [stdout]    --> api/src/utils/math/misc.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub(crate) fn sign<T>(v: T) -> T
[INFO] [stdout]     |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NegError` is never constructed
[INFO] [stdout]   --> api/src/utils/math/noneg.rs:50:19
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub(crate) struct NegError<T> {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `original_value` is never used
[INFO] [stdout]   --> api/src/utils/math/noneg.rs:55:19
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl<T> NegError<T> {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 55 |     pub(crate) fn original_value(self) -> T {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `wrap`, `sqrt`, `floor`, and `limited_sub` are never used
[INFO] [stdout]    --> api/src/utils/math/noneg.rs:77:19
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl<T> NoNeg<T> {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  77 |     pub(crate) fn wrap(value: T) -> Result<Self, NegError<T>>
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub(crate) fn sqrt(self) -> NoNeg<<T as Sqrt>::Output>
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub(crate) fn floor(self) -> NoNeg<<T as Floor>::Output>
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub(crate) fn limited_sub<U>(self, rhs: NoNeg<U>) -> NoNeg<<T as Sub<U>>::Output>
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AbsAsNoNeg` is never used
[INFO] [stdout]    --> api/src/utils/math/noneg.rs:208:18
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub(crate) trait AbsAsNoNeg
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `noneg_f32` is never used
[INFO] [stdout]    --> api/src/utils/math/noneg.rs:241:21
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub(crate) const fn noneg_f32(value: f32) -> NoNeg<f32> {
[INFO] [stdout]     |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `noneg_f64` is never used
[INFO] [stdout]    --> api/src/utils/math/noneg.rs:246:21
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub(crate) const fn noneg_f64(value: f64) -> NoNeg<f64> {
[INFO] [stdout]     |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `x_range`, `y_range`, and `instersects_circle` are never used
[INFO] [stdout]    --> api/src/utils/math/rect.rs:197:19
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl<T> Rect<T> {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub(crate) fn x_range(&self) -> Range<T>
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub(crate) fn y_range(&self) -> Range<T>
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub(crate) fn instersects_circle(&self, center: Point<T>, radius: NoNeg<T>) -> bool
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Floor` is never used
[INFO] [stdout]    --> api/src/utils/math/traits.rs:148:18
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub(crate) trait Floor {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Clamp` is never used
[INFO] [stdout]    --> api/src/utils/math/traits.rs:169:18
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub(crate) trait Clamp: Sized {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MinusOne` is never used
[INFO] [stdout]    --> api/src/utils/math/traits.rs:224:18
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub(crate) trait MinusOne {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DegToRad` is never used
[INFO] [stdout]    --> api/src/utils/math/traits.rs:309:18
[INFO] [stdout]     |
[INFO] [stdout] 309 | pub(crate) trait DegToRad {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) fn normalize<const SIZE: usize>(v: [Float; SIZE]) -> [Float; SIZE] {
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_opt` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) fn normalize_opt<const SIZE: usize>(v: [Option<Float>; SIZE]) -> [Option<Float>; SIZE] {
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `transfer_energy` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub(crate) fn transfer_energy(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `drain_energy` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:49:15
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub(crate) fn drain_energy(source: &mut NoNeg<Float>, mut delta_energy: NoNeg<Float>) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sample_range_from_range` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:60:15
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub(crate) fn sample_range_from_range<T: SampleUniform + PartialOrd>(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequiredToBeInRangeError` is never constructed
[INFO] [stdout]   --> api/src/utils/utils.rs:85:19
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub(crate) struct RequiredToBeInRangeError<T, R> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RequiredToBeInRange` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:98:18
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub(crate) trait RequiredToBeInRange: Sized {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `owner` and `add_module` are never used
[INFO] [stdout]    --> api/src/vessel/vessel.rs:98:19
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl Vessel {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub(crate) fn owner(&self) -> PersonId {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub(crate) fn add_module(&mut self, module: Box<dyn Module>) {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> api/src/vessel/console.rs:15:25
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<RefMut<Box<dyn Module>>>;
[INFO] [stdout]    |                         ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<RefMut<'_, Box<dyn Module>>>;
[INFO] [stdout]    |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> api/src/vessel/vessel.rs:184:25
[INFO] [stdout]     |
[INFO] [stdout] 184 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<RefMut<Box<dyn Module>>> {
[INFO] [stdout]     |                         ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 184 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<RefMut<'_, Box<dyn Module>>> {
[INFO] [stdout]     |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> api/src/utils/utils.rs:91:19
[INFO] [stdout]    |
[INFO] [stdout] 91 |     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `vessel_by_id` is never used
[INFO] [stdout]   --> api/src/environment/environment.rs:37:19
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Environment {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub(crate) fn vessel_by_id(&self, id: VesselId) -> Option<&Vessel> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderHolder` is never constructed
[INFO] [stdout]    --> api/src/item/order.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | struct OrderHolder {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CaptainControlPanel` is never used
[INFO] [stdout]    --> api/src/module/console.rs:182:18
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub(crate) trait CaptainControlPanel {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `NavigatorControlPanel` is never used
[INFO] [stdout]    --> api/src/module/console.rs:186:18
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub(crate) trait NavigatorControlPanel {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `GunnerControlPanel` is never used
[INFO] [stdout]    --> api/src/module/console.rs:192:18
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub(crate) trait GunnerControlPanel {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `modules_with_cap` are never used
[INFO] [stdout]   --> api/src/module/module_storage.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ModuleStorage {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 15 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<&Box<dyn Module>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Role` is never used
[INFO] [stdout]    --> api/src/person/person.rs:173:17
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub(crate) enum Role {
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_this_vessel_fly` is never used
[INFO] [stdout]  --> api/src/person/utils.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn can_this_vessel_fly(
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `for_each_docking_clamps_with_vessels_which_can_fly` is never used
[INFO] [stdout]   --> api/src/person/utils.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn for_each_docking_clamps_with_vessels_which_can_fly<F>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `input` and `output` are never read
[INFO] [stdout]  --> api/src/recipe/recipe.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Recipe {
[INFO] [stdout]   |            ------ fields in this struct
[INFO] [stdout] 6 |     input: Vec<Item>,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 7 |     output: Vec<Item>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OutputRecipe` is never constructed
[INFO] [stdout]   --> api/src/recipe/recipe.rs:50:19
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub(crate) struct OutputRecipe {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `radians` is never used
[INFO] [stdout]    --> api/src/utils/math/angle.rs:131:19
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl<T> DeltaAngle<T> {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub(crate) fn radians(self) -> T
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rotation` and `apply_affine_without_translation` are never used
[INFO] [stdout]    --> api/src/utils/math/matrix.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl<T> Matrix<T> {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn rotation(&self) -> Complex<T>
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     fn apply_affine_without_translation<'a>(&'a self, rhs: &Point<T>) -> Point<T>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SKEW_X` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub const SKEW_X: usize = 1;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SKEW_Y` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub const SKEW_Y: usize = 3;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PERSP0` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub const PERSP0: usize = 6;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PERSP1` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub const PERSP1: usize = 7;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PERSP2` is never used
[INFO] [stdout]   --> api/src/utils/math/matrix.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub const PERSP2: usize = 8;
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FitIntoRangeError` is never constructed
[INFO] [stdout]   --> api/src/utils/math/misc.rs:22:19
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) struct FitIntoRangeError<T> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fit_into_range` is never used
[INFO] [stdout]   --> api/src/utils/math/misc.rs:36:15
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub(crate) fn fit_into_range<T, I, O>(x: T, input: I, output: O) -> Result<T, FitIntoRangeError<T>>
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_into_range_inclusive` is never used
[INFO] [stdout]   --> api/src/utils/math/misc.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub(crate) fn map_into_range_inclusive<T, I, O>(x: T, input: I, output: O) -> T
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FitIntoRangeInclusiveError` is never constructed
[INFO] [stdout]   --> api/src/utils/math/misc.rs:67:19
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub(crate) struct FitIntoRangeInclusiveError<T> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fit_into_range_inclusive` is never used
[INFO] [stdout]   --> api/src/utils/math/misc.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub(crate) fn fit_into_range_inclusive<T, I, O>(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp_into_range` is never used
[INFO] [stdout]    --> api/src/utils/math/misc.rs:103:15
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub(crate) fn clamp_into_range<T, I, O>(x: T, input: I, output: O) -> T
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign` is never used
[INFO] [stdout]    --> api/src/utils/math/misc.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub(crate) fn sign<T>(v: T) -> T
[INFO] [stdout]     |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `original_value` is never read
[INFO] [stdout]   --> api/src/utils/math/noneg.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub(crate) struct NegError<T> {
[INFO] [stdout]    |                   -------- field in this struct
[INFO] [stdout] 51 |     original_value: T,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NegError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `original_value` is never used
[INFO] [stdout]   --> api/src/utils/math/noneg.rs:55:19
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl<T> NegError<T> {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 55 |     pub(crate) fn original_value(self) -> T {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sqrt` and `floor` are never used
[INFO] [stdout]    --> api/src/utils/math/noneg.rs:94:19
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl<T> NoNeg<T> {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub(crate) fn sqrt(self) -> NoNeg<<T as Sqrt>::Output>
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub(crate) fn floor(self) -> NoNeg<<T as Floor>::Output>
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AbsAsNoNeg` is never used
[INFO] [stdout]    --> api/src/utils/math/noneg.rs:208:18
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub(crate) trait AbsAsNoNeg
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `noneg_f32` is never used
[INFO] [stdout]    --> api/src/utils/math/noneg.rs:241:21
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub(crate) const fn noneg_f32(value: f32) -> NoNeg<f32> {
[INFO] [stdout]     |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `noneg_f64` is never used
[INFO] [stdout]    --> api/src/utils/math/noneg.rs:246:21
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub(crate) const fn noneg_f64(value: f64) -> NoNeg<f64> {
[INFO] [stdout]     |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `x_range`, `y_range`, and `instersects_circle` are never used
[INFO] [stdout]    --> api/src/utils/math/rect.rs:197:19
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl<T> Rect<T> {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub(crate) fn x_range(&self) -> Range<T>
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub(crate) fn y_range(&self) -> Range<T>
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub(crate) fn instersects_circle(&self, center: Point<T>, radius: NoNeg<T>) -> bool
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Floor` is never used
[INFO] [stdout]    --> api/src/utils/math/traits.rs:148:18
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub(crate) trait Floor {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Clamp` is never used
[INFO] [stdout]    --> api/src/utils/math/traits.rs:169:18
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub(crate) trait Clamp: Sized {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `MinusOne` is never used
[INFO] [stdout]    --> api/src/utils/math/traits.rs:224:18
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub(crate) trait MinusOne {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) fn normalize<const SIZE: usize>(v: [Float; SIZE]) -> [Float; SIZE] {
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_opt` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) fn normalize_opt<const SIZE: usize>(v: [Option<Float>; SIZE]) -> [Option<Float>; SIZE] {
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `transfer_energy` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub(crate) fn transfer_energy(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `drain_energy` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:49:15
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub(crate) fn drain_energy(source: &mut NoNeg<Float>, mut delta_energy: NoNeg<Float>) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sample_range_from_range` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:60:15
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub(crate) fn sample_range_from_range<T: SampleUniform + PartialOrd>(
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequiredToBeInRangeError` is never constructed
[INFO] [stdout]   --> api/src/utils/utils.rs:85:19
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub(crate) struct RequiredToBeInRangeError<T, R> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RequiredToBeInRange` is never used
[INFO] [stdout]   --> api/src/utils/utils.rs:98:18
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub(crate) trait RequiredToBeInRange: Sized {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `owner` and `add_module` are never used
[INFO] [stdout]    --> api/src/vessel/vessel.rs:98:19
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl Vessel {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub(crate) fn owner(&self) -> PersonId {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub(crate) fn add_module(&mut self, module: Box<dyn Module>) {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> api/src/vessel/console.rs:15:25
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<RefMut<Box<dyn Module>>>;
[INFO] [stdout]    |                         ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<RefMut<'_, Box<dyn Module>>>;
[INFO] [stdout]    |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> api/src/vessel/vessel.rs:184:25
[INFO] [stdout]     |
[INFO] [stdout] 184 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<RefMut<Box<dyn Module>>> {
[INFO] [stdout]     |                         ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 184 |     fn modules_with_cap(&self, cap: ModuleCapability) -> Vec<RefMut<'_, Box<dyn Module>>> {
[INFO] [stdout]     |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking dudes_in_space_core v0.0.1 (/opt/rustwide/workdir/core)
[INFO] [stdout] deserialize_seed_tagged_enum: [
[INFO] [stdout]     Variant {
[INFO] [stdout]         attrs: [],
[INFO] [stdout]         ident: Ident {
[INFO] [stdout]             ident: "Idle",
[INFO] [stdout]             span: #0 bytes(3002..3006),
[INFO] [stdout]         },
[INFO] [stdout]         fields: Fields::Unit,
[INFO] [stdout]         discriminant: None,
[INFO] [stdout]     },
[INFO] [stdout]     Variant {
[INFO] [stdout]         attrs: [
[INFO] [stdout]             Attribute {
[INFO] [stdout]                 pound_token: Pound,
[INFO] [stdout]                 style: AttrStyle::Outer,
[INFO] [stdout]                 bracket_token: Bracket,
[INFO] [stdout]                 meta: Meta::List {
[INFO] [stdout]                     path: Path {
[INFO] [stdout]                         leading_colon: None,
[INFO] [stdout]                         segments: [
[INFO] [stdout]                             PathSegment {
[INFO] [stdout]                                 ident: Ident {
[INFO] [stdout]                                     ident: "deserialize_seed_xxx",
[INFO] [stdout]                                     span: #0 bytes(3014..3034),
[INFO] [stdout]                                 },
[INFO] [stdout]                                 arguments: PathArguments::None,
[INFO] [stdout]                             },
[INFO] [stdout]                         ],
[INFO] [stdout]                     },
[INFO] [stdout]                     delimiter: MacroDelimiter::Paren(
[INFO] [stdout]                         Paren,
[INFO] [stdout]                     ),
[INFO] [stdout]                     tokens: TokenStream [
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "seeds",
[INFO] [stdout]                             span: #0 bytes(3035..3040),
[INFO] [stdout]                         },
[INFO] [stdout]                         Punct {
[INFO] [stdout]                             ch: '=',
[INFO] [stdout]                             spacing: Alone,
[INFO] [stdout]                             span: #0 bytes(3041..3042),
[INFO] [stdout]                         },
[INFO] [stdout]                         Group {
[INFO] [stdout]                             delimiter: Bracket,
[INFO] [stdout]                             stream: TokenStream [
[INFO] [stdout]                                 Group {
[INFO] [stdout]                                     delimiter: Parenthesis,
[INFO] [stdout]                                     stream: TokenStream [
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "process_token",
[INFO] [stdout]                                             span: #0 bytes(3045..3058),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: ',',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(3058..3059),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "self",
[INFO] [stdout]                                             span: #0 bytes(3060..3064),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(3064..3065),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "seed",
[INFO] [stdout]                                             span: #0 bytes(3065..3069),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(3069..3070),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "seed",
[INFO] [stdout]                                             span: #0 bytes(3070..3074),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(3074..3075),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "process_token_seed",
[INFO] [stdout]                                             span: #0 bytes(3075..3093),
[INFO] [stdout]                                         },
[INFO] [stdout]                                     ],
[INFO] [stdout]                                     span: #0 bytes(3044..3094),
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                             span: #0 bytes(3043..3095),
[INFO] [stdout]                         },
[INFO] [stdout]                     ],
[INFO] [stdout]                 },
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]         ident: Ident {
[INFO] [stdout]             ident: "Assembling",
[INFO] [stdout]             span: #0 bytes(3102..3112),
[INFO] [stdout]         },
[INFO] [stdout]         fields: Fields::Named {
[INFO] [stdout]             brace_token: Brace,
[INFO] [stdout]             named: [
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "recipe_index",
[INFO] [stdout]                             span: #0 bytes(3123..3135),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "usize",
[INFO] [stdout]                                         span: #0 bytes(3137..3142),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::None,
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "deploy",
[INFO] [stdout]                             span: #0 bytes(3152..3158),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "bool",
[INFO] [stdout]                                         span: #0 bytes(3160..3164),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::None,
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "process_token",
[INFO] [stdout]                             span: #0 bytes(3174..3187),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "ProcessTokenMut",
[INFO] [stdout]                                         span: #0 bytes(3189..3204),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::None,
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]         discriminant: None,
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] variant_attr: DeserializeSeedXXXVariantAttributes {
[INFO] [stdout]     seeds: [
[INFO] [stdout]         (
[INFO] [stdout]             Ident {
[INFO] [stdout]                 ident: "process_token",
[INFO] [stdout]                 span: #0 bytes(3045..3058),
[INFO] [stdout]             },
[INFO] [stdout]             Expr::Field {
[INFO] [stdout]                 attrs: [],
[INFO] [stdout]                 base: Expr::Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     base: Expr::Field {
[INFO] [stdout]                         attrs: [],
[INFO] [stdout]                         base: Expr::Path {
[INFO] [stdout]                             attrs: [],
[INFO] [stdout]                             qself: None,
[INFO] [stdout]                             path: Path {
[INFO] [stdout]                                 leading_colon: None,
[INFO] [stdout]                                 segments: [
[INFO] [stdout]                                     PathSegment {
[INFO] [stdout]                                         ident: Ident {
[INFO] [stdout]                                             ident: "self",
[INFO] [stdout]                                             span: #0 bytes(3060..3064),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         arguments: PathArguments::None,
[INFO] [stdout]                                     },
[INFO] [stdout]                                 ],
[INFO] [stdout]                             },
[INFO] [stdout]                         },
[INFO] [stdout]                         dot_token: Dot,
[INFO] [stdout]                         member: Member::Named(
[INFO] [stdout]                             Ident {
[INFO] [stdout]                                 ident: "seed",
[INFO] [stdout]                                 span: #0 bytes(3065..3069),
[INFO] [stdout]                             },
[INFO] [stdout]                         ),
[INFO] [stdout]                     },
[INFO] [stdout]                     dot_token: Dot,
[INFO] [stdout]                     member: Member::Named(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "seed",
[INFO] [stdout]                             span: #0 bytes(3070..3074),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 dot_token: Dot,
[INFO] [stdout]                 member: Member::Named(
[INFO] [stdout]                     Ident {
[INFO] [stdout]                         ident: "process_token_seed",
[INFO] [stdout]                         span: #0 bytes(3075..3093),
[INFO] [stdout]                     },
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]         ),
[INFO] [stdout]     ],
[INFO] [stdout] }
[INFO] [stdout] xxx_field: recipe_index -> None | None
[INFO] [stdout] xxx_field: deploy -> None | None
[INFO] [stdout] xxx_field: process_token -> None | Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(3060..3064) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(3065..3069) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(3070..3074) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "process_token_seed", span: #0 bytes(3075..3093) }) })
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < '__de, 'context > serde :: de :: DeserializeSeed < '__de > for crate ::
[INFO] [stdout] modules :: assembler :: AssemblerStateSeed < 'context >
[INFO] [stdout] {
[INFO] [stdout]     type Value = AssemblerState; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < '__de > ,
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(Deserialize)] struct __AssemblerState_Idle; struct
[INFO] [stdout]         __AssemblerState_Assembling
[INFO] [stdout]         {
[INFO] [stdout]             recipe_index : usize, deploy : bool, process_token :
[INFO] [stdout]             ProcessTokenMut,
[INFO] [stdout]         }; impl __AssemblerState_Assembling
[INFO] [stdout]         {
[INFO] [stdout]             fn into_dst(self) -> AssemblerState
[INFO] [stdout]             {
[INFO] [stdout]                 AssemblerState :: Assembling
[INFO] [stdout]                 {
[INFO] [stdout]                     recipe_index : self.recipe_index, deploy : self.deploy,
[INFO] [stdout]                     process_token : self.process_token,
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'context >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: assembler :: AssemblerStateSeed <
[INFO] [stdout]             'context >
[INFO] [stdout]         } impl < 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]         Visitor < 'context >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = AssemblerState; fn
[INFO] [stdout]             expecting(& self, f : & mut std :: fmt :: Formatter) -> std :: fmt
[INFO] [stdout]             :: Result { write! (f, "map") } fn visit_map < A : serde :: de ::
[INFO] [stdout]             MapAccess < '__de >> (self, mut map : A) -> Result < Self ::
[INFO] [stdout]             Value, A :: Error >
[INFO] [stdout]             {
[INFO] [stdout]                 let key = map.next_key :: < String > () ? ; if key.as_deref()
[INFO] [stdout]                 != Some("tp")
[INFO] [stdout]                 { return Err(serde :: de :: Error :: missing_field("tp")); }
[INFO] [stdout]                 #[derive(Deserialize)] enum Tag { Idle, Assembling, } match
[INFO] [stdout]                 map.next_value :: < Tag > () ?
[INFO] [stdout]                 {
[INFO] [stdout]                     Tag :: Idle => Ok(Self :: Value :: Idle), Tag :: Assembling
[INFO] [stdout]                     =>
[INFO] [stdout]                     {
[INFO] [stdout]                         struct __AssemblerState_AssemblingSeed < 'context >
[INFO] [stdout]                         {
[INFO] [stdout]                             seed : crate :: modules :: assembler :: AssemblerStateSeed <
[INFO] [stdout]                             'context >
[INFO] [stdout]                         } impl < 'de, 'context > serde :: de :: DeserializeSeed <
[INFO] [stdout]                         'de > for __AssemblerState_AssemblingSeed < 'context >
[INFO] [stdout]                         {
[INFO] [stdout]                             type Value = __AssemblerState_Assembling; fn deserialize < D
[INFO] [stdout]                             > (self, deserializer : D) -> Result < Self :: Value, D ::
[INFO] [stdout]                             Error > where D : serde :: de :: Deserializer < 'de > ,
[INFO] [stdout]                             {
[INFO] [stdout]                                 const NAMES : & [& str] = &
[INFO] [stdout]                                 ["recipe_index", "deploy", "process_token"]; enum Field
[INFO] [stdout]                                 { RecipeIndex, Deploy, ProcessToken } impl < '__de > serde
[INFO] [stdout]                                 :: de :: Deserialize < '__de > for Field
[INFO] [stdout]                                 {
[INFO] [stdout]                                     fn deserialize < D > (deserializer : D) -> Result < Self, D
[INFO] [stdout]                                     :: Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]                                     {
[INFO] [stdout]                                         struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                                         '__de > for FieldVisitor
[INFO] [stdout]                                         {
[INFO] [stdout]                                             type Value = Field; fn
[INFO] [stdout]                                             expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                                             -> std :: fmt :: Result
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 formatter.write_str("`recipe_index`, `deploy`, `process_token`")
[INFO] [stdout]                                             } fn visit_str < E > (self, value : & str) -> Result <
[INFO] [stdout]                                             Field, E > where E : serde :: de :: Error,
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 match value
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     "recipe_index" => Ok(Field :: RecipeIndex), "deploy" =>
[INFO] [stdout]                                                     Ok(Field :: Deploy), "process_token" =>
[INFO] [stdout]                                                     Ok(Field :: ProcessToken), _ =>
[INFO] [stdout]                                                     Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                                                 }
[INFO] [stdout]                                             }
[INFO] [stdout]                                         } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]                                     }
[INFO] [stdout]                                 } struct Visitor < 'context >
[INFO] [stdout]                                 { seed : __AssemblerState_AssemblingSeed < 'context > } impl
[INFO] [stdout]                                 < 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]                                 Visitor < 'context >
[INFO] [stdout]                                 {
[INFO] [stdout]                                     type Value = __AssemblerState_Assembling; fn
[INFO] [stdout]                                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                                     -> std :: fmt :: Result
[INFO] [stdout]                                     {
[INFO] [stdout]                                         formatter.write_str("struct __AssemblerState_Assembling")
[INFO] [stdout]                                     } fn visit_map < V > (self, mut map : V) -> Result < Self ::
[INFO] [stdout]                                     Value, V :: Error > where V : serde :: de :: MapAccess <
[INFO] [stdout]                                     '__de > ,
[INFO] [stdout]                                     {
[INFO] [stdout]                                         let mut recipe_index : Option < usize > = None; let mut
[INFO] [stdout]                                         deploy : Option < bool > = None; let mut process_token :
[INFO] [stdout]                                         Option < ProcessTokenMut > = None; while let Some(key) =
[INFO] [stdout]                                         map.next_key() ?
[INFO] [stdout]                                         {
[INFO] [stdout]                                             match key
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 Field :: RecipeIndex =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if recipe_index.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error ::
[INFO] [stdout]                                                         duplicate_field("recipe_index"));
[INFO] [stdout]                                                     } recipe_index = Some(map.next_value() ?);
[INFO] [stdout]                                                 }, Field :: Deploy =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if deploy.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error :: duplicate_field("deploy"));
[INFO] [stdout]                                                     } deploy = Some(map.next_value() ?);
[INFO] [stdout]                                                 }, Field :: ProcessToken =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if process_token.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error ::
[INFO] [stdout]                                                         duplicate_field("process_token"));
[INFO] [stdout]                                                     } process_token =
[INFO] [stdout]                                                     Some(map.next_value_seed(self.seed.seed.process_token_seed.clone())
[INFO] [stdout]                                                     ? .into());
[INFO] [stdout]                                                 },
[INFO] [stdout]                                             }
[INFO] [stdout]                                         } let recipe_index : usize =
[INFO] [stdout]                                         recipe_index.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("recipe_index")) ? ; let deploy : bool =
[INFO] [stdout]                                         deploy.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("deploy")) ? ; let process_token :
[INFO] [stdout]                                         ProcessTokenMut =
[INFO] [stdout]                                         process_token.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("process_token")) ? ;
[INFO] [stdout]                                         Ok(__AssemblerState_Assembling
[INFO] [stdout]                                         { recipe_index, deploy, process_token, })
[INFO] [stdout]                                     }
[INFO] [stdout]                                 }
[INFO] [stdout]                                 deserializer.deserialize_struct("__AssemblerState_Assembling",
[INFO] [stdout]                                 NAMES, Visitor { seed : self },)
[INFO] [stdout]                             }
[INFO] [stdout]                         } use serde :: de :: DeserializeSeed as _; let value :
[INFO] [stdout]                         __AssemblerState_Assembling =
[INFO] [stdout]                         __AssemblerState_AssemblingSeed
[INFO] [stdout]                         {
[INFO] [stdout]                             seed : self.seed
[INFO] [stdout]                         }.deserialize(serde :: de :: value :: MapAccessDeserializer
[INFO] [stdout]                         :: new(map)) ? ; Ok(value.into_dst())
[INFO] [stdout]                     },
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_enum("AssemblerState", &
[INFO] [stdout]         ["Idle", "Assembling",], Visitor { seed : self })
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] xxx_field: recipes -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(3753..3757) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(3758..3762) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "recipe_seq_seed", span: #0 bytes(3763..3778) }) }) | None
[INFO] [stdout] xxx_field: state -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(3849..3853) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(3854..3858) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "state_seed", span: #0 bytes(3859..3869) }) }) | None
[INFO] [stdout] xxx_field: storage -> None | None
[INFO] [stdout] xxx_field: operator -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(4023..4027) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(4028..4032) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "person_seed", span: #0 bytes(4033..4044) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v, 'context > serde :: de :: DeserializeSeed < 'de > for crate ::
[INFO] [stdout] modules :: assembler :: AssemblerSeed < 'v, 'context >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Assembler; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = &
[INFO] [stdout]         ["id", "recipes", "state", "storage", "operator"]; enum Field
[INFO] [stdout]         { Id, Recipes, State, Storage, Operator } impl < '__de > serde :: de
[INFO] [stdout]         :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     {
[INFO] [stdout]                         formatter.write_str("`id`, `recipes`, `state`, `storage`, `operator`")
[INFO] [stdout]                     } fn visit_str < E > (self, value : & str) -> Result <
[INFO] [stdout]                     Field, E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "id" => Ok(Field :: Id), "recipes" => Ok(Field :: Recipes),
[INFO] [stdout]                             "state" => Ok(Field :: State), "storage" =>
[INFO] [stdout]                             Ok(Field :: Storage), "operator" => Ok(Field :: Operator), _
[INFO] [stdout]                             => Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v, 'context >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: assembler :: AssemblerSeed < 'v,
[INFO] [stdout]             'context >
[INFO] [stdout]         } impl < 'v, 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]         Visitor < 'v, 'context >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Assembler; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Assembler") }
[INFO] [stdout]             fn visit_map < V > (self, mut map : V) -> Result < Self :: Value,
[INFO] [stdout]             V :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut id : Option < ModuleId > = None; let mut recipes :
[INFO] [stdout]                 Option < Vec < AssemblyRecipe > > = None; let mut state :
[INFO] [stdout]                 Option < AssemblerState > = None; let mut storage : Option <
[INFO] [stdout]                 ItemStorage > = None; let mut operator : Option < Option <
[INFO] [stdout]                 Person > > = None; while let Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Recipes =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if recipes.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("recipes"));
[INFO] [stdout]                             } recipes =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.recipe_seq_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         }, Field :: State =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if state.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("state"));
[INFO] [stdout]                             } state =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.state_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         }, Field :: Storage =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if storage.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("storage"));
[INFO] [stdout]                             } storage = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Operator =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if operator.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("operator"));
[INFO] [stdout]                             } operator =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.person_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let id : ModuleId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; let recipes : Vec < AssemblyRecipe > =
[INFO] [stdout]                 recipes.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("recipes")) ? ; let state : AssemblerState =
[INFO] [stdout]                 state.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("state")) ? ; let storage : ItemStorage =
[INFO] [stdout]                 storage.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("storage")) ? ; let operator : Option < Person >
[INFO] [stdout]                 =
[INFO] [stdout]                 operator.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("operator")) ? ;
[INFO] [stdout]                 Ok(Assembler { id, recipes, state, storage, operator, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Assembler", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] deserialize_seed_tagged_enum: [
[INFO] [stdout]     Variant {
[INFO] [stdout]         attrs: [],
[INFO] [stdout]         ident: Ident {
[INFO] [stdout]             ident: "Idle",
[INFO] [stdout]             span: #0 bytes(19889..19893),
[INFO] [stdout]         },
[INFO] [stdout]         fields: Fields::Unit,
[INFO] [stdout]         discriminant: None,
[INFO] [stdout]     },
[INFO] [stdout]     Variant {
[INFO] [stdout]         attrs: [
[INFO] [stdout]             Attribute {
[INFO] [stdout]                 pound_token: Pound,
[INFO] [stdout]                 style: AttrStyle::Outer,
[INFO] [stdout]                 bracket_token: Bracket,
[INFO] [stdout]                 meta: Meta::List {
[INFO] [stdout]                     path: Path {
[INFO] [stdout]                         leading_colon: None,
[INFO] [stdout]                         segments: [
[INFO] [stdout]                             PathSegment {
[INFO] [stdout]                                 ident: Ident {
[INFO] [stdout]                                     ident: "deserialize_seed_xxx",
[INFO] [stdout]                                     span: #0 bytes(19901..19921),
[INFO] [stdout]                                 },
[INFO] [stdout]                                 arguments: PathArguments::None,
[INFO] [stdout]                             },
[INFO] [stdout]                         ],
[INFO] [stdout]                     },
[INFO] [stdout]                     delimiter: MacroDelimiter::Paren(
[INFO] [stdout]                         Paren,
[INFO] [stdout]                     ),
[INFO] [stdout]                     tokens: TokenStream [
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "seeds",
[INFO] [stdout]                             span: #0 bytes(19922..19927),
[INFO] [stdout]                         },
[INFO] [stdout]                         Punct {
[INFO] [stdout]                             ch: '=',
[INFO] [stdout]                             spacing: Alone,
[INFO] [stdout]                             span: #0 bytes(19928..19929),
[INFO] [stdout]                         },
[INFO] [stdout]                         Group {
[INFO] [stdout]                             delimiter: Bracket,
[INFO] [stdout]                             stream: TokenStream [
[INFO] [stdout]                                 Group {
[INFO] [stdout]                                     delimiter: Parenthesis,
[INFO] [stdout]                                     stream: TokenStream [
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "process_token",
[INFO] [stdout]                                             span: #0 bytes(19932..19945),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: ',',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(19945..19946),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "self",
[INFO] [stdout]                                             span: #0 bytes(19947..19951),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(19951..19952),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "seed",
[INFO] [stdout]                                             span: #0 bytes(19952..19956),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(19956..19957),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "seed",
[INFO] [stdout]                                             span: #0 bytes(19957..19961),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(19961..19962),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "process_token_seed",
[INFO] [stdout]                                             span: #0 bytes(19962..19980),
[INFO] [stdout]                                         },
[INFO] [stdout]                                     ],
[INFO] [stdout]                                     span: #0 bytes(19931..19981),
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                             span: #0 bytes(19930..19982),
[INFO] [stdout]                         },
[INFO] [stdout]                     ],
[INFO] [stdout]                 },
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]         ident: Ident {
[INFO] [stdout]             ident: "Building",
[INFO] [stdout]             span: #0 bytes(19989..19997),
[INFO] [stdout]         },
[INFO] [stdout]         fields: Fields::Named {
[INFO] [stdout]             brace_token: Brace,
[INFO] [stdout]             named: [
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "modules",
[INFO] [stdout]                             span: #0 bytes(20008..20015),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "BTreeSet",
[INFO] [stdout]                                         span: #0 bytes(20017..20025),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::AngleBracketed {
[INFO] [stdout]                                         colon2_token: None,
[INFO] [stdout]                                         lt_token: Lt,
[INFO] [stdout]                                         args: [
[INFO] [stdout]                                             GenericArgument::Type(
[INFO] [stdout]                                                 Type::Path {
[INFO] [stdout]                                                     qself: None,
[INFO] [stdout]                                                     path: Path {
[INFO] [stdout]                                                         leading_colon: None,
[INFO] [stdout]                                                         segments: [
[INFO] [stdout]                                                             PathSegment {
[INFO] [stdout]                                                                 ident: Ident {
[INFO] [stdout]                                                                     ident: "ModuleId",
[INFO] [stdout]                                                                     span: #0 bytes(20026..20034),
[INFO] [stdout]                                                                 },
[INFO] [stdout]                                                                 arguments: PathArguments::None,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                         ],
[INFO] [stdout]                                                     },
[INFO] [stdout]                                                 },
[INFO] [stdout]                                             ),
[INFO] [stdout]                                         ],
[INFO] [stdout]                                         gt_token: Gt,
[INFO] [stdout]                                     },
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "process_token",
[INFO] [stdout]                             span: #0 bytes(20045..20058),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "ProcessTokenMut",
[INFO] [stdout]                                         span: #0 bytes(20060..20075),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::None,
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]         discriminant: None,
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] variant_attr: DeserializeSeedXXXVariantAttributes {
[INFO] [stdout]     seeds: [
[INFO] [stdout]         (
[INFO] [stdout]             Ident {
[INFO] [stdout]                 ident: "process_token",
[INFO] [stdout]                 span: #0 bytes(19932..19945),
[INFO] [stdout]             },
[INFO] [stdout]             Expr::Field {
[INFO] [stdout]                 attrs: [],
[INFO] [stdout]                 base: Expr::Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     base: Expr::Field {
[INFO] [stdout]                         attrs: [],
[INFO] [stdout]                         base: Expr::Path {
[INFO] [stdout]                             attrs: [],
[INFO] [stdout]                             qself: None,
[INFO] [stdout]                             path: Path {
[INFO] [stdout]                                 leading_colon: None,
[INFO] [stdout]                                 segments: [
[INFO] [stdout]                                     PathSegment {
[INFO] [stdout]                                         ident: Ident {
[INFO] [stdout]                                             ident: "self",
[INFO] [stdout]                                             span: #0 bytes(19947..19951),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         arguments: PathArguments::None,
[INFO] [stdout]                                     },
[INFO] [stdout]                                 ],
[INFO] [stdout]                             },
[INFO] [stdout]                         },
[INFO] [stdout]                         dot_token: Dot,
[INFO] [stdout]                         member: Member::Named(
[INFO] [stdout]                             Ident {
[INFO] [stdout]                                 ident: "seed",
[INFO] [stdout]                                 span: #0 bytes(19952..19956),
[INFO] [stdout]                             },
[INFO] [stdout]                         ),
[INFO] [stdout]                     },
[INFO] [stdout]                     dot_token: Dot,
[INFO] [stdout]                     member: Member::Named(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "seed",
[INFO] [stdout]                             span: #0 bytes(19957..19961),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 dot_token: Dot,
[INFO] [stdout]                 member: Member::Named(
[INFO] [stdout]                     Ident {
[INFO] [stdout]                         ident: "process_token_seed",
[INFO] [stdout]                         span: #0 bytes(19962..19980),
[INFO] [stdout]                     },
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]         ),
[INFO] [stdout]     ],
[INFO] [stdout] }
[INFO] [stdout] xxx_field: modules -> None | None
[INFO] [stdout] xxx_field: process_token -> None | Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(19947..19951) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(19952..19956) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(19957..19961) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "process_token_seed", span: #0 bytes(19962..19980) }) })
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < '__de, 'context > serde :: de :: DeserializeSeed < '__de > for crate ::
[INFO] [stdout] modules :: dockyard :: DockyardStateSeed < 'context >
[INFO] [stdout] {
[INFO] [stdout]     type Value = DockyardState; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < '__de > ,
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(Deserialize)] struct __DockyardState_Idle; struct
[INFO] [stdout]         __DockyardState_Building
[INFO] [stdout]         {
[INFO] [stdout]             modules : BTreeSet < ModuleId > , process_token : ProcessTokenMut,
[INFO] [stdout]         }; impl __DockyardState_Building
[INFO] [stdout]         {
[INFO] [stdout]             fn into_dst(self) -> DockyardState
[INFO] [stdout]             {
[INFO] [stdout]                 DockyardState :: Building
[INFO] [stdout]                 {
[INFO] [stdout]                     modules : self.modules, process_token : self.process_token,
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'context >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: dockyard :: DockyardStateSeed <
[INFO] [stdout]             'context >
[INFO] [stdout]         } impl < 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]         Visitor < 'context >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = DockyardState; fn
[INFO] [stdout]             expecting(& self, f : & mut std :: fmt :: Formatter) -> std :: fmt
[INFO] [stdout]             :: Result { write! (f, "map") } fn visit_map < A : serde :: de ::
[INFO] [stdout]             MapAccess < '__de >> (self, mut map : A) -> Result < Self ::
[INFO] [stdout]             Value, A :: Error >
[INFO] [stdout]             {
[INFO] [stdout]                 let key = map.next_key :: < String > () ? ; if key.as_deref()
[INFO] [stdout]                 != Some("tp")
[INFO] [stdout]                 { return Err(serde :: de :: Error :: missing_field("tp")); }
[INFO] [stdout]                 #[derive(Deserialize)] enum Tag { Idle, Building, } match
[INFO] [stdout]                 map.next_value :: < Tag > () ?
[INFO] [stdout]                 {
[INFO] [stdout]                     Tag :: Idle => Ok(Self :: Value :: Idle), Tag :: Building =>
[INFO] [stdout]                     {
[INFO] [stdout]                         struct __DockyardState_BuildingSeed < 'context >
[INFO] [stdout]                         {
[INFO] [stdout]                             seed : crate :: modules :: dockyard :: DockyardStateSeed <
[INFO] [stdout]                             'context >
[INFO] [stdout]                         } impl < 'de, 'context > serde :: de :: DeserializeSeed <
[INFO] [stdout]                         'de > for __DockyardState_BuildingSeed < 'context >
[INFO] [stdout]                         {
[INFO] [stdout]                             type Value = __DockyardState_Building; fn deserialize < D >
[INFO] [stdout]                             (self, deserializer : D) -> Result < Self :: Value, D ::
[INFO] [stdout]                             Error > where D : serde :: de :: Deserializer < 'de > ,
[INFO] [stdout]                             {
[INFO] [stdout]                                 const NAMES : & [& str] = & ["modules", "process_token"];
[INFO] [stdout]                                 enum Field { Modules, ProcessToken } impl < '__de > serde ::
[INFO] [stdout]                                 de :: Deserialize < '__de > for Field
[INFO] [stdout]                                 {
[INFO] [stdout]                                     fn deserialize < D > (deserializer : D) -> Result < Self, D
[INFO] [stdout]                                     :: Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]                                     {
[INFO] [stdout]                                         struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                                         '__de > for FieldVisitor
[INFO] [stdout]                                         {
[INFO] [stdout]                                             type Value = Field; fn
[INFO] [stdout]                                             expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                                             -> std :: fmt :: Result
[INFO] [stdout]                                             { formatter.write_str("`modules`, `process_token`") } fn
[INFO] [stdout]                                             visit_str < E > (self, value : & str) -> Result < Field, E >
[INFO] [stdout]                                             where E : serde :: de :: Error,
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 match value
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     "modules" => Ok(Field :: Modules), "process_token" =>
[INFO] [stdout]                                                     Ok(Field :: ProcessToken), _ =>
[INFO] [stdout]                                                     Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                                                 }
[INFO] [stdout]                                             }
[INFO] [stdout]                                         } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]                                     }
[INFO] [stdout]                                 } struct Visitor < 'context >
[INFO] [stdout]                                 { seed : __DockyardState_BuildingSeed < 'context > } impl <
[INFO] [stdout]                                 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]                                 Visitor < 'context >
[INFO] [stdout]                                 {
[INFO] [stdout]                                     type Value = __DockyardState_Building; fn
[INFO] [stdout]                                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                                     -> std :: fmt :: Result
[INFO] [stdout]                                     { formatter.write_str("struct __DockyardState_Building") }
[INFO] [stdout]                                     fn visit_map < V > (self, mut map : V) -> Result < Self ::
[INFO] [stdout]                                     Value, V :: Error > where V : serde :: de :: MapAccess <
[INFO] [stdout]                                     '__de > ,
[INFO] [stdout]                                     {
[INFO] [stdout]                                         let mut modules : Option < BTreeSet < ModuleId > > = None;
[INFO] [stdout]                                         let mut process_token : Option < ProcessTokenMut > = None;
[INFO] [stdout]                                         while let Some(key) = map.next_key() ?
[INFO] [stdout]                                         {
[INFO] [stdout]                                             match key
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 Field :: Modules =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if modules.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error :: duplicate_field("modules"));
[INFO] [stdout]                                                     } modules = Some(map.next_value() ?);
[INFO] [stdout]                                                 }, Field :: ProcessToken =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if process_token.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error ::
[INFO] [stdout]                                                         duplicate_field("process_token"));
[INFO] [stdout]                                                     } process_token =
[INFO] [stdout]                                                     Some(map.next_value_seed(self.seed.seed.process_token_seed.clone())
[INFO] [stdout]                                                     ? .into());
[INFO] [stdout]                                                 },
[INFO] [stdout]                                             }
[INFO] [stdout]                                         } let modules : BTreeSet < ModuleId > =
[INFO] [stdout]                                         modules.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("modules")) ? ; let process_token :
[INFO] [stdout]                                         ProcessTokenMut =
[INFO] [stdout]                                         process_token.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("process_token")) ? ;
[INFO] [stdout]                                         Ok(__DockyardState_Building { modules, process_token, })
[INFO] [stdout]                                     }
[INFO] [stdout]                                 }
[INFO] [stdout]                                 deserializer.deserialize_struct("__DockyardState_Building",
[INFO] [stdout]                                 NAMES, Visitor { seed : self },)
[INFO] [stdout]                             }
[INFO] [stdout]                         } use serde :: de :: DeserializeSeed as _; let value :
[INFO] [stdout]                         __DockyardState_Building = __DockyardState_BuildingSeed
[INFO] [stdout]                         {
[INFO] [stdout]                             seed : self.seed
[INFO] [stdout]                         }.deserialize(serde :: de :: value :: MapAccessDeserializer
[INFO] [stdout]                         :: new(map)) ? ; Ok(value.into_dst())
[INFO] [stdout]                     },
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_enum("DockyardState", &
[INFO] [stdout]         ["Idle", "Building",], Visitor { seed : self })
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] xxx_field: state -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(20619..20623) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(20624..20628) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "state_seed", span: #0 bytes(20629..20639) }) }) | None
[INFO] [stdout] xxx_field: module_storage -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(20702..20706) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(20707..20711) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "module_storage_seed", span: #0 bytes(20712..20731) }) }) | None
[INFO] [stdout] xxx_field: docking_clamp -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(20803..20807) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(20808..20812) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "docking_clamp_seed", span: #0 bytes(20813..20831) }) }) | None
[INFO] [stdout] xxx_field: operator -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(20965..20969) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(20970..20974) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "person_seed", span: #0 bytes(20975..20986) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v, 'context > serde :: de :: DeserializeSeed < 'de > for crate ::
[INFO] [stdout] modules :: dockyard :: DockyardSeed < 'v, 'context >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Dockyard; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = &
[INFO] [stdout]         ["id", "state", "module_storage", "docking_clamp", "operator"]; enum
[INFO] [stdout]         Field { Id, State, ModuleStorage, DockingClamp, Operator } impl <
[INFO] [stdout]         '__de > serde :: de :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     {
[INFO] [stdout]                         formatter.write_str("`id`, `state`, `module_storage`, `docking_clamp`, `operator`")
[INFO] [stdout]                     } fn visit_str < E > (self, value : & str) -> Result <
[INFO] [stdout]                     Field, E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "id" => Ok(Field :: Id), "state" => Ok(Field :: State),
[INFO] [stdout]                             "module_storage" => Ok(Field :: ModuleStorage),
[INFO] [stdout]                             "docking_clamp" => Ok(Field :: DockingClamp), "operator" =>
[INFO] [stdout]                             Ok(Field :: Operator), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v, 'context >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: dockyard :: DockyardSeed < 'v, 'context
[INFO] [stdout]             >
[INFO] [stdout]         } impl < 'v, 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]         Visitor < 'v, 'context >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Dockyard; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Dockyard") } fn
[INFO] [stdout]             visit_map < V > (self, mut map : V) -> Result < Self :: Value, V
[INFO] [stdout]             :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut id : Option < ModuleId > = None; let mut state :
[INFO] [stdout]                 Option < DockyardState > = None; let mut module_storage :
[INFO] [stdout]                 Option < ModuleStorage > = None; let mut docking_clamp :
[INFO] [stdout]                 Option < DockingClamp > = None; let mut operator : Option <
[INFO] [stdout]                 Option < Person > > = None; while let Some(key) =
[INFO] [stdout]                 map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: State =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if state.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("state"));
[INFO] [stdout]                             } state =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.state_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         }, Field :: ModuleStorage =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if module_storage.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error ::
[INFO] [stdout]                                 duplicate_field("module_storage"));
[INFO] [stdout]                             } module_storage =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.module_storage_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         }, Field :: DockingClamp =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if docking_clamp.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error ::
[INFO] [stdout]                                 duplicate_field("docking_clamp"));
[INFO] [stdout]                             } docking_clamp =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.docking_clamp_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         }, Field :: Operator =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if operator.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("operator"));
[INFO] [stdout]                             } operator =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.person_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let id : ModuleId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; let state : DockyardState =
[INFO] [stdout]                 state.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("state")) ? ; let module_storage : ModuleStorage
[INFO] [stdout]                 =
[INFO] [stdout]                 module_storage.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("module_storage")) ? ; let docking_clamp :
[INFO] [stdout]                 DockingClamp =
[INFO] [stdout]                 docking_clamp.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("docking_clamp")) ? ; let operator : Option <
[INFO] [stdout]                 Person > =
[INFO] [stdout]                 operator.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("operator")) ? ;
[INFO] [stdout]                 Ok(Dockyard
[INFO] [stdout]                 { id, state, module_storage, docking_clamp, operator, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Dockyard", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: personnel -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(32313..32317) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(32318..32322) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "person_seed", span: #0 bytes(32323..32334) }) }) | None
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: modules
[INFO] [stdout] :: personnel_area :: PersonnelAreaSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = PersonnelArea; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["personnel", "id"]; enum Field
[INFO] [stdout]         { Personnel, Id } impl < '__de > serde :: de :: Deserialize < '__de >
[INFO] [stdout]         for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     { formatter.write_str("`personnel`, `id`") } fn visit_str <
[INFO] [stdout]                     E > (self, value : & str) -> Result < Field, E > where E :
[INFO] [stdout]                     serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "personnel" => Ok(Field :: Personnel), "id" =>
[INFO] [stdout]                             Ok(Field :: Id), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: personnel_area :: PersonnelAreaSeed <
[INFO] [stdout]             'v >
[INFO] [stdout]         } impl < 'v, '__de > serde :: de :: Visitor < '__de > for Visitor < 'v
[INFO] [stdout]         >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = PersonnelArea; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result
[INFO] [stdout]             { formatter.write_str("struct PersonnelArea") } fn visit_map < V >
[INFO] [stdout]             (self, mut map : V) -> Result < Self :: Value, V :: Error > where
[INFO] [stdout]             V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut personnel : Option < Vec < Person > > = None; let mut
[INFO] [stdout]                 id : Option < ModuleId > = None; while let Some(key) =
[INFO] [stdout]                 map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Personnel =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if personnel.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("personnel"));
[INFO] [stdout]                             } personnel =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.person_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         }, Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let personnel : Vec < Person > =
[INFO] [stdout]                 personnel.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("personnel")) ? ; let id : ModuleId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; Ok(PersonnelArea { personnel, id, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("PersonnelArea", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] warning: type `__AssemblerState_Idle` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/assembler.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum AssemblerState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `AssemblerStateIdle`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__AssemblerState_Assembling` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/assembler.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum AssemblerState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `AssemblerStateAssembling`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__AssemblerState_AssemblingSeed` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/assembler.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum AssemblerState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `AssemblerStateAssemblingSeed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__DockyardState_Idle` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/dockyard.rs:31:6
[INFO] [stdout]    |
[INFO] [stdout] 31 | enum DockyardState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DockyardStateIdle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__DockyardState_Building` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/dockyard.rs:31:6
[INFO] [stdout]    |
[INFO] [stdout] 31 | enum DockyardState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DockyardStateBuilding`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__DockyardState_BuildingSeed` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/dockyard.rs:31:6
[INFO] [stdout]    |
[INFO] [stdout] 31 | enum DockyardState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DockyardStateBuildingSeed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::CORE_PACKAGE_ID`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::CORE_PACKAGE_ID;
[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: `DockyardDynSeed`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::modules::{CoreModule, DockyardDynSeed, ModuleVisitor, ModuleVisitorMut};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModuleStorageSeed`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:4:122
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...ModuleCapability, ModuleConsole, ModuleId, ModuleStorage, ModuleStorageSeed, PackageId, ProcessTokenContext, TradingConsole};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dudes_in_space_api::utils::tagged_option::TaggedOptionSeed`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use dudes_in_space_api::utils::tagged_option::TaggedOptionSeed;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DockingClampSeed`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:8:48
[INFO] [stdout]   |
[INFO] [stdout] 8 | use dudes_in_space_api::vessel::{DockingClamp, DockingClampSeed, VesselModuleInterface};
[INFO] [stdout]   |                                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> core/src/modules/personnel_area.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `from_intermediate`
[INFO] [stdout]   --> core/src/modules/personnel_area.rs:15:40
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde_intermediate::{Intermediate, from_intermediate, to_intermediate};
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `from_intermediate_seed`
[INFO] [stdout]  --> core/src/modules/shuttle.rs:7:72
[INFO] [stdout]   |
[INFO] [stdout] 7 |     DynDeserializeSeed, DynDeserializeSeedVault, DynSerialize, TypeId, from_intermediate_seed,
[INFO] [stdout]   |                                                                        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]   --> core/src/modules/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use personnel_area::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]   --> core/src/modules/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use personnel_area::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]   --> core/src/modules/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use shuttle::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]   --> core/src/modules/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use shuttle::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use build_vessel_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use build_vessel_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> core/src/objectives/crafting/craft_modules_objective.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::{BTreeSet, VecDeque};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use craft_modules_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use craft_modules_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefMut`
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::cell::RefMut;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use craft_vessel_from_scratch_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use craft_vessel_from_scratch_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `craft_vessel_from_scratch_objective::*`
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use craft_vessel_from_scratch_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use mine_asteroids_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use mine_asteroids_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use scavenge_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use scavenge_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use gather_research_data::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use gather_research_data::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PersonId`
[INFO] [stdout]  --> core/src/objectives/trading/buy_goods_objective.rs:3:62
[INFO] [stdout]   |
[INFO] [stdout] 3 | use dudes_in_space_api::person::{Objective, ObjectiveStatus, PersonId, PersonLogger};
[INFO] [stdout]   |                                                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use buy_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use buy_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `buy_goods_objective::*`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use buy_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PersonId`
[INFO] [stdout]  --> core/src/objectives/trading/sell_goods_objective.rs:3:62
[INFO] [stdout]   |
[INFO] [stdout] 3 | use dudes_in_space_api::person::{Objective, ObjectiveStatus, PersonId, PersonLogger};
[INFO] [stdout]   |                                                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use sell_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use sell_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sell_goods_objective::*`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use sell_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use trade_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use trade_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] deserialize_seed_tagged_enum: [
[INFO] [stdout]     Variant {
[INFO] [stdout]         attrs: [],
[INFO] [stdout]         ident: Ident {
[INFO] [stdout]             ident: "Idle",
[INFO] [stdout]             span: #0 bytes(3002..3006),
[INFO] [stdout]         },
[INFO] [stdout]         fields: Fields::Unit,
[INFO] [stdout]         discriminant: None,
[INFO] [stdout]     },
[INFO] [stdout]     Variant {
[INFO] [stdout]         attrs: [
[INFO] [stdout]             Attribute {
[INFO] [stdout]                 pound_token: Pound,
[INFO] [stdout]                 style: AttrStyle::Outer,
[INFO] [stdout]                 bracket_token: Bracket,
[INFO] [stdout]                 meta: Meta::List {
[INFO] [stdout]                     path: Path {
[INFO] [stdout]                         leading_colon: None,
[INFO] [stdout]                         segments: [
[INFO] [stdout]                             PathSegment {
[INFO] [stdout]                                 ident: Ident {
[INFO] [stdout]                                     ident: "deserialize_seed_xxx",
[INFO] [stdout]                                     span: #0 bytes(3014..3034),
[INFO] [stdout]                                 },
[INFO] [stdout]                                 arguments: PathArguments::None,
[INFO] [stdout]                             },
[INFO] [stdout]                         ],
[INFO] [stdout]                     },
[INFO] [stdout]                     delimiter: MacroDelimiter::Paren(
[INFO] [stdout]                         Paren,
[INFO] [stdout]                     ),
[INFO] [stdout]                     tokens: TokenStream [
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "seeds",
[INFO] [stdout]                             span: #0 bytes(3035..3040),
[INFO] [stdout]                         },
[INFO] [stdout]                         Punct {
[INFO] [stdout]                             ch: '=',
[INFO] [stdout]                             spacing: Alone,
[INFO] [stdout]                             span: #0 bytes(3041..3042),
[INFO] [stdout]                         },
[INFO] [stdout]                         Group {
[INFO] [stdout]                             delimiter: Bracket,
[INFO] [stdout]                             stream: TokenStream [
[INFO] [stdout]                                 Group {
[INFO] [stdout]                                     delimiter: Parenthesis,
[INFO] [stdout]                                     stream: TokenStream [
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "process_token",
[INFO] [stdout]                                             span: #0 bytes(3045..3058),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: ',',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(3058..3059),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "self",
[INFO] [stdout]                                             span: #0 bytes(3060..3064),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(3064..3065),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "seed",
[INFO] [stdout]                                             span: #0 bytes(3065..3069),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(3069..3070),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "seed",
[INFO] [stdout]                                             span: #0 bytes(3070..3074),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(3074..3075),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "process_token_seed",
[INFO] [stdout]                                             span: #0 bytes(3075..3093),
[INFO] [stdout]                                         },
[INFO] [stdout]                                     ],
[INFO] [stdout]                                     span: #0 bytes(3044..3094),
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                             span: #0 bytes(3043..3095),
[INFO] [stdout]                         },
[INFO] [stdout]                     ],
[INFO] [stdout]                 },
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]         ident: Ident {
[INFO] [stdout]             ident: "Assembling",
[INFO] [stdout]             span: #0 bytes(3102..3112),
[INFO] [stdout]         },
[INFO] [stdout]         fields: Fields::Named {
[INFO] [stdout]             brace_token: Brace,
[INFO] [stdout]             named: [
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "recipe_index",
[INFO] [stdout]                             span: #0 bytes(3123..3135),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "usize",
[INFO] [stdout]                                         span: #0 bytes(3137..3142),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::None,
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "deploy",
[INFO] [stdout]                             span: #0 bytes(3152..3158),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "bool",
[INFO] [stdout]                                         span: #0 bytes(3160..3164),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::None,
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "process_token",
[INFO] [stdout]                             span: #0 bytes(3174..3187),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "ProcessTokenMut",
[INFO] [stdout]                                         span: #0 bytes(3189..3204),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::None,
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]         discriminant: None,
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] variant_attr: DeserializeSeedXXXVariantAttributes {
[INFO] [stdout]     seeds: [
[INFO] [stdout]         (
[INFO] [stdout]             Ident {
[INFO] [stdout]                 ident: "process_token",
[INFO] [stdout]                 span: #0 bytes(3045..3058),
[INFO] [stdout]             },
[INFO] [stdout]             Expr::Field {
[INFO] [stdout]                 attrs: [],
[INFO] [stdout]                 base: Expr::Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     base: Expr::Field {
[INFO] [stdout]                         attrs: [],
[INFO] [stdout]                         base: Expr::Path {
[INFO] [stdout]                             attrs: [],
[INFO] [stdout]                             qself: None,
[INFO] [stdout]                             path: Path {
[INFO] [stdout]                                 leading_colon: None,
[INFO] [stdout]                                 segments: [
[INFO] [stdout]                                     PathSegment {
[INFO] [stdout]                                         ident: Ident {
[INFO] [stdout]                                             ident: "self",
[INFO] [stdout]                                             span: #0 bytes(3060..3064),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         arguments: PathArguments::None,
[INFO] [stdout]                                     },
[INFO] [stdout]                                 ],
[INFO] [stdout]                             },
[INFO] [stdout]                         },
[INFO] [stdout]                         dot_token: Dot,
[INFO] [stdout]                         member: Member::Named(
[INFO] [stdout]                             Ident {
[INFO] [stdout]                                 ident: "seed",
[INFO] [stdout]                                 span: #0 bytes(3065..3069),
[INFO] [stdout]                             },
[INFO] [stdout]                         ),
[INFO] [stdout]                     },
[INFO] [stdout]                     dot_token: Dot,
[INFO] [stdout]                     member: Member::Named(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "seed",
[INFO] [stdout]                             span: #0 bytes(3070..3074),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 dot_token: Dot,
[INFO] [stdout]                 member: Member::Named(
[INFO] [stdout]                     Ident {
[INFO] [stdout]                         ident: "process_token_seed",
[INFO] [stdout]                         span: #0 bytes(3075..3093),
[INFO] [stdout]                     },
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]         ),
[INFO] [stdout]     ],
[INFO] [stdout] }
[INFO] [stdout] xxx_field: recipe_index -> None | None
[INFO] [stdout] xxx_field: deploy -> None | None
[INFO] [stdout] xxx_field: process_token -> None | Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(3060..3064) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(3065..3069) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(3070..3074) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "process_token_seed", span: #0 bytes(3075..3093) }) })
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < '__de, 'context > serde :: de :: DeserializeSeed < '__de > for crate ::
[INFO] [stdout] modules :: assembler :: AssemblerStateSeed < 'context >
[INFO] [stdout] {
[INFO] [stdout]     type Value = AssemblerState; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < '__de > ,
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(Deserialize)] struct __AssemblerState_Idle; struct
[INFO] [stdout]         __AssemblerState_Assembling
[INFO] [stdout]         {
[INFO] [stdout]             recipe_index : usize, deploy : bool, process_token :
[INFO] [stdout]             ProcessTokenMut,
[INFO] [stdout]         }; impl __AssemblerState_Assembling
[INFO] [stdout]         {
[INFO] [stdout]             fn into_dst(self) -> AssemblerState
[INFO] [stdout]             {
[INFO] [stdout]                 AssemblerState :: Assembling
[INFO] [stdout]                 {
[INFO] [stdout]                     recipe_index : self.recipe_index, deploy : self.deploy,
[INFO] [stdout]                     process_token : self.process_token,
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'context >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: assembler :: AssemblerStateSeed <
[INFO] [stdout]             'context >
[INFO] [stdout]         } impl < 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]         Visitor < 'context >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = AssemblerState; fn
[INFO] [stdout]             expecting(& self, f : & mut std :: fmt :: Formatter) -> std :: fmt
[INFO] [stdout]             :: Result { write! (f, "map") } fn visit_map < A : serde :: de ::
[INFO] [stdout]             MapAccess < '__de >> (self, mut map : A) -> Result < Self ::
[INFO] [stdout]             Value, A :: Error >
[INFO] [stdout]             {
[INFO] [stdout]                 let key = map.next_key :: < String > () ? ; if key.as_deref()
[INFO] [stdout]                 != Some("tp")
[INFO] [stdout]                 { return Err(serde :: de :: Error :: missing_field("tp")); }
[INFO] [stdout]                 #[derive(Deserialize)] enum Tag { Idle, Assembling, } match
[INFO] [stdout]                 map.next_value :: < Tag > () ?
[INFO] [stdout]                 {
[INFO] [stdout]                     Tag :: Idle => Ok(Self :: Value :: Idle), Tag :: Assembling
[INFO] [stdout]                     =>
[INFO] [stdout]                     {
[INFO] [stdout]                         struct __AssemblerState_AssemblingSeed < 'context >
[INFO] [stdout]                         {
[INFO] [stdout]                             seed : crate :: modules :: assembler :: AssemblerStateSeed <
[INFO] [stdout]                             'context >
[INFO] [stdout]                         } impl < 'de, 'context > serde :: de :: DeserializeSeed <
[INFO] [stdout]                         'de > for __AssemblerState_AssemblingSeed < 'context >
[INFO] [stdout]                         {
[INFO] [stdout]                             type Value = __AssemblerState_Assembling; fn deserialize < D
[INFO] [stdout]                             > (self, deserializer : D) -> Result < Self :: Value, D ::
[INFO] [stdout]                             Error > where D : serde :: de :: Deserializer < 'de > ,
[INFO] [stdout]                             {
[INFO] [stdout]                                 const NAMES : & [& str] = &
[INFO] [stdout]                                 ["recipe_index", "deploy", "process_token"]; enum Field
[INFO] [stdout]                                 { RecipeIndex, Deploy, ProcessToken } impl < '__de > serde
[INFO] [stdout]                                 :: de :: Deserialize < '__de > for Field
[INFO] [stdout]                                 {
[INFO] [stdout]                                     fn deserialize < D > (deserializer : D) -> Result < Self, D
[INFO] [stdout]                                     :: Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]                                     {
[INFO] [stdout]                                         struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                                         '__de > for FieldVisitor
[INFO] [stdout]                                         {
[INFO] [stdout]                                             type Value = Field; fn
[INFO] [stdout]                                             expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                                             -> std :: fmt :: Result
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 formatter.write_str("`recipe_index`, `deploy`, `process_token`")
[INFO] [stdout]                                             } fn visit_str < E > (self, value : & str) -> Result <
[INFO] [stdout]                                             Field, E > where E : serde :: de :: Error,
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 match value
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     "recipe_index" => Ok(Field :: RecipeIndex), "deploy" =>
[INFO] [stdout]                                                     Ok(Field :: Deploy), "process_token" =>
[INFO] [stdout]                                                     Ok(Field :: ProcessToken), _ =>
[INFO] [stdout]                                                     Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                                                 }
[INFO] [stdout]                                             }
[INFO] [stdout]                                         } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]                                     }
[INFO] [stdout]                                 } struct Visitor < 'context >
[INFO] [stdout]                                 { seed : __AssemblerState_AssemblingSeed < 'context > } impl
[INFO] [stdout]                                 < 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]                                 Visitor < 'context >
[INFO] [stdout]                                 {
[INFO] [stdout]                                     type Value = __AssemblerState_Assembling; fn
[INFO] [stdout]                                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                                     -> std :: fmt :: Result
[INFO] [stdout]                                     {
[INFO] [stdout]                                         formatter.write_str("struct __AssemblerState_Assembling")
[INFO] [stdout]                                     } fn visit_map < V > (self, mut map : V) -> Result < Self ::
[INFO] [stdout]                                     Value, V :: Error > where V : serde :: de :: MapAccess <
[INFO] [stdout]                                     '__de > ,
[INFO] [stdout]                                     {
[INFO] [stdout]                                         let mut recipe_index : Option < usize > = None; let mut
[INFO] [stdout]                                         deploy : Option < bool > = None; let mut process_token :
[INFO] [stdout]                                         Option < ProcessTokenMut > = None; while let Some(key) =
[INFO] [stdout]                                         map.next_key() ?
[INFO] [stdout]                                         {
[INFO] [stdout]                                             match key
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 Field :: RecipeIndex =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if recipe_index.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error ::
[INFO] [stdout]                                                         duplicate_field("recipe_index"));
[INFO] [stdout]                                                     } recipe_index = Some(map.next_value() ?);
[INFO] [stdout]                                                 }, Field :: Deploy =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if deploy.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error :: duplicate_field("deploy"));
[INFO] [stdout]                                                     } deploy = Some(map.next_value() ?);
[INFO] [stdout]                                                 }, Field :: ProcessToken =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if process_token.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error ::
[INFO] [stdout]                                                         duplicate_field("process_token"));
[INFO] [stdout]                                                     } process_token =
[INFO] [stdout]                                                     Some(map.next_value_seed(self.seed.seed.process_token_seed.clone())
[INFO] [stdout]                                                     ? .into());
[INFO] [stdout]                                                 },
[INFO] [stdout]                                             }
[INFO] [stdout]                                         } let recipe_index : usize =
[INFO] [stdout]                                         recipe_index.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("recipe_index")) ? ; let deploy : bool =
[INFO] [stdout]                                         deploy.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("deploy")) ? ; let process_token :
[INFO] [stdout]                                         ProcessTokenMut =
[INFO] [stdout]                                         process_token.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("process_token")) ? ;
[INFO] [stdout]                                         Ok(__AssemblerState_Assembling
[INFO] [stdout]                                         { recipe_index, deploy, process_token, })
[INFO] [stdout]                                     }
[INFO] [stdout]                                 }
[INFO] [stdout]                                 deserializer.deserialize_struct("__AssemblerState_Assembling",
[INFO] [stdout]                                 NAMES, Visitor { seed : self },)
[INFO] [stdout]                             }
[INFO] [stdout]                         } use serde :: de :: DeserializeSeed as _; let value :
[INFO] [stdout]                         __AssemblerState_Assembling =
[INFO] [stdout]                         __AssemblerState_AssemblingSeed
[INFO] [stdout]                         {
[INFO] [stdout]                             seed : self.seed
[INFO] [stdout]                         }.deserialize(serde :: de :: value :: MapAccessDeserializer
[INFO] [stdout]                         :: new(map)) ? ; Ok(value.into_dst())
[INFO] [stdout]                     },
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_enum("AssemblerState", &
[INFO] [stdout]         ["Idle", "Assembling",], Visitor { seed : self })
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] xxx_field: recipes -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(3753..3757) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(3758..3762) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "recipe_seq_seed", span: #0 bytes(3763..3778) }) }) | None
[INFO] [stdout] xxx_field: state -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(3849..3853) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(3854..3858) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "state_seed", span: #0 bytes(3859..3869) }) }) | None
[INFO] [stdout] xxx_field: storage -> None | None
[INFO] [stdout] xxx_field: operator -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(4023..4027) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(4028..4032) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "person_seed", span: #0 bytes(4033..4044) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v, 'context > serde :: de :: DeserializeSeed < 'de > for crate ::
[INFO] [stdout] modules :: assembler :: AssemblerSeed < 'v, 'context >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Assembler; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = &
[INFO] [stdout]         ["id", "recipes", "state", "storage", "operator"]; enum Field
[INFO] [stdout]         { Id, Recipes, State, Storage, Operator } impl < '__de > serde :: de
[INFO] [stdout]         :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     {
[INFO] [stdout]                         formatter.write_str("`id`, `recipes`, `state`, `storage`, `operator`")
[INFO] [stdout]                     } fn visit_str < E > (self, value : & str) -> Result <
[INFO] [stdout]                     Field, E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "id" => Ok(Field :: Id), "recipes" => Ok(Field :: Recipes),
[INFO] [stdout]                             "state" => Ok(Field :: State), "storage" =>
[INFO] [stdout]                             Ok(Field :: Storage), "operator" => Ok(Field :: Operator), _
[INFO] [stdout]                             => Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v, 'context >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: assembler :: AssemblerSeed < 'v,
[INFO] [stdout]             'context >
[INFO] [stdout]         } impl < 'v, 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]         Visitor < 'v, 'context >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Assembler; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Assembler") }
[INFO] [stdout]             fn visit_map < V > (self, mut map : V) -> Result < Self :: Value,
[INFO] [stdout]             V :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut id : Option < ModuleId > = None; let mut recipes :
[INFO] [stdout]                 Option < Vec < AssemblyRecipe > > = None; let mut state :
[INFO] [stdout]                 Option < AssemblerState > = None; let mut storage : Option <
[INFO] [stdout]                 ItemStorage > = None; let mut operator : Option < Option <
[INFO] [stdout]                 Person > > = None; while let Some(key) = map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Recipes =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if recipes.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("recipes"));
[INFO] [stdout]                             } recipes =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.recipe_seq_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         }, Field :: State =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if state.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("state"));
[INFO] [stdout]                             } state =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.state_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         }, Field :: Storage =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if storage.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("storage"));
[INFO] [stdout]                             } storage = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: Operator =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if operator.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("operator"));
[INFO] [stdout]                             } operator =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.person_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let id : ModuleId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; let recipes : Vec < AssemblyRecipe > =
[INFO] [stdout]                 recipes.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("recipes")) ? ; let state : AssemblerState =
[INFO] [stdout]                 state.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("state")) ? ; let storage : ItemStorage =
[INFO] [stdout]                 storage.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("storage")) ? ; let operator : Option < Person >
[INFO] [stdout]                 =
[INFO] [stdout]                 operator.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("operator")) ? ;
[INFO] [stdout]                 Ok(Assembler { id, recipes, state, storage, operator, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Assembler", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] deserialize_seed_tagged_enum: [
[INFO] [stdout]     Variant {
[INFO] [stdout]         attrs: [],
[INFO] [stdout]         ident: Ident {
[INFO] [stdout]             ident: "Idle",
[INFO] [stdout]             span: #0 bytes(19889..19893),
[INFO] [stdout]         },
[INFO] [stdout]         fields: Fields::Unit,
[INFO] [stdout]         discriminant: None,
[INFO] [stdout]     },
[INFO] [stdout]     Variant {
[INFO] [stdout]         attrs: [
[INFO] [stdout]             Attribute {
[INFO] [stdout]                 pound_token: Pound,
[INFO] [stdout]                 style: AttrStyle::Outer,
[INFO] [stdout]                 bracket_token: Bracket,
[INFO] [stdout]                 meta: Meta::List {
[INFO] [stdout]                     path: Path {
[INFO] [stdout]                         leading_colon: None,
[INFO] [stdout]                         segments: [
[INFO] [stdout]                             PathSegment {
[INFO] [stdout]                                 ident: Ident {
[INFO] [stdout]                                     ident: "deserialize_seed_xxx",
[INFO] [stdout]                                     span: #0 bytes(19901..19921),
[INFO] [stdout]                                 },
[INFO] [stdout]                                 arguments: PathArguments::None,
[INFO] [stdout]                             },
[INFO] [stdout]                         ],
[INFO] [stdout]                     },
[INFO] [stdout]                     delimiter: MacroDelimiter::Paren(
[INFO] [stdout]                         Paren,
[INFO] [stdout]                     ),
[INFO] [stdout]                     tokens: TokenStream [
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "seeds",
[INFO] [stdout]                             span: #0 bytes(19922..19927),
[INFO] [stdout]                         },
[INFO] [stdout]                         Punct {
[INFO] [stdout]                             ch: '=',
[INFO] [stdout]                             spacing: Alone,
[INFO] [stdout]                             span: #0 bytes(19928..19929),
[INFO] [stdout]                         },
[INFO] [stdout]                         Group {
[INFO] [stdout]                             delimiter: Bracket,
[INFO] [stdout]                             stream: TokenStream [
[INFO] [stdout]                                 Group {
[INFO] [stdout]                                     delimiter: Parenthesis,
[INFO] [stdout]                                     stream: TokenStream [
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "process_token",
[INFO] [stdout]                                             span: #0 bytes(19932..19945),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: ',',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(19945..19946),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "self",
[INFO] [stdout]                                             span: #0 bytes(19947..19951),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(19951..19952),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "seed",
[INFO] [stdout]                                             span: #0 bytes(19952..19956),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(19956..19957),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "seed",
[INFO] [stdout]                                             span: #0 bytes(19957..19961),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Punct {
[INFO] [stdout]                                             ch: '.',
[INFO] [stdout]                                             spacing: Alone,
[INFO] [stdout]                                             span: #0 bytes(19961..19962),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         Ident {
[INFO] [stdout]                                             ident: "process_token_seed",
[INFO] [stdout]                                             span: #0 bytes(19962..19980),
[INFO] [stdout]                                         },
[INFO] [stdout]                                     ],
[INFO] [stdout]                                     span: #0 bytes(19931..19981),
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                             span: #0 bytes(19930..19982),
[INFO] [stdout]                         },
[INFO] [stdout]                     ],
[INFO] [stdout]                 },
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]         ident: Ident {
[INFO] [stdout]             ident: "Building",
[INFO] [stdout]             span: #0 bytes(19989..19997),
[INFO] [stdout]         },
[INFO] [stdout]         fields: Fields::Named {
[INFO] [stdout]             brace_token: Brace,
[INFO] [stdout]             named: [
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "modules",
[INFO] [stdout]                             span: #0 bytes(20008..20015),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "BTreeSet",
[INFO] [stdout]                                         span: #0 bytes(20017..20025),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::AngleBracketed {
[INFO] [stdout]                                         colon2_token: None,
[INFO] [stdout]                                         lt_token: Lt,
[INFO] [stdout]                                         args: [
[INFO] [stdout]                                             GenericArgument::Type(
[INFO] [stdout]                                                 Type::Path {
[INFO] [stdout]                                                     qself: None,
[INFO] [stdout]                                                     path: Path {
[INFO] [stdout]                                                         leading_colon: None,
[INFO] [stdout]                                                         segments: [
[INFO] [stdout]                                                             PathSegment {
[INFO] [stdout]                                                                 ident: Ident {
[INFO] [stdout]                                                                     ident: "ModuleId",
[INFO] [stdout]                                                                     span: #0 bytes(20026..20034),
[INFO] [stdout]                                                                 },
[INFO] [stdout]                                                                 arguments: PathArguments::None,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                         ],
[INFO] [stdout]                                                     },
[INFO] [stdout]                                                 },
[INFO] [stdout]                                             ),
[INFO] [stdout]                                         ],
[INFO] [stdout]                                         gt_token: Gt,
[INFO] [stdout]                                     },
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]                 Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     vis: Visibility::Inherited,
[INFO] [stdout]                     mutability: FieldMutability::None,
[INFO] [stdout]                     ident: Some(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "process_token",
[INFO] [stdout]                             span: #0 bytes(20045..20058),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                     colon_token: Some(
[INFO] [stdout]                         Colon,
[INFO] [stdout]                     ),
[INFO] [stdout]                     ty: Type::Path {
[INFO] [stdout]                         qself: None,
[INFO] [stdout]                         path: Path {
[INFO] [stdout]                             leading_colon: None,
[INFO] [stdout]                             segments: [
[INFO] [stdout]                                 PathSegment {
[INFO] [stdout]                                     ident: Ident {
[INFO] [stdout]                                         ident: "ProcessTokenMut",
[INFO] [stdout]                                         span: #0 bytes(20060..20075),
[INFO] [stdout]                                     },
[INFO] [stdout]                                     arguments: PathArguments::None,
[INFO] [stdout]                                 },
[INFO] [stdout]                             ],
[INFO] [stdout]                         },
[INFO] [stdout]                     },
[INFO] [stdout]                 },
[INFO] [stdout]                 Comma,
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]         discriminant: None,
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] variant_attr: DeserializeSeedXXXVariantAttributes {
[INFO] [stdout]     seeds: [
[INFO] [stdout]         (
[INFO] [stdout]             Ident {
[INFO] [stdout]                 ident: "process_token",
[INFO] [stdout]                 span: #0 bytes(19932..19945),
[INFO] [stdout]             },
[INFO] [stdout]             Expr::Field {
[INFO] [stdout]                 attrs: [],
[INFO] [stdout]                 base: Expr::Field {
[INFO] [stdout]                     attrs: [],
[INFO] [stdout]                     base: Expr::Field {
[INFO] [stdout]                         attrs: [],
[INFO] [stdout]                         base: Expr::Path {
[INFO] [stdout]                             attrs: [],
[INFO] [stdout]                             qself: None,
[INFO] [stdout]                             path: Path {
[INFO] [stdout]                                 leading_colon: None,
[INFO] [stdout]                                 segments: [
[INFO] [stdout]                                     PathSegment {
[INFO] [stdout]                                         ident: Ident {
[INFO] [stdout]                                             ident: "self",
[INFO] [stdout]                                             span: #0 bytes(19947..19951),
[INFO] [stdout]                                         },
[INFO] [stdout]                                         arguments: PathArguments::None,
[INFO] [stdout]                                     },
[INFO] [stdout]                                 ],
[INFO] [stdout]                             },
[INFO] [stdout]                         },
[INFO] [stdout]                         dot_token: Dot,
[INFO] [stdout]                         member: Member::Named(
[INFO] [stdout]                             Ident {
[INFO] [stdout]                                 ident: "seed",
[INFO] [stdout]                                 span: #0 bytes(19952..19956),
[INFO] [stdout]                             },
[INFO] [stdout]                         ),
[INFO] [stdout]                     },
[INFO] [stdout]                     dot_token: Dot,
[INFO] [stdout]                     member: Member::Named(
[INFO] [stdout]                         Ident {
[INFO] [stdout]                             ident: "seed",
[INFO] [stdout]                             span: #0 bytes(19957..19961),
[INFO] [stdout]                         },
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 dot_token: Dot,
[INFO] [stdout]                 member: Member::Named(
[INFO] [stdout]                     Ident {
[INFO] [stdout]                         ident: "process_token_seed",
[INFO] [stdout]                         span: #0 bytes(19962..19980),
[INFO] [stdout]                     },
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]         ),
[INFO] [stdout]     ],
[INFO] [stdout] }
[INFO] [stdout] xxx_field: modules -> None | None
[INFO] [stdout] xxx_field: process_token -> None | Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(19947..19951) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(19952..19956) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(19957..19961) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "process_token_seed", span: #0 bytes(19962..19980) }) })
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < '__de, 'context > serde :: de :: DeserializeSeed < '__de > for crate ::
[INFO] [stdout] modules :: dockyard :: DockyardStateSeed < 'context >
[INFO] [stdout] {
[INFO] [stdout]     type Value = DockyardState; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < '__de > ,
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(Deserialize)] struct __DockyardState_Idle; struct
[INFO] [stdout]         __DockyardState_Building
[INFO] [stdout]         {
[INFO] [stdout]             modules : BTreeSet < ModuleId > , process_token : ProcessTokenMut,
[INFO] [stdout]         }; impl __DockyardState_Building
[INFO] [stdout]         {
[INFO] [stdout]             fn into_dst(self) -> DockyardState
[INFO] [stdout]             {
[INFO] [stdout]                 DockyardState :: Building
[INFO] [stdout]                 {
[INFO] [stdout]                     modules : self.modules, process_token : self.process_token,
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'context >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: dockyard :: DockyardStateSeed <
[INFO] [stdout]             'context >
[INFO] [stdout]         } impl < 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]         Visitor < 'context >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = DockyardState; fn
[INFO] [stdout]             expecting(& self, f : & mut std :: fmt :: Formatter) -> std :: fmt
[INFO] [stdout]             :: Result { write! (f, "map") } fn visit_map < A : serde :: de ::
[INFO] [stdout]             MapAccess < '__de >> (self, mut map : A) -> Result < Self ::
[INFO] [stdout]             Value, A :: Error >
[INFO] [stdout]             {
[INFO] [stdout]                 let key = map.next_key :: < String > () ? ; if key.as_deref()
[INFO] [stdout]                 != Some("tp")
[INFO] [stdout]                 { return Err(serde :: de :: Error :: missing_field("tp")); }
[INFO] [stdout]                 #[derive(Deserialize)] enum Tag { Idle, Building, } match
[INFO] [stdout]                 map.next_value :: < Tag > () ?
[INFO] [stdout]                 {
[INFO] [stdout]                     Tag :: Idle => Ok(Self :: Value :: Idle), Tag :: Building =>
[INFO] [stdout]                     {
[INFO] [stdout]                         struct __DockyardState_BuildingSeed < 'context >
[INFO] [stdout]                         {
[INFO] [stdout]                             seed : crate :: modules :: dockyard :: DockyardStateSeed <
[INFO] [stdout]                             'context >
[INFO] [stdout]                         } impl < 'de, 'context > serde :: de :: DeserializeSeed <
[INFO] [stdout]                         'de > for __DockyardState_BuildingSeed < 'context >
[INFO] [stdout]                         {
[INFO] [stdout]                             type Value = __DockyardState_Building; fn deserialize < D >
[INFO] [stdout]                             (self, deserializer : D) -> Result < Self :: Value, D ::
[INFO] [stdout]                             Error > where D : serde :: de :: Deserializer < 'de > ,
[INFO] [stdout]                             {
[INFO] [stdout]                                 const NAMES : & [& str] = & ["modules", "process_token"];
[INFO] [stdout]                                 enum Field { Modules, ProcessToken } impl < '__de > serde ::
[INFO] [stdout]                                 de :: Deserialize < '__de > for Field
[INFO] [stdout]                                 {
[INFO] [stdout]                                     fn deserialize < D > (deserializer : D) -> Result < Self, D
[INFO] [stdout]                                     :: Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]                                     {
[INFO] [stdout]                                         struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                                         '__de > for FieldVisitor
[INFO] [stdout]                                         {
[INFO] [stdout]                                             type Value = Field; fn
[INFO] [stdout]                                             expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                                             -> std :: fmt :: Result
[INFO] [stdout]                                             { formatter.write_str("`modules`, `process_token`") } fn
[INFO] [stdout]                                             visit_str < E > (self, value : & str) -> Result < Field, E >
[INFO] [stdout]                                             where E : serde :: de :: Error,
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 match value
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     "modules" => Ok(Field :: Modules), "process_token" =>
[INFO] [stdout]                                                     Ok(Field :: ProcessToken), _ =>
[INFO] [stdout]                                                     Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                                                 }
[INFO] [stdout]                                             }
[INFO] [stdout]                                         } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]                                     }
[INFO] [stdout]                                 } struct Visitor < 'context >
[INFO] [stdout]                                 { seed : __DockyardState_BuildingSeed < 'context > } impl <
[INFO] [stdout]                                 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]                                 Visitor < 'context >
[INFO] [stdout]                                 {
[INFO] [stdout]                                     type Value = __DockyardState_Building; fn
[INFO] [stdout]                                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                                     -> std :: fmt :: Result
[INFO] [stdout]                                     { formatter.write_str("struct __DockyardState_Building") }
[INFO] [stdout]                                     fn visit_map < V > (self, mut map : V) -> Result < Self ::
[INFO] [stdout]                                     Value, V :: Error > where V : serde :: de :: MapAccess <
[INFO] [stdout]                                     '__de > ,
[INFO] [stdout]                                     {
[INFO] [stdout]                                         let mut modules : Option < BTreeSet < ModuleId > > = None;
[INFO] [stdout]                                         let mut process_token : Option < ProcessTokenMut > = None;
[INFO] [stdout]                                         while let Some(key) = map.next_key() ?
[INFO] [stdout]                                         {
[INFO] [stdout]                                             match key
[INFO] [stdout]                                             {
[INFO] [stdout]                                                 Field :: Modules =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if modules.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error :: duplicate_field("modules"));
[INFO] [stdout]                                                     } modules = Some(map.next_value() ?);
[INFO] [stdout]                                                 }, Field :: ProcessToken =>
[INFO] [stdout]                                                 {
[INFO] [stdout]                                                     if process_token.is_some()
[INFO] [stdout]                                                     {
[INFO] [stdout]                                                         return
[INFO] [stdout]                                                         Err(serde :: de :: Error ::
[INFO] [stdout]                                                         duplicate_field("process_token"));
[INFO] [stdout]                                                     } process_token =
[INFO] [stdout]                                                     Some(map.next_value_seed(self.seed.seed.process_token_seed.clone())
[INFO] [stdout]                                                     ? .into());
[INFO] [stdout]                                                 },
[INFO] [stdout]                                             }
[INFO] [stdout]                                         } let modules : BTreeSet < ModuleId > =
[INFO] [stdout]                                         modules.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("modules")) ? ; let process_token :
[INFO] [stdout]                                         ProcessTokenMut =
[INFO] [stdout]                                         process_token.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                                         missing_field("process_token")) ? ;
[INFO] [stdout]                                         Ok(__DockyardState_Building { modules, process_token, })
[INFO] [stdout]                                     }
[INFO] [stdout]                                 }
[INFO] [stdout]                                 deserializer.deserialize_struct("__DockyardState_Building",
[INFO] [stdout]                                 NAMES, Visitor { seed : self },)
[INFO] [stdout]                             }
[INFO] [stdout]                         } use serde :: de :: DeserializeSeed as _; let value :
[INFO] [stdout]                         __DockyardState_Building = __DockyardState_BuildingSeed
[INFO] [stdout]                         {
[INFO] [stdout]                             seed : self.seed
[INFO] [stdout]                         }.deserialize(serde :: de :: value :: MapAccessDeserializer
[INFO] [stdout]                         :: new(map)) ? ; Ok(value.into_dst())
[INFO] [stdout]                     },
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_enum("DockyardState", &
[INFO] [stdout]         ["Idle", "Building",], Visitor { seed : self })
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] xxx_field: state -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(20619..20623) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(20624..20628) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "state_seed", span: #0 bytes(20629..20639) }) }) | None
[INFO] [stdout] xxx_field: module_storage -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(20702..20706) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(20707..20711) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "module_storage_seed", span: #0 bytes(20712..20731) }) }) | None
[INFO] [stdout] xxx_field: docking_clamp -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(20803..20807) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(20808..20812) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "docking_clamp_seed", span: #0 bytes(20813..20831) }) }) | None
[INFO] [stdout] xxx_field: operator -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(20965..20969) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(20970..20974) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "person_seed", span: #0 bytes(20975..20986) }) }) | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v, 'context > serde :: de :: DeserializeSeed < 'de > for crate ::
[INFO] [stdout] modules :: dockyard :: DockyardSeed < 'v, 'context >
[INFO] [stdout] {
[INFO] [stdout]     type Value = Dockyard; fn deserialize < D > (self, deserializer : D) ->
[INFO] [stdout]     Result < Self :: Value, D :: Error > where D : serde :: de :: Deserializer
[INFO] [stdout]     < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = &
[INFO] [stdout]         ["id", "state", "module_storage", "docking_clamp", "operator"]; enum
[INFO] [stdout]         Field { Id, State, ModuleStorage, DockingClamp, Operator } impl <
[INFO] [stdout]         '__de > serde :: de :: Deserialize < '__de > for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     {
[INFO] [stdout]                         formatter.write_str("`id`, `state`, `module_storage`, `docking_clamp`, `operator`")
[INFO] [stdout]                     } fn visit_str < E > (self, value : & str) -> Result <
[INFO] [stdout]                     Field, E > where E : serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "id" => Ok(Field :: Id), "state" => Ok(Field :: State),
[INFO] [stdout]                             "module_storage" => Ok(Field :: ModuleStorage),
[INFO] [stdout]                             "docking_clamp" => Ok(Field :: DockingClamp), "operator" =>
[INFO] [stdout]                             Ok(Field :: Operator), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v, 'context >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: dockyard :: DockyardSeed < 'v, 'context
[INFO] [stdout]             >
[INFO] [stdout]         } impl < 'v, 'context, '__de > serde :: de :: Visitor < '__de > for
[INFO] [stdout]         Visitor < 'v, 'context >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = Dockyard; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result { formatter.write_str("struct Dockyard") } fn
[INFO] [stdout]             visit_map < V > (self, mut map : V) -> Result < Self :: Value, V
[INFO] [stdout]             :: Error > where V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut id : Option < ModuleId > = None; let mut state :
[INFO] [stdout]                 Option < DockyardState > = None; let mut module_storage :
[INFO] [stdout]                 Option < ModuleStorage > = None; let mut docking_clamp :
[INFO] [stdout]                 Option < DockingClamp > = None; let mut operator : Option <
[INFO] [stdout]                 Option < Person > > = None; while let Some(key) =
[INFO] [stdout]                 map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         }, Field :: State =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if state.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("state"));
[INFO] [stdout]                             } state =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.state_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         }, Field :: ModuleStorage =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if module_storage.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error ::
[INFO] [stdout]                                 duplicate_field("module_storage"));
[INFO] [stdout]                             } module_storage =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.module_storage_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         }, Field :: DockingClamp =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if docking_clamp.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error ::
[INFO] [stdout]                                 duplicate_field("docking_clamp"));
[INFO] [stdout]                             } docking_clamp =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.docking_clamp_seed.clone())
[INFO] [stdout]                             ? .into());
[INFO] [stdout]                         }, Field :: Operator =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if operator.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("operator"));
[INFO] [stdout]                             } operator =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.person_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let id : ModuleId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; let state : DockyardState =
[INFO] [stdout]                 state.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("state")) ? ; let module_storage : ModuleStorage
[INFO] [stdout]                 =
[INFO] [stdout]                 module_storage.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("module_storage")) ? ; let docking_clamp :
[INFO] [stdout]                 DockingClamp =
[INFO] [stdout]                 docking_clamp.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("docking_clamp")) ? ; let operator : Option <
[INFO] [stdout]                 Person > =
[INFO] [stdout]                 operator.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("operator")) ? ;
[INFO] [stdout]                 Ok(Dockyard
[INFO] [stdout]                 { id, state, module_storage, docking_clamp, operator, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("Dockyard", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] xxx_field: personnel -> Some(Expr::Field { attrs: [], base: Expr::Field { attrs: [], base: Expr::Path { attrs: [], qself: None, path: Path { leading_colon: None, segments: [PathSegment { ident: Ident { ident: "self", span: #0 bytes(32313..32317) }, arguments: PathArguments::None }] } }, dot_token: Dot, member: Member::Named(Ident { ident: "seed", span: #0 bytes(32318..32322) }) }, dot_token: Dot, member: Member::Named(Ident { ident: "person_seed", span: #0 bytes(32323..32334) }) }) | None
[INFO] [stdout] xxx_field: id -> None | None
[INFO] [stdout] `dyn_serde_macro::DeserializeSeedXXX` macro output: impl < 'de, 'v > serde :: de :: DeserializeSeed < 'de > for crate :: modules
[INFO] [stdout] :: personnel_area :: PersonnelAreaSeed < 'v >
[INFO] [stdout] {
[INFO] [stdout]     type Value = PersonnelArea; fn deserialize < D > (self, deserializer : D)
[INFO] [stdout]     -> Result < Self :: Value, D :: Error > where D : serde :: de ::
[INFO] [stdout]     Deserializer < 'de > ,
[INFO] [stdout]     {
[INFO] [stdout]         const NAMES : & [& str] = & ["personnel", "id"]; enum Field
[INFO] [stdout]         { Personnel, Id } impl < '__de > serde :: de :: Deserialize < '__de >
[INFO] [stdout]         for Field
[INFO] [stdout]         {
[INFO] [stdout]             fn deserialize < D > (deserializer : D) -> Result < Self, D ::
[INFO] [stdout]             Error > where D : serde :: de :: Deserializer < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 struct FieldVisitor; impl < '__de > serde :: de :: Visitor <
[INFO] [stdout]                 '__de > for FieldVisitor
[INFO] [stdout]                 {
[INFO] [stdout]                     type Value = Field; fn
[INFO] [stdout]                     expecting(& self, formatter : & mut std :: fmt :: Formatter)
[INFO] [stdout]                     -> std :: fmt :: Result
[INFO] [stdout]                     { formatter.write_str("`personnel`, `id`") } fn visit_str <
[INFO] [stdout]                     E > (self, value : & str) -> Result < Field, E > where E :
[INFO] [stdout]                     serde :: de :: Error,
[INFO] [stdout]                     {
[INFO] [stdout]                         match value
[INFO] [stdout]                         {
[INFO] [stdout]                             "personnel" => Ok(Field :: Personnel), "id" =>
[INFO] [stdout]                             Ok(Field :: Id), _ =>
[INFO] [stdout]                             Err(serde :: de :: Error :: unknown_field(value, NAMES)),
[INFO] [stdout]                         }
[INFO] [stdout]                     }
[INFO] [stdout]                 } deserializer.deserialize_identifier(FieldVisitor)
[INFO] [stdout]             }
[INFO] [stdout]         } struct Visitor < 'v >
[INFO] [stdout]         {
[INFO] [stdout]             seed : crate :: modules :: personnel_area :: PersonnelAreaSeed <
[INFO] [stdout]             'v >
[INFO] [stdout]         } impl < 'v, '__de > serde :: de :: Visitor < '__de > for Visitor < 'v
[INFO] [stdout]         >
[INFO] [stdout]         {
[INFO] [stdout]             type Value = PersonnelArea; fn
[INFO] [stdout]             expecting(& self, formatter : & mut std :: fmt :: Formatter) ->
[INFO] [stdout]             std :: fmt :: Result
[INFO] [stdout]             { formatter.write_str("struct PersonnelArea") } fn visit_map < V >
[INFO] [stdout]             (self, mut map : V) -> Result < Self :: Value, V :: Error > where
[INFO] [stdout]             V : serde :: de :: MapAccess < '__de > ,
[INFO] [stdout]             {
[INFO] [stdout]                 let mut personnel : Option < Vec < Person > > = None; let mut
[INFO] [stdout]                 id : Option < ModuleId > = None; while let Some(key) =
[INFO] [stdout]                 map.next_key() ?
[INFO] [stdout]                 {
[INFO] [stdout]                     match key
[INFO] [stdout]                     {
[INFO] [stdout]                         Field :: Personnel =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if personnel.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return
[INFO] [stdout]                                 Err(serde :: de :: Error :: duplicate_field("personnel"));
[INFO] [stdout]                             } personnel =
[INFO] [stdout]                             Some(map.next_value_seed(self.seed.person_seed.clone()) ?
[INFO] [stdout]                             .into());
[INFO] [stdout]                         }, Field :: Id =>
[INFO] [stdout]                         {
[INFO] [stdout]                             if id.is_some()
[INFO] [stdout]                             {
[INFO] [stdout]                                 return Err(serde :: de :: Error :: duplicate_field("id"));
[INFO] [stdout]                             } id = Some(map.next_value() ?);
[INFO] [stdout]                         },
[INFO] [stdout]                     }
[INFO] [stdout]                 } let personnel : Vec < Person > =
[INFO] [stdout]                 personnel.ok_or_else(|| serde :: de :: Error ::
[INFO] [stdout]                 missing_field("personnel")) ? ; let id : ModuleId =
[INFO] [stdout]                 id.ok_or_else(|| serde :: de :: Error :: missing_field("id"))
[INFO] [stdout]                 ? ; Ok(PersonnelArea { personnel, id, })
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]         deserializer.deserialize_struct("PersonnelArea", NAMES, Visitor
[INFO] [stdout]         { seed : self },)
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] warning: type `__AssemblerState_Idle` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/assembler.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum AssemblerState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `AssemblerStateIdle`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__AssemblerState_Assembling` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/assembler.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum AssemblerState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `AssemblerStateAssembling`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__AssemblerState_AssemblingSeed` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/assembler.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum AssemblerState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `AssemblerStateAssemblingSeed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__DockyardState_Idle` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/dockyard.rs:31:6
[INFO] [stdout]    |
[INFO] [stdout] 31 | enum DockyardState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DockyardStateIdle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__DockyardState_Building` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/dockyard.rs:31:6
[INFO] [stdout]    |
[INFO] [stdout] 31 | enum DockyardState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DockyardStateBuilding`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `__DockyardState_BuildingSeed` should have an upper camel case name
[INFO] [stdout]   --> core/src/modules/dockyard.rs:31:6
[INFO] [stdout]    |
[INFO] [stdout] 31 | enum DockyardState {
[INFO] [stdout]    |      ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DockyardStateBuildingSeed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::CORE_PACKAGE_ID`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::CORE_PACKAGE_ID;
[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: `DockyardDynSeed`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::modules::{CoreModule, DockyardDynSeed, ModuleVisitor, ModuleVisitorMut};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModuleStorageSeed`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:4:122
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...ModuleCapability, ModuleConsole, ModuleId, ModuleStorage, ModuleStorageSeed, PackageId, ProcessTokenContext, TradingConsole};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dudes_in_space_api::utils::tagged_option::TaggedOptionSeed`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use dudes_in_space_api::utils::tagged_option::TaggedOptionSeed;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DockingClampSeed`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:8:48
[INFO] [stdout]   |
[INFO] [stdout] 8 | use dudes_in_space_api::vessel::{DockingClamp, DockingClampSeed, VesselModuleInterface};
[INFO] [stdout]   |                                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]   --> core/src/modules/personnel_area.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `from_intermediate`
[INFO] [stdout]   --> core/src/modules/personnel_area.rs:15:40
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde_intermediate::{Intermediate, from_intermediate, to_intermediate};
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `from_intermediate_seed`
[INFO] [stdout]  --> core/src/modules/shuttle.rs:7:72
[INFO] [stdout]   |
[INFO] [stdout] 7 |     DynDeserializeSeed, DynDeserializeSeedVault, DynSerialize, TypeId, from_intermediate_seed,
[INFO] [stdout]   |                                                                        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]   --> core/src/modules/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use personnel_area::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]   --> core/src/modules/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use personnel_area::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]   --> core/src/modules/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use shuttle::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]   --> core/src/modules/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use shuttle::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use build_vessel_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use build_vessel_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> core/src/objectives/crafting/craft_modules_objective.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::{BTreeSet, VecDeque};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use craft_modules_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use craft_modules_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefMut`
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::cell::RefMut;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use craft_vessel_from_scratch_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use craft_vessel_from_scratch_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `craft_vessel_from_scratch_objective::*`
[INFO] [stdout]  --> core/src/objectives/crafting/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use craft_vessel_from_scratch_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use mine_asteroids_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use mine_asteroids_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use scavenge_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use scavenge_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use gather_research_data::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/gathering/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use gather_research_data::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PersonId`
[INFO] [stdout]  --> core/src/objectives/trading/buy_goods_objective.rs:3:62
[INFO] [stdout]   |
[INFO] [stdout] 3 | use dudes_in_space_api::person::{Objective, ObjectiveStatus, PersonId, PersonLogger};
[INFO] [stdout]   |                                                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use buy_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use buy_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `buy_goods_objective::*`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub use buy_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PersonId`
[INFO] [stdout]  --> core/src/objectives/trading/sell_goods_objective.rs:3:62
[INFO] [stdout]   |
[INFO] [stdout] 3 | use dudes_in_space_api::person::{Objective, ObjectiveStatus, PersonId, PersonLogger};
[INFO] [stdout]   |                                                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use sell_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use sell_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sell_goods_objective::*`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use sell_goods_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use trade_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] note: the most public imported item is `pub(crate)`
[INFO] [stdout]  --> core/src/objectives/trading/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use trade_objective::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   = help: reduce the glob import's visibility or increase visibility of imported items
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModuleConsole`
[INFO] [stdout]  --> core/src/modules/shuttle.rs:2:60
[INFO] [stdout]   |
[INFO] [stdout] 2 | use dudes_in_space_api::module::{Module, ModuleCapability, ModuleConsole, ModuleId, ModuleStorage, ModuleTypeId, PackageId, ProcessTokenC...
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModuleConsole`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:4:82
[INFO] [stdout]   |
[INFO] [stdout] 4 | use dudes_in_space_api::module::{DefaultModuleConsole, Module, ModuleCapability, ModuleConsole, ModuleId, ModuleStorage, ModuleStorageSee...
[INFO] [stdout]   |                                                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token`
[INFO] [stdout]    --> core/src/modules/assembler.rs:314:25
[INFO] [stdout]     |
[INFO] [stdout] 314 |                         process_token,
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ help: try ignoring the field: `process_token: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token`
[INFO] [stdout]    --> core/src/modules/dockyard.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 process_token,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: try ignoring the field: `process_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `recipe`
[INFO] [stdout]    --> core/src/modules/dockyard.rs:394:22
[INFO] [stdout]     |
[INFO] [stdout] 394 |     fn create(&self, recipe: &InputRecipe) -> Box<dyn Module> {
[INFO] [stdout]     |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_recipe`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vault`
[INFO] [stdout]    --> core/src/modules/dockyard.rs:450:9
[INFO] [stdout]     |
[INFO] [stdout] 450 |         this_vault: &DynDeserializeSeedVault<dyn ModuleFactory>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vault`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModuleConsole`
[INFO] [stdout]  --> core/src/modules/shuttle.rs:2:60
[INFO] [stdout]   |
[INFO] [stdout] 2 | use dudes_in_space_api::module::{Module, ModuleCapability, ModuleConsole, ModuleId, ModuleStorage, ModuleTypeId, PackageId, ProcessTokenC...
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModuleConsole`
[INFO] [stdout]  --> core/src/modules/personnel_area.rs:4:82
[INFO] [stdout]   |
[INFO] [stdout] 4 | use dudes_in_space_api::module::{DefaultModuleConsole, Module, ModuleCapability, ModuleConsole, ModuleId, ModuleStorage, ModuleStorageSee...
[INFO] [stdout]   |                                                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person`
[INFO] [stdout]    --> core/src/modules/personnel_area.rs:114:33
[INFO] [stdout]     |
[INFO] [stdout] 114 |     fn insert_person(&mut self, person: Person) -> bool {
[INFO] [stdout]     |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_person`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vault`
[INFO] [stdout]    --> core/src/modules/personnel_area.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         this_vault: &DynDeserializeSeedVault<dyn Module>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vault`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |         v: &dyn VesselModuleInterface,
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `decider_vault`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |         decider_vault: &ObjectiveDeciderVault,
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_decider_vault`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         logger: &mut dyn Logger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:73:34
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn extract_person(&mut self, id: PersonId) -> Option<Person> {
[INFO] [stdout]    |                                  ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:77:33
[INFO] [stdout]    |
[INFO] [stdout] 77 |     fn insert_person(&mut self, person: Person) -> bool {
[INFO] [stdout]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_person`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:85:31
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn contains_person(&self, id: PersonId) -> bool {
[INFO] [stdout]    |                               ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vault`
[INFO] [stdout]    --> core/src/modules/shuttle.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 159 |         this_vault: &DynDeserializeSeedVault<dyn ModuleFactory>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vault`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> core/src/objectives/crafting/build_vessel_objective.rs:107:21
[INFO] [stdout]     |
[INFO] [stdout] 107 |                 for mut crafting_module in this_vessel.modules_with_cap(ModuleCapability::Dockyard)
[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: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/crafting/build_vessel_objective.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> core/src/objectives/crafting/build_vessel_objective.rs:190:19
[INFO] [stdout]     |
[INFO] [stdout] 190 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token`
[INFO] [stdout]    --> core/src/modules/assembler.rs:314:25
[INFO] [stdout]     |
[INFO] [stdout] 314 |                         process_token,
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ help: try ignoring the field: `process_token: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/crafting/craft_modules_objective.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parsed_assembler`
[INFO] [stdout]    --> core/src/modules/assembler.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let parsed_assembler: Assembler =
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parsed_assembler`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> core/src/objectives/crafting/craft_modules_objective.rs:183:19
[INFO] [stdout]     |
[INFO] [stdout] 183 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         for mut dockyard in dockyards {
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `needed_capabilities`
[INFO] [stdout]    --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:185:17
[INFO] [stdout]     |
[INFO] [stdout] 185 |                 needed_capabilities,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ help: try ignoring the field: `needed_capabilities: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:212:19
[INFO] [stdout]     |
[INFO] [stdout] 212 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person_id`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         person_id: PersonId,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         age: u8,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         gender: Gender,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `passions`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         passions: &[Passion],
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_passions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `morale`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         morale: Morale,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_morale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boldness`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         boldness: Boldness,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boldness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `awareness`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         awareness: Awareness,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_awareness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token`
[INFO] [stdout]    --> core/src/modules/dockyard.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 process_token,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: try ignoring the field: `process_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person_id`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         person_id: PersonId,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         age: u8,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         gender: Gender,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `passions`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         passions: &[Passion],
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_passions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `morale`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         morale: Morale,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_morale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boldness`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         boldness: Boldness,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boldness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `awareness`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         awareness: Awareness,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_awareness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person_id`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         person_id: PersonId,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         age: u8,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         gender: Gender,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `passions`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         passions: &[Passion],
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_passions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `morale`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         morale: Morale,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_morale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boldness`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         boldness: Boldness,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boldness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `awareness`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         awareness: Awareness,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_awareness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `recipe`
[INFO] [stdout]    --> core/src/modules/dockyard.rs:394:22
[INFO] [stdout]     |
[INFO] [stdout] 394 |     fn create(&self, recipe: &InputRecipe) -> Box<dyn Module> {
[INFO] [stdout]     |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_recipe`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vault`
[INFO] [stdout]    --> core/src/modules/dockyard.rs:450:9
[INFO] [stdout]     |
[INFO] [stdout] 450 |         this_vault: &DynDeserializeSeedVault<dyn ModuleFactory>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vault`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking dudes_in_space v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `person`
[INFO] [stdout]    --> core/src/modules/personnel_area.rs:114:33
[INFO] [stdout]     |
[INFO] [stdout] 114 |     fn insert_person(&mut self, person: Person) -> bool {
[INFO] [stdout]     |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_person`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person_id`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         person_id: PersonId,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |         age: u8,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         gender: Gender,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `morale`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |         morale: Morale,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_morale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boldness`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |         boldness: Boldness,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boldness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `awareness`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |         awareness: Awareness,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_awareness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:78:19
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CORE_PACKAGE_ID` is never used
[INFO] [stdout]  --> core/src/lib.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub(crate) const CORE_PACKAGE_ID: &str = "core";
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vault`
[INFO] [stdout]    --> core/src/modules/personnel_area.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         this_vault: &DynDeserializeSeedVault<dyn Module>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vault`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `add_recipe` are never used
[INFO] [stdout]   --> core/src/modules/assembler.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | impl Assembler {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 88 |     pub fn new(recipes: Vec<AssemblyRecipe>) -> Box<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn add_recipe(&mut self, recipe: AssemblyRecipe) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SetRecipe` is never constructed
[INFO] [stdout]    --> core/src/modules/assembler.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 113 | enum AssemblerRequest {
[INFO] [stdout]     |      ---------------- variant in this enum
[INFO] [stdout] 114 |     SetRecipe(usize),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CoreModule` is never used
[INFO] [stdout]  --> core/src/modules/core_module.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub(crate) trait CoreModule: Module {
[INFO] [stdout]   |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ModuleVisitor` is never used
[INFO] [stdout]  --> core/src/modules/core_module.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) trait ModuleVisitor {
[INFO] [stdout]   |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ModuleVisitorMut` is never used
[INFO] [stdout]   --> core/src/modules/core_module.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait ModuleVisitorMut {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `VisitModules` is never used
[INFO] [stdout]   --> core/src/modules/core_module.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub trait VisitModules {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SetRecipe` is never constructed
[INFO] [stdout]    --> core/src/modules/dockyard.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 113 | enum DockyardRequest {
[INFO] [stdout]     |      --------------- variant in this enum
[INFO] [stdout] 114 |     SetRecipe(usize),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/src/modules/personnel_area.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PersonnelArea {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 44 |     pub fn new(personnel: Vec<Person>) -> Box<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BuildVesselObjective` is never used
[INFO] [stdout]   --> core/src/objectives/crafting/build_vessel_objective.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) enum BuildVesselObjective {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `are_module_storages_suitable`, and `find_modules_with_capabilities` are never used
[INFO] [stdout]   --> core/src/objectives/crafting/build_vessel_objective.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl BuildVesselObjective {
[INFO] [stdout]    | ------------------------- associated functions in this implementation
[INFO] [stdout] 31 |     pub(crate) fn new(this_person: PersonId, needed_capabilities: Vec<ModuleCapability>) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     fn are_module_storages_suitable(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn find_modules_with_capabilities(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BuildVesselObjectiveError` is never used
[INFO] [stdout]    --> core/src/objectives/crafting/build_vessel_objective.rs:184:17
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) enum BuildVesselObjectiveError {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CraftModulesObjective` is never used
[INFO] [stdout]   --> core/src/objectives/crafting/craft_modules_objective.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub(crate) enum CraftModulesObjective {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `is_recipe_set_suitable` are never used
[INFO] [stdout]   --> core/src/objectives/crafting/craft_modules_objective.rs:34:19
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl CraftModulesObjective {
[INFO] [stdout]    | -------------------------- associated functions in this implementation
[INFO] [stdout] 34 |     pub(crate) fn new(this_person: PersonId, needed_capabilities: Vec<ModuleCapability>, deploy: bool) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     fn is_recipe_set_suitable(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CraftModulesObjectiveError` is never used
[INFO] [stdout]    --> core/src/objectives/crafting/craft_modules_objective.rs:178:17
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub(crate) enum CraftModulesObjectiveError {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CraftVesselFromScratchObjective` is never used
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:18:17
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) enum CraftVesselFromScratchObjective {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DockyardRef` is never constructed
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct DockyardRef<'x> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `find_dockyard_with_suitable_modules_in_storage` are never used
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:44:19
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl CraftVesselFromScratchObjective {
[INFO] [stdout]    | ------------------------------------ associated functions in this implementation
[INFO] [stdout] 44 |     pub(crate) fn new(this_person: PersonId, needed_capabilities: Vec<ModuleCapability>) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn find_dockyard_with_suitable_modules_in_storage<'a>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CraftVesselFromScratchObjectiveError` is never used
[INFO] [stdout]    --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:205:17
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub(crate) enum CraftVesselFromScratchObjectiveError {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MineAsteroidsObjective` is never constructed
[INFO] [stdout]  --> core/src/objectives/gathering/mine_asteroids_objective.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) struct MineAsteroidsObjective {}
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MineAsteroidsObjectiveError` is never used
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum MineAsteroidsObjectiveError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScavengeObjective` is never constructed
[INFO] [stdout]  --> core/src/objectives/gathering/scavenge_objective.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) struct ScavengeObjective {}
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScavengeObjectiveError` is never used
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum ScavengeObjectiveError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatherResearchData` is never constructed
[INFO] [stdout]  --> core/src/objectives/gathering/gather_research_data.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) struct GatherResearchData {}
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GatherResearchDataError` is never used
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum GatherResearchDataError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuyGoodsObjective` is never constructed
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) struct BuyGoodsObjective {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl BuyGoodsObjective {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 15 |     pub(crate) fn new(order: WeakBuyOrder) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BuyGoodsObjectiveError` is never used
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:35:17
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) enum BuyGoodsObjectiveError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SellGoodsObjective` is never constructed
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) struct SellGoodsObjective {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl SellGoodsObjective {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 15 |     pub(crate) fn new(order: WeakSellOrder) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SellGoodsObjectiveError` is never used
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:35:17
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) enum SellGoodsObjectiveError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |         v: &dyn VesselModuleInterface,
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `decider_vault`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |         decider_vault: &ObjectiveDeciderVault,
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_decider_vault`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         logger: &mut dyn Logger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:73:34
[INFO] [stdout]    |
[INFO] [stdout] 73 |     fn extract_person(&mut self, id: PersonId) -> Option<Person> {
[INFO] [stdout]    |                                  ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:77:33
[INFO] [stdout]    |
[INFO] [stdout] 77 |     fn insert_person(&mut self, person: Person) -> bool {
[INFO] [stdout]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_person`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> core/src/modules/shuttle.rs:85:31
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn contains_person(&self, id: PersonId) -> bool {
[INFO] [stdout]    |                               ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vault`
[INFO] [stdout]    --> core/src/modules/shuttle.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 159 |         this_vault: &DynDeserializeSeedVault<dyn ModuleFactory>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vault`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> core/src/objectives/crafting/build_vessel_objective.rs:107:21
[INFO] [stdout]     |
[INFO] [stdout] 107 |                 for mut crafting_module in this_vessel.modules_with_cap(ModuleCapability::Dockyard)
[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: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/crafting/build_vessel_objective.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> core/src/objectives/crafting/build_vessel_objective.rs:190:19
[INFO] [stdout]     |
[INFO] [stdout] 190 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DynObjective`
[INFO] [stdout]  --> src/main.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 | use dudes_in_space_api::person::{DynObjective, Logger, PersonId, Severity};
[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 variable: `person0`
[INFO] [stdout]  --> src/env_presets/preset0.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let person0 = Person::random(rng);
[INFO] [stdout]   |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person0`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person1`
[INFO] [stdout]  --> src/env_presets/preset0.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let person1 = Person::random(rng);
[INFO] [stdout]   |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person2`
[INFO] [stdout]  --> src/env_presets/preset0.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     let person2 = Person::random(rng);
[INFO] [stdout]   |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DynObjective`
[INFO] [stdout]  --> src/main.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 | use dudes_in_space_api::person::{DynObjective, Logger, PersonId, Severity};
[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 variable: `person0`
[INFO] [stdout]  --> src/env_presets/preset0.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let person0 = Person::random(rng);
[INFO] [stdout]   |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person0`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person1`
[INFO] [stdout]  --> src/env_presets/preset0.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let person1 = Person::random(rng);
[INFO] [stdout]   |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person2`
[INFO] [stdout]  --> src/env_presets/preset0.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     let person2 = Person::random(rng);
[INFO] [stdout]   |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/crafting/craft_modules_objective.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> core/src/objectives/crafting/craft_modules_objective.rs:183:19
[INFO] [stdout]     |
[INFO] [stdout] 183 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         for mut dockyard in dockyards {
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `needed_capabilities`
[INFO] [stdout]    --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:185:17
[INFO] [stdout]     |
[INFO] [stdout] 185 |                 needed_capabilities,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ help: try ignoring the field: `needed_capabilities: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:212:19
[INFO] [stdout]     |
[INFO] [stdout] 212 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person_id`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         person_id: PersonId,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         age: u8,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         gender: Gender,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `passions`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         passions: &[Passion],
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_passions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `morale`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         morale: Morale,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_morale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boldness`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         boldness: Boldness,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boldness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `awareness`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         awareness: Awareness,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_awareness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person_id`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         person_id: PersonId,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         age: u8,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         gender: Gender,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `passions`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         passions: &[Passion],
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_passions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `morale`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         morale: Morale,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_morale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boldness`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         boldness: Boldness,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boldness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `awareness`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         awareness: Awareness,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_awareness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person_id`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         person_id: PersonId,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         age: u8,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         gender: Gender,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `passions`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         passions: &[Passion],
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_passions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `morale`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         morale: Morale,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_morale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boldness`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         boldness: Boldness,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boldness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `awareness`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         awareness: Awareness,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_awareness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_module`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |         this_module: &mut dyn ModuleConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_module`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this_vessel`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         this_vessel: &dyn VesselConsole,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_this_vessel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `process_token_context`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         process_token_context: &ProcessTokenContext,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_process_token_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logger`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         logger: PersonLogger,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_logger`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `person_id`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         person_id: PersonId,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_person_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `age`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |         age: u8,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_age`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gender`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         gender: Gender,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_gender`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `morale`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |         morale: Morale,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_morale`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boldness`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |         boldness: Boldness,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boldness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `awareness`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |         awareness: Awareness,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_awareness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> core/src/objectives/trading/trade_objective.rs:78:19
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CORE_PACKAGE_ID` is never used
[INFO] [stdout]  --> core/src/lib.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub(crate) const CORE_PACKAGE_ID: &str = "core";
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_recipe` is never used
[INFO] [stdout]   --> core/src/modules/assembler.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | impl Assembler {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn add_recipe(&mut self, recipe: AssemblyRecipe) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SetRecipe` is never constructed
[INFO] [stdout]    --> core/src/modules/assembler.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 113 | enum AssemblerRequest {
[INFO] [stdout]     |      ---------------- variant in this enum
[INFO] [stdout] 114 |     SetRecipe(usize),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CoreModule` is never used
[INFO] [stdout]  --> core/src/modules/core_module.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub(crate) trait CoreModule: Module {
[INFO] [stdout]   |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ModuleVisitor` is never used
[INFO] [stdout]  --> core/src/modules/core_module.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) trait ModuleVisitor {
[INFO] [stdout]   |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ModuleVisitorMut` is never used
[INFO] [stdout]   --> core/src/modules/core_module.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait ModuleVisitorMut {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `VisitModules` is never used
[INFO] [stdout]   --> core/src/modules/core_module.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub trait VisitModules {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SetRecipe` is never constructed
[INFO] [stdout]    --> core/src/modules/dockyard.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 113 | enum DockyardRequest {
[INFO] [stdout]     |      --------------- variant in this enum
[INFO] [stdout] 114 |     SetRecipe(usize),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/src/modules/personnel_area.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PersonnelArea {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 44 |     pub fn new(personnel: Vec<Person>) -> Box<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BuildVesselObjective` is never used
[INFO] [stdout]   --> core/src/objectives/crafting/build_vessel_objective.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) enum BuildVesselObjective {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `are_module_storages_suitable`, and `find_modules_with_capabilities` are never used
[INFO] [stdout]   --> core/src/objectives/crafting/build_vessel_objective.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl BuildVesselObjective {
[INFO] [stdout]    | ------------------------- associated functions in this implementation
[INFO] [stdout] 31 |     pub(crate) fn new(this_person: PersonId, needed_capabilities: Vec<ModuleCapability>) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     fn are_module_storages_suitable(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn find_modules_with_capabilities(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BuildVesselObjectiveError` is never used
[INFO] [stdout]    --> core/src/objectives/crafting/build_vessel_objective.rs:184:17
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) enum BuildVesselObjectiveError {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CraftModulesObjective` is never used
[INFO] [stdout]   --> core/src/objectives/crafting/craft_modules_objective.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub(crate) enum CraftModulesObjective {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `is_recipe_set_suitable` are never used
[INFO] [stdout]   --> core/src/objectives/crafting/craft_modules_objective.rs:34:19
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl CraftModulesObjective {
[INFO] [stdout]    | -------------------------- associated functions in this implementation
[INFO] [stdout] 34 |     pub(crate) fn new(this_person: PersonId, needed_capabilities: Vec<ModuleCapability>, deploy: bool) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     fn is_recipe_set_suitable(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CraftModulesObjectiveError` is never used
[INFO] [stdout]    --> core/src/objectives/crafting/craft_modules_objective.rs:178:17
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub(crate) enum CraftModulesObjectiveError {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CraftVesselFromScratchObjective` is never used
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:18:17
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) enum CraftVesselFromScratchObjective {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DockyardRef` is never constructed
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct DockyardRef<'x> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `find_dockyard_with_suitable_modules_in_storage` are never used
[INFO] [stdout]   --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:44:19
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl CraftVesselFromScratchObjective {
[INFO] [stdout]    | ------------------------------------ associated functions in this implementation
[INFO] [stdout] 44 |     pub(crate) fn new(this_person: PersonId, needed_capabilities: Vec<ModuleCapability>) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn find_dockyard_with_suitable_modules_in_storage<'a>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CraftVesselFromScratchObjectiveError` is never used
[INFO] [stdout]    --> core/src/objectives/crafting/craft_vessel_from_scratch_objective.rs:205:17
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub(crate) enum CraftVesselFromScratchObjectiveError {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MineAsteroidsObjective` is never constructed
[INFO] [stdout]  --> core/src/objectives/gathering/mine_asteroids_objective.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) struct MineAsteroidsObjective {}
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MineAsteroidsObjectiveError` is never used
[INFO] [stdout]   --> core/src/objectives/gathering/mine_asteroids_objective.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum MineAsteroidsObjectiveError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScavengeObjective` is never constructed
[INFO] [stdout]  --> core/src/objectives/gathering/scavenge_objective.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) struct ScavengeObjective {}
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScavengeObjectiveError` is never used
[INFO] [stdout]   --> core/src/objectives/gathering/scavenge_objective.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum ScavengeObjectiveError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GatherResearchData` is never constructed
[INFO] [stdout]  --> core/src/objectives/gathering/gather_research_data.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) struct GatherResearchData {}
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GatherResearchDataError` is never used
[INFO] [stdout]   --> core/src/objectives/gathering/gather_research_data.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) enum GatherResearchDataError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuyGoodsObjective` is never constructed
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) struct BuyGoodsObjective {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl BuyGoodsObjective {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 15 |     pub(crate) fn new(order: WeakBuyOrder) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BuyGoodsObjectiveError` is never used
[INFO] [stdout]   --> core/src/objectives/trading/buy_goods_objective.rs:35:17
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) enum BuyGoodsObjectiveError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SellGoodsObjective` is never constructed
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) struct SellGoodsObjective {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl SellGoodsObjective {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 15 |     pub(crate) fn new(order: WeakSellOrder) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SellGoodsObjectiveError` is never used
[INFO] [stdout]   --> core/src/objectives/trading/sell_goods_objective.rs:35:17
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) enum SellGoodsObjectiveError {}
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.31s
[INFO] running `Command { std: "docker" "inspect" "321c7c1f77a46e258f7a0a76f3053ba8b44632e9cb379cc296dcad51b7de352b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "321c7c1f77a46e258f7a0a76f3053ba8b44632e9cb379cc296dcad51b7de352b", kill_on_drop: false }`
[INFO] [stdout] 321c7c1f77a46e258f7a0a76f3053ba8b44632e9cb379cc296dcad51b7de352b
