[INFO] cloning repository https://github.com/takethathe/slimbot
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/takethathe/slimbot" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftakethathe%2Fslimbot", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftakethathe%2Fslimbot'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a59c5b8f1ab339a65097ac84e421b5c1de84a4c3
[INFO] checking takethathe/slimbot against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftakethathe%2Fslimbot" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/takethathe/slimbot
[INFO] finished tweaking git repo https://github.com/takethathe/slimbot
[INFO] tweaked toml for git repo https://github.com/takethathe/slimbot written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/takethathe/slimbot on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/takethathe/slimbot 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" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42
[INFO] running `Command { std: "docker" "start" "b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.53
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]    Compiling phf_shared v0.13.1
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking tokio v1.52.1
[INFO] [stderr]    Compiling phf_generator v0.13.1
[INFO] [stderr]    Compiling phf_codegen v0.13.1
[INFO] [stderr]    Compiling phf_macros v0.13.1
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]    Compiling string_cache_codegen v0.6.1
[INFO] [stderr]     Checking phf v0.13.1
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]     Checking siphasher v0.3.11
[INFO] [stderr]     Checking phf_shared v0.10.0
[INFO] [stderr]    Compiling web_atoms v0.2.5
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking phf v0.10.1
[INFO] [stderr]     Checking string_cache v0.9.0
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking openssl v0.10.78
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]     Checking string_cache v0.8.9
[INFO] [stderr]    Compiling selectors v0.33.0
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking opentelemetry v0.32.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking rand v0.9.5
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]    Compiling prost-derive v0.14.4
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking native-tls v0.2.18
[INFO] [stderr]     Checking markup5ever v0.36.1
[INFO] [stderr]     Checking cssparser v0.36.0
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling phf_generator v0.10.0
[INFO] [stderr]    Compiling phf_codegen v0.10.0
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling html5ever v0.26.0
[INFO] [stderr]    Compiling markup5ever v0.11.0
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]    Compiling selectors v0.25.0
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]     Checking cssparser v0.31.2
[INFO] [stderr]     Checking servo_arc v0.3.0
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]     Checking rustc-hash v2.1.3
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]     Checking prost v0.14.4
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking reqwest v0.13.4
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking html5ever v0.36.1
[INFO] [stderr]     Checking opentelemetry_sdk v0.32.1
[INFO] [stderr]     Checking foldhash v0.2.0
[INFO] [stderr]     Checking ego-tree v0.6.3
[INFO] [stderr]     Checking inotify v0.9.6
[INFO] [stderr]     Checking scraper v0.18.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking dom_query v0.24.0
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking opentelemetry-http v0.32.0
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking filetime v0.2.28
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]    Compiling slimbot v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking notify v6.1.1
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking quick_html2md v0.2.1
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking cron v0.12.1
[INFO] [stderr]     Checking uuid v1.23.1
[INFO] [stderr]     Checking regex v1.12.4
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking readability-rust v0.1.0
[INFO] [stderr]     Checking opentelemetry-proto v0.32.0
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking opentelemetry-otlp v0.32.0
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/config_macro.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 103 | / macro_rules! _clamp_gen {
[INFO] [stdout] 104 | |     // range: numeric clamp
[INFO] [stdout] 105 | |     ($self:expr, $fty:ty, $def:expr, range($min:tt, $max:tt)) => {
[INFO] [stdout] 106 | |         $self = $self.clamp($min as _, $max as _);
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |             $self = $def.into();
[INFO] [stdout]     | |                     ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 134 | |     ($self:expr, $fty:ty, $def:expr, secret) => {};
[INFO] [stdout] 135 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::_clamp_gen` which comes from the expansion of the macro `define_config`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/config_defs.rs:15:1
[INFO] [stdout]     |
[INFO] [stdout]  15 | / define_config! {
[INFO] [stdout]  16 | |     "provider" => ProviderConfig {
[INFO] [stdout]  17 | |         r#type: String = "openai".to_string(), allowed(["openai", "anthropic", "custom"]), desc: "Provider type identifier",
[INFO] [stdout]  18 | |         api_url: String = "".to_string(), str_max(512), desc: "Full API endpoint URL",
[INFO] [stdout] ...   |
[INFO] [stdout]  27 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<std::string::String as Into<std::string::String>::into(val) to avoid triggering this lint
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/config_macro.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 103 | / macro_rules! _clamp_gen {
[INFO] [stdout] 104 | |     // range: numeric clamp
[INFO] [stdout] 105 | |     ($self:expr, $fty:ty, $def:expr, range($min:tt, $max:tt)) => {
[INFO] [stdout] 106 | |         $self = $self.clamp($min as _, $max as _);
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |             $self = $def.into();
[INFO] [stdout]     | |                     ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 134 | |     ($self:expr, $fty:ty, $def:expr, secret) => {};
[INFO] [stdout] 135 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::_clamp_gen` which comes from the expansion of the macro `define_config`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/config_defs.rs:37:1
[INFO] [stdout]     |
[INFO] [stdout]  37 | / define_config! {
[INFO] [stdout]  38 | |     "tracing.backends" => TraceBackendEntry {
[INFO] [stdout]  39 | |         r#type: String = "file".to_string(), allowed(["file", "otel"]), desc: "Backend type (file | otel)",
[INFO] [stdout]  40 | |         enabled: bool = true, none, desc: "Per-backend enable switch",
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<std::string::String as Into<std::string::String>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/config_macro.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 103 | / macro_rules! _clamp_gen {
[INFO] [stdout] 104 | |     // range: numeric clamp
[INFO] [stdout] 105 | |     ($self:expr, $fty:ty, $def:expr, range($min:tt, $max:tt)) => {
[INFO] [stdout] 106 | |         $self = $self.clamp($min as _, $max as _);
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |             $self = $def.into();
[INFO] [stdout]     | |                     ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 134 | |     ($self:expr, $fty:ty, $def:expr, secret) => {};
[INFO] [stdout] 135 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::_clamp_gen` which comes from the expansion of the macro `define_config`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/config_defs.rs:93:1
[INFO] [stdout]     |
[INFO] [stdout]  93 | / define_config! {
[INFO] [stdout]  94 | |     "memory" => MemoryConfig {
[INFO] [stdout]  95 | |         backend: String = "markdown".to_string(), allowed(["markdown"]), desc: "Memory backend type (markdown | future: sqlite)",
[INFO] [stdout]  96 | |     }
[INFO] [stdout]  97 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<std::string::String as Into<std::string::String>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `slimbot` (lib) due to 3 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/config_macro.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 103 | / macro_rules! _clamp_gen {
[INFO] [stdout] 104 | |     // range: numeric clamp
[INFO] [stdout] 105 | |     ($self:expr, $fty:ty, $def:expr, range($min:tt, $max:tt)) => {
[INFO] [stdout] 106 | |         $self = $self.clamp($min as _, $max as _);
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |             $self = $def.into();
[INFO] [stdout]     | |                     ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 134 | |     ($self:expr, $fty:ty, $def:expr, secret) => {};
[INFO] [stdout] 135 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::_clamp_gen` which comes from the expansion of the macro `define_config`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/config_defs.rs:15:1
[INFO] [stdout]     |
[INFO] [stdout]  15 | / define_config! {
[INFO] [stdout]  16 | |     "provider" => ProviderConfig {
[INFO] [stdout]  17 | |         r#type: String = "openai".to_string(), allowed(["openai", "anthropic", "custom"]), desc: "Provider type identifier",
[INFO] [stdout]  18 | |         api_url: String = "".to_string(), str_max(512), desc: "Full API endpoint URL",
[INFO] [stdout] ...   |
[INFO] [stdout]  27 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<std::string::String as Into<std::string::String>::into(val) to avoid triggering this lint
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/config_macro.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 103 | / macro_rules! _clamp_gen {
[INFO] [stdout] 104 | |     // range: numeric clamp
[INFO] [stdout] 105 | |     ($self:expr, $fty:ty, $def:expr, range($min:tt, $max:tt)) => {
[INFO] [stdout] 106 | |         $self = $self.clamp($min as _, $max as _);
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |             $self = $def.into();
[INFO] [stdout]     | |                     ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 134 | |     ($self:expr, $fty:ty, $def:expr, secret) => {};
[INFO] [stdout] 135 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::_clamp_gen` which comes from the expansion of the macro `define_config`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/config_defs.rs:37:1
[INFO] [stdout]     |
[INFO] [stdout]  37 | / define_config! {
[INFO] [stdout]  38 | |     "tracing.backends" => TraceBackendEntry {
[INFO] [stdout]  39 | |         r#type: String = "file".to_string(), allowed(["file", "otel"]), desc: "Backend type (file | otel)",
[INFO] [stdout]  40 | |         enabled: bool = true, none, desc: "Per-backend enable switch",
[INFO] [stdout] ...   |
[INFO] [stdout]  45 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<std::string::String as Into<std::string::String>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/config_macro.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 103 | / macro_rules! _clamp_gen {
[INFO] [stdout] 104 | |     // range: numeric clamp
[INFO] [stdout] 105 | |     ($self:expr, $fty:ty, $def:expr, range($min:tt, $max:tt)) => {
[INFO] [stdout] 106 | |         $self = $self.clamp($min as _, $max as _);
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |             $self = $def.into();
[INFO] [stdout]     | |                     ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 134 | |     ($self:expr, $fty:ty, $def:expr, secret) => {};
[INFO] [stdout] 135 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::_clamp_gen` which comes from the expansion of the macro `define_config`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/config_defs.rs:93:1
[INFO] [stdout]     |
[INFO] [stdout]  93 | / define_config! {
[INFO] [stdout]  94 | |     "memory" => MemoryConfig {
[INFO] [stdout]  95 | |         backend: String = "markdown".to_string(), allowed(["markdown"]), desc: "Memory backend type (markdown | future: sqlite)",
[INFO] [stdout]  96 | |     }
[INFO] [stdout]  97 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<std::string::String as Into<std::string::String>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/config_macro.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 103 | / macro_rules! _clamp_gen {
[INFO] [stdout] 104 | |     // range: numeric clamp
[INFO] [stdout] 105 | |     ($self:expr, $fty:ty, $def:expr, range($min:tt, $max:tt)) => {
[INFO] [stdout] 106 | |         $self = $self.clamp($min as _, $max as _);
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |             $self = $def.into();
[INFO] [stdout]     | |                     ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 134 | |     ($self:expr, $fty:ty, $def:expr, secret) => {};
[INFO] [stdout] 135 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::_clamp_gen` which comes from the expansion of the macro `define_config`
[INFO] [stdout] ...
[INFO] [stdout] 215 | /     define_config! {
[INFO] [stdout] 216 | |         "test" => TestConfig {
[INFO] [stdout] 217 | |             count: u32 = 10, range(1, 100), desc: "Test count",
[INFO] [stdout] 218 | |             ratio: f32 = 0.5, range(0.0, 1.0), desc: "Test ratio",
[INFO] [stdout] ...   |
[INFO] [stdout] 225 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<std::string::String as Into<std::string::String>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/config_macro.rs:127:25
[INFO] [stdout]     |
[INFO] [stdout] 103 | / macro_rules! _clamp_gen {
[INFO] [stdout] 104 | |     // range: numeric clamp
[INFO] [stdout] 105 | |     ($self:expr, $fty:ty, $def:expr, range($min:tt, $max:tt)) => {
[INFO] [stdout] 106 | |         $self = $self.clamp($min as _, $max as _);
[INFO] [stdout] ...   |
[INFO] [stdout] 127 | |                 $self = $def.into();
[INFO] [stdout]     | |                         ^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 134 | |     ($self:expr, $fty:ty, $def:expr, secret) => {};
[INFO] [stdout] 135 | | }
[INFO] [stdout]     | |_- this error originates in the macro `$crate::_clamp_gen` which comes from the expansion of the macro `define_config`
[INFO] [stdout] ...
[INFO] [stdout] 215 | /     define_config! {
[INFO] [stdout] 216 | |         "test" => TestConfig {
[INFO] [stdout] 217 | |             count: u32 = 10, range(1, 100), desc: "Test count",
[INFO] [stdout] 218 | |             ratio: f32 = 0.5, range(0.0, 1.0), desc: "Test ratio",
[INFO] [stdout] ...   |
[INFO] [stdout] 225 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<std::string::String as Into<std::string::String>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `slimbot` (lib test) due to 5 previous errors
[INFO] running `Command { std: "docker" "inspect" "b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42", kill_on_drop: false }`
[INFO] [stdout] b2bd7e2afe010508148667749b0fc7fc4b204bece56c7658c0142fa7d47ccf42
