[INFO] fetching crate waffles-solana-metrics 1.16.0-alpha.11...
[INFO] testing waffles-solana-metrics-1.16.0-alpha.11 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate waffles-solana-metrics 1.16.0-alpha.11 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate waffles-solana-metrics 1.16.0-alpha.11
[INFO] finished tweaking crates.io crate waffles-solana-metrics 1.16.0-alpha.11
[INFO] tweaked toml for crates.io crate waffles-solana-metrics 1.16.0-alpha.11 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate waffles-solana-metrics 1.16.0-alpha.11 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 327 packages to highest compatible versions
[INFO] [stderr]       Adding array-bytes v1.4.1 (available: v1.6.0)
[INFO] [stderr]       Adding brotli-decompressor v6.0.1 (available: v6.1.0)
[INFO] [stderr]       Adding crypto-common v0.1.6 (available: v0.1.7)
[INFO] [stderr]       Adding env_logger v0.9.3 (available: v0.11.11)
[INFO] [stderr]       Adding gethostname v0.2.3 (available: v1.1.0)
[INFO] [stderr]       Adding psm v0.1.24 (available: v0.1.32)
[INFO] [stderr]       Adding rand v0.7.3 (available: v0.10.3)
[INFO] [stderr]       Adding reqwest v0.11.27 (available: v0.13.5)
[INFO] [stderr]       Adding serial_test v0.9.0 (available: v4.0.1)
[INFO] [stderr]       Adding waffles-solana-frozen-abi v1.16.0-alpha.10 (available: v1.16.0)
[INFO] [stderr]       Adding waffles-solana-frozen-abi-macro v1.16.0-alpha.10 (available: v1.16.0)
[INFO] [stderr]       Adding waffles-solana-logger v1.16.0-alpha.10 (available: v1.16.0)
[INFO] [stderr]       Adding waffles-solana-program v1.16.0-alpha.10 (available: v1.16.0)
[INFO] [stderr]       Adding waffles-solana-sdk v1.16.0-alpha.10 (available: v1.16.0)
[INFO] [stderr]       Adding waffles-solana-sdk-macro v1.16.0-alpha.10 (available: v1.16.0)
[INFO] [stderr]       Adding zeroize v1.3.0 (available: v1.9.1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1
[INFO] running `Command { std: "docker" "start" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1", 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" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling psm v0.1.24
[INFO] [stderr]    Compiling stacker v0.1.25
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling ahash v0.7.8
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling tokio v1.53.3
[INFO] [stderr]    Compiling rand v0.8.8
[INFO] [stderr]    Compiling rand_chacha v0.2.2
[INFO] [stderr]    Compiling pest v2.9.4
[INFO] [stderr]    Compiling rand v0.7.3
[INFO] [stderr]    Compiling digest v0.9.0
[INFO] [stderr]    Compiling libsecp256k1-core v0.2.2
[INFO] [stderr]    Compiling ark-std v0.3.0
[INFO] [stderr]    Compiling waffles-solana-frozen-abi-macro v1.16.0-alpha.10
[INFO] [stderr]    Compiling ark-serialize v0.3.0
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling libsecp256k1-gen-ecmult v0.2.1
[INFO] [stderr]    Compiling libsecp256k1-gen-genmult v0.2.1
[INFO] [stderr]    Compiling serde_json v1.0.154
[INFO] [stderr]    Compiling libsecp256k1 v0.6.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling semver-parser v0.10.3
[INFO] [stderr]    Compiling semver v0.11.0
[INFO] [stderr]    Compiling rustc_version v0.3.3
[INFO] [stderr]    Compiling ark-ff v0.3.0
[INFO] [stderr]    Compiling waffles-solana-frozen-abi v1.16.0-alpha.10
[INFO] [stderr]    Compiling jobserver v0.1.35
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling memoffset v0.8.0
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.14
[INFO] [stderr]    Compiling borsh-schema-derive-internal v0.9.3
[INFO] [stderr]    Compiling borsh-derive-internal v0.9.3
[INFO] [stderr]    Compiling cc v1.8.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling zeroize_derive v1.5.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zeroize v1.3.0
[INFO] [stderr]    Compiling curve25519-dalek v3.2.1
[INFO] [stderr]    Compiling ark-ff-macros v0.3.0
[INFO] [stderr]    Compiling ark-ff-asm v0.3.0
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling tokio-util v0.7.20
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling borsh-derive v0.9.3
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling hashbrown v0.11.2
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling waffles-solana-program v1.16.0-alpha.10
[INFO] [stderr]    Compiling bs58 v0.4.0
[INFO] [stderr]    Compiling waffles-solana-sdk-macro v1.16.0-alpha.10
[INFO] [stderr]    Compiling env_logger v0.9.3
[INFO] [stderr]    Compiling tiny-bip39 v0.8.2
[INFO] [stderr]    Compiling sha3 v0.10.9
[INFO] [stderr]    Compiling compression-codecs v0.4.46
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling borsh v0.9.3
[INFO] [stderr]    Compiling ed25519-dalek v1.0.1
[INFO] [stderr]    Compiling serde_with_macros v2.3.3
[INFO] [stderr]    Compiling num-derive v0.3.3
[INFO] [stderr]    Compiling num_enum_derive v0.5.11
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling ark-ec v0.3.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling waffles-solana-sdk v1.16.0-alpha.10
[INFO] [stderr]    Compiling array-bytes v1.4.1
[INFO] [stderr]    Compiling base64 v0.13.1
[INFO] [stderr]    Compiling ed25519-dalek-bip32 v0.2.0
[INFO] [stderr]    Compiling num_enum v0.5.11
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling serde_with v2.3.3
[INFO] [stderr]    Compiling async-compression v0.4.51
[INFO] [stderr]    Compiling waffles-solana-logger v1.16.0-alpha.10
[INFO] [stderr]    Compiling pbkdf2 v0.11.0
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling ark-bn254 v0.3.0
[INFO] [stderr]    Compiling waffles-solana-metrics v1.16.0-alpha.11 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 3m 09s
[INFO] running `Command { std: "docker" "inspect" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling dashmap v5.5.3
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling serial_test_derive v0.9.0
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling futures-executor v0.3.34
[INFO] [stderr]    Compiling futures v0.3.34
[INFO] [stderr]    Compiling serial_test v0.9.0
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling waffles-solana-metrics v1.16.0-alpha.11 (/opt/rustwide/workdir)
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:227:13
[INFO] [stdout]     |
[INFO] [stdout] 227 |             ENV_LOCK.as_ref().unwrap()
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 220 -         static mut ENV_LOCK: Option<RwLock<()>> = None;
[INFO] [stdout] 220 +         static ENV_LOCK: Option<RwLock<()>> = None;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |             COUNTER.init();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:257:22
[INFO] [stdout]     |
[INFO] [stdout] 257 |         inc_counter!(COUNTER, Level::Info, count);
[INFO] [stdout]     |                      ^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:259:24
[INFO] [stdout]     |
[INFO] [stdout] 259 |             assert_eq!(COUNTER.counts.load(Ordering::Relaxed), 1);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:260:24
[INFO] [stdout]     |
[INFO] [stdout] 260 |             assert_eq!(COUNTER.times.load(Ordering::Relaxed), 1);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:261:24
[INFO] [stdout]     |
[INFO] [stdout] 261 |             assert_eq!(COUNTER.lograte.load(Ordering::Relaxed), 1000);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:262:24
[INFO] [stdout]     |
[INFO] [stdout] 262 |             assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 0);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:263:24
[INFO] [stdout]     |
[INFO] [stdout] 263 |             assert_eq!(COUNTER.name, "test");
[INFO] [stdout]     |                        ^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:266:26
[INFO] [stdout]     |
[INFO] [stdout] 266 |             inc_counter!(COUNTER, Level::Info, 2);
[INFO] [stdout]     |                          ^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:269:24
[INFO] [stdout]     |
[INFO] [stdout] 269 |             assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 397);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:271:22
[INFO] [stdout]     |
[INFO] [stdout] 271 |         inc_counter!(COUNTER, Level::Info, 2);
[INFO] [stdout]     |                      ^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:273:24
[INFO] [stdout]     |
[INFO] [stdout] 273 |             assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 399);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:285:13
[INFO] [stdout]     |
[INFO] [stdout] 285 |             COUNTER.init();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:287:17
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 COUNTER.metricsrate.load(Ordering::Relaxed),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 283 -         static mut COUNTER: Counter = create_counter!("test", 1000, 0);
[INFO] [stdout] 283 +         static COUNTER: Counter = create_counter!("test", 1000, 0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:301:13
[INFO] [stdout]     |
[INFO] [stdout] 301 |             COUNTER.init();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:302:24
[INFO] [stdout]     |
[INFO] [stdout] 302 |             assert_eq!(COUNTER.metricsrate.load(Ordering::Relaxed), 50);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 299 -         static mut COUNTER: Counter = create_counter!("test", 1000, 0);
[INFO] [stdout] 299 +         static COUNTER: Counter = create_counter!("test", 1000, 0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:85:21
[INFO] [stdout]     |
[INFO] [stdout]  77 | / macro_rules! inc_new_counter {
[INFO] [stdout]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stdout]  79 | |         if log_enabled!($level) {
[INFO] [stdout]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stdout] ...   |
[INFO] [stdout]  85 | |                     INC_NEW_COUNTER.init();
[INFO] [stdout]     | |                     ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout] ...   |
[INFO] [stdout]  90 | |     }};
[INFO] [stdout]  91 | | }
[INFO] [stdout]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stdout] ...
[INFO] [stdout] 312 |           inc_new_counter_info!("1", 1);
[INFO] [stdout]     |           ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:88:26
[INFO] [stdout]     |
[INFO] [stdout]  77 | / macro_rules! inc_new_counter {
[INFO] [stdout]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stdout]  79 | |         if log_enabled!($level) {
[INFO] [stdout]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stdout] ...   |
[INFO] [stdout]  88 | |             inc_counter!(INC_NEW_COUNTER, $level, $count);
[INFO] [stdout]     | |                          ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]  89 | |         }
[INFO] [stdout]  90 | |     }};
[INFO] [stdout]  91 | | }
[INFO] [stdout]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stdout] ...
[INFO] [stdout] 312 |           inc_new_counter_info!("1", 1);
[INFO] [stdout]     |           ----------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:85:21
[INFO] [stdout]     |
[INFO] [stdout]  77 | / macro_rules! inc_new_counter {
[INFO] [stdout]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stdout]  79 | |         if log_enabled!($level) {
[INFO] [stdout]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stdout] ...   |
[INFO] [stdout]  85 | |                     INC_NEW_COUNTER.init();
[INFO] [stdout]     | |                     ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout] ...   |
[INFO] [stdout]  90 | |     }};
[INFO] [stdout]  91 | | }
[INFO] [stdout]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stdout] ...
[INFO] [stdout] 313 |           inc_new_counter_info!("2", 1, 3);
[INFO] [stdout]     |           -------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:88:26
[INFO] [stdout]     |
[INFO] [stdout]  77 | / macro_rules! inc_new_counter {
[INFO] [stdout]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stdout]  79 | |         if log_enabled!($level) {
[INFO] [stdout]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stdout] ...   |
[INFO] [stdout]  88 | |             inc_counter!(INC_NEW_COUNTER, $level, $count);
[INFO] [stdout]     | |                          ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]  89 | |         }
[INFO] [stdout]  90 | |     }};
[INFO] [stdout]  91 | | }
[INFO] [stdout]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stdout] ...
[INFO] [stdout] 313 |           inc_new_counter_info!("2", 1, 3);
[INFO] [stdout]     |           -------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:85:21
[INFO] [stdout]     |
[INFO] [stdout]  77 | / macro_rules! inc_new_counter {
[INFO] [stdout]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stdout]  79 | |         if log_enabled!($level) {
[INFO] [stdout]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stdout] ...   |
[INFO] [stdout]  85 | |                     INC_NEW_COUNTER.init();
[INFO] [stdout]     | |                     ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout] ...   |
[INFO] [stdout]  90 | |     }};
[INFO] [stdout]  91 | | }
[INFO] [stdout]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stdout] ...
[INFO] [stdout] 314 |           inc_new_counter_info!("3", 1, 2, 1);
[INFO] [stdout]     |           ----------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:88:26
[INFO] [stdout]     |
[INFO] [stdout]  77 | / macro_rules! inc_new_counter {
[INFO] [stdout]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stdout]  79 | |         if log_enabled!($level) {
[INFO] [stdout]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stdout] ...   |
[INFO] [stdout]  88 | |             inc_counter!(INC_NEW_COUNTER, $level, $count);
[INFO] [stdout]     | |                          ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]  89 | |         }
[INFO] [stdout]  90 | |     }};
[INFO] [stdout]  91 | | }
[INFO] [stdout]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stdout] ...
[INFO] [stdout] 314 |           inc_new_counter_info!("3", 1, 2, 1);
[INFO] [stdout]     |           ----------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:331:13
[INFO] [stdout]     |
[INFO] [stdout] 331 |             COUNTER.init();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:332:24
[INFO] [stdout]     |
[INFO] [stdout] 332 |             assert_eq!(COUNTER.lograte.load(Ordering::Relaxed), DEFAULT_LOG_RATE);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 329 -         static mut COUNTER: Counter = create_counter!("test_lograte", 0, 1);
[INFO] [stdout] 329 +         static COUNTER: Counter = create_counter!("test_lograte", 0, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:345:13
[INFO] [stdout]     |
[INFO] [stdout] 345 |             COUNTER.init();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:346:24
[INFO] [stdout]     |
[INFO] [stdout] 346 |             assert_eq!(COUNTER.lograte.load(Ordering::Relaxed), 50);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 342 -         static mut COUNTER: Counter = create_counter!("test_lograte_env", 0, 1);
[INFO] [stdout] 342 +         static COUNTER: Counter = create_counter!("test_lograte_env", 0, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/counter.rs:352:13
[INFO] [stdout]     |
[INFO] [stdout] 352 |             COUNTER2.init();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/counter.rs:353:24
[INFO] [stdout]     |
[INFO] [stdout] 353 |             assert_eq!(COUNTER2.lograte.load(Ordering::Relaxed), DEFAULT_LOG_RATE);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]     |
[INFO] [stdout] 349 -         static mut COUNTER2: Counter = create_counter!("test_lograte_env", 0, 1);
[INFO] [stdout] 349 +         static COUNTER2: Counter = create_counter!("test_lograte_env", 0, 1);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 48.82s
[INFO] running `Command { std: "docker" "inspect" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:227:13
[INFO] [stderr]     |
[INFO] [stderr] 227 |             ENV_LOCK.as_ref().unwrap()
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 220 -         static mut ENV_LOCK: Option<RwLock<()>> = None;
[INFO] [stderr] 220 +         static ENV_LOCK: Option<RwLock<()>> = None;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:254:13
[INFO] [stderr]     |
[INFO] [stderr] 254 |             COUNTER.init();
[INFO] [stderr]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:257:22
[INFO] [stderr]     |
[INFO] [stderr] 257 |         inc_counter!(COUNTER, Level::Info, count);
[INFO] [stderr]     |                      ^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:259:24
[INFO] [stderr]     |
[INFO] [stderr] 259 |             assert_eq!(COUNTER.counts.load(Ordering::Relaxed), 1);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:260:24
[INFO] [stderr]     |
[INFO] [stderr] 260 |             assert_eq!(COUNTER.times.load(Ordering::Relaxed), 1);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:261:24
[INFO] [stderr]     |
[INFO] [stderr] 261 |             assert_eq!(COUNTER.lograte.load(Ordering::Relaxed), 1000);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:262:24
[INFO] [stderr]     |
[INFO] [stderr] 262 |             assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 0);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:263:24
[INFO] [stderr]     |
[INFO] [stderr] 263 |             assert_eq!(COUNTER.name, "test");
[INFO] [stderr]     |                        ^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:266:26
[INFO] [stderr]     |
[INFO] [stderr] 266 |             inc_counter!(COUNTER, Level::Info, 2);
[INFO] [stderr]     |                          ^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:269:24
[INFO] [stderr]     |
[INFO] [stderr] 269 |             assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 397);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:271:22
[INFO] [stderr]     |
[INFO] [stderr] 271 |         inc_counter!(COUNTER, Level::Info, 2);
[INFO] [stderr]     |                      ^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:273:24
[INFO] [stderr]     |
[INFO] [stderr] 273 |             assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 399);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 252 -         static mut COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr] 252 +         static COUNTER: Counter = create_counter!("test", 1000, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:285:13
[INFO] [stderr]     |
[INFO] [stderr] 285 |             COUNTER.init();
[INFO] [stderr]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:287:17
[INFO] [stderr]     |
[INFO] [stderr] 287 |                 COUNTER.metricsrate.load(Ordering::Relaxed),
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 283 -         static mut COUNTER: Counter = create_counter!("test", 1000, 0);
[INFO] [stderr] 283 +         static COUNTER: Counter = create_counter!("test", 1000, 0);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:301:13
[INFO] [stderr]     |
[INFO] [stderr] 301 |             COUNTER.init();
[INFO] [stderr]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:302:24
[INFO] [stderr]     |
[INFO] [stderr] 302 |             assert_eq!(COUNTER.metricsrate.load(Ordering::Relaxed), 50);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 299 -         static mut COUNTER: Counter = create_counter!("test", 1000, 0);
[INFO] [stderr] 299 +         static COUNTER: Counter = create_counter!("test", 1000, 0);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:85:21
[INFO] [stderr]     |
[INFO] [stderr]  77 | / macro_rules! inc_new_counter {
[INFO] [stderr]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stderr]  79 | |         if log_enabled!($level) {
[INFO] [stderr]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stderr] ...   |
[INFO] [stderr]  85 | |                     INC_NEW_COUNTER.init();
[INFO] [stderr]     | |                     ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr] ...   |
[INFO] [stderr]  90 | |     }};
[INFO] [stderr]  91 | | }
[INFO] [stderr]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stderr] ...
[INFO] [stderr] 312 |           inc_new_counter_info!("1", 1);
[INFO] [stderr]     |           ----------------------------- in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:88:26
[INFO] [stderr]     |
[INFO] [stderr]  77 | / macro_rules! inc_new_counter {
[INFO] [stderr]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stderr]  79 | |         if log_enabled!($level) {
[INFO] [stderr]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stderr] ...   |
[INFO] [stderr]  88 | |             inc_counter!(INC_NEW_COUNTER, $level, $count);
[INFO] [stderr]     | |                          ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]  89 | |         }
[INFO] [stderr]  90 | |     }};
[INFO] [stderr]  91 | | }
[INFO] [stderr]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stderr] ...
[INFO] [stderr] 312 |           inc_new_counter_info!("1", 1);
[INFO] [stderr]     |           ----------------------------- in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:85:21
[INFO] [stderr]     |
[INFO] [stderr]  77 | / macro_rules! inc_new_counter {
[INFO] [stderr]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stderr]  79 | |         if log_enabled!($level) {
[INFO] [stderr]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stderr] ...   |
[INFO] [stderr]  85 | |                     INC_NEW_COUNTER.init();
[INFO] [stderr]     | |                     ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr] ...   |
[INFO] [stderr]  90 | |     }};
[INFO] [stderr]  91 | | }
[INFO] [stderr]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stderr] ...
[INFO] [stderr] 313 |           inc_new_counter_info!("2", 1, 3);
[INFO] [stderr]     |           -------------------------------- in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:88:26
[INFO] [stderr]     |
[INFO] [stderr]  77 | / macro_rules! inc_new_counter {
[INFO] [stderr]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stderr]  79 | |         if log_enabled!($level) {
[INFO] [stderr]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stderr] ...   |
[INFO] [stderr]  88 | |             inc_counter!(INC_NEW_COUNTER, $level, $count);
[INFO] [stderr]     | |                          ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]  89 | |         }
[INFO] [stderr]  90 | |     }};
[INFO] [stderr]  91 | | }
[INFO] [stderr]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stderr] ...
[INFO] [stderr] 313 |           inc_new_counter_info!("2", 1, 3);
[INFO] [stderr]     |           -------------------------------- in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:85:21
[INFO] [stderr]     |
[INFO] [stderr]  77 | / macro_rules! inc_new_counter {
[INFO] [stderr]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stderr]  79 | |         if log_enabled!($level) {
[INFO] [stderr]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stderr] ...   |
[INFO] [stderr]  85 | |                     INC_NEW_COUNTER.init();
[INFO] [stderr]     | |                     ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr] ...   |
[INFO] [stderr]  90 | |     }};
[INFO] [stderr]  91 | | }
[INFO] [stderr]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stderr] ...
[INFO] [stderr] 314 |           inc_new_counter_info!("3", 1, 2, 1);
[INFO] [stderr]     |           ----------------------------------- in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:88:26
[INFO] [stderr]     |
[INFO] [stderr]  77 | / macro_rules! inc_new_counter {
[INFO] [stderr]  78 | |     ($name:expr, $count:expr, $level:expr, $lograte:expr, $metricsrate:expr) => {{
[INFO] [stderr]  79 | |         if log_enabled!($level) {
[INFO] [stderr]  80 | |             static mut INC_NEW_COUNTER: $crate::counter::Counter =
[INFO] [stderr] ...   |
[INFO] [stderr]  88 | |             inc_counter!(INC_NEW_COUNTER, $level, $count);
[INFO] [stderr]     | |                          ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]  89 | |         }
[INFO] [stderr]  90 | |     }};
[INFO] [stderr]  91 | | }
[INFO] [stderr]     | |_- this warning originates in the macro `inc_new_counter` which comes from the expansion of the macro `inc_new_counter_info`
[INFO] [stderr] ...
[INFO] [stderr] 314 |           inc_new_counter_info!("3", 1, 2, 1);
[INFO] [stderr]     |           ----------------------------------- in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:331:13
[INFO] [stderr]     |
[INFO] [stderr] 331 |             COUNTER.init();
[INFO] [stderr]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:332:24
[INFO] [stderr]     |
[INFO] [stderr] 332 |             assert_eq!(COUNTER.lograte.load(Ordering::Relaxed), DEFAULT_LOG_RATE);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 329 -         static mut COUNTER: Counter = create_counter!("test_lograte", 0, 1);
[INFO] [stderr] 329 +         static COUNTER: Counter = create_counter!("test_lograte", 0, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:345:13
[INFO] [stderr]     |
[INFO] [stderr] 345 |             COUNTER.init();
[INFO] [stderr]     |             ^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:346:24
[INFO] [stderr]     |
[INFO] [stderr] 346 |             assert_eq!(COUNTER.lograte.load(Ordering::Relaxed), 50);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 342 -         static mut COUNTER: Counter = create_counter!("test_lograte_env", 0, 1);
[INFO] [stderr] 342 +         static COUNTER: Counter = create_counter!("test_lograte_env", 0, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]    --> src/counter.rs:352:13
[INFO] [stderr]     |
[INFO] [stderr] 352 |             COUNTER2.init();
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]    --> src/counter.rs:353:24
[INFO] [stderr]     |
[INFO] [stderr] 353 |             assert_eq!(COUNTER2.lograte.load(Ordering::Relaxed), DEFAULT_LOG_RATE);
[INFO] [stderr]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]     |
[INFO] [stderr]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]     |
[INFO] [stderr] 349 -         static mut COUNTER2: Counter = create_counter!("test_lograte_env", 0, 1);
[INFO] [stderr] 349 +         static COUNTER2: Counter = create_counter!("test_lograte_env", 0, 1);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: `waffles-solana-metrics` (lib test) generated 28 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.38s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/waffles-solana-metrics/2a003834d2b96187/out/solana_metrics-2a003834d2b96187)
[INFO] [stdout] running 18 tests
[INFO] [stdout] test datapoint::test::test_datapoint ... ok
[INFO] [stdout] test datapoint::test::test_datapoint_with_tags ... ok
[INFO] [stdout] test counter::tests::test_inc_new_counter ... ok
[INFO] [stdout] test counter::tests::test_counter ... ok
[INFO] [stdout] test metrics::test::test_live_submit ... ok
[INFO] [stdout] test counter::tests::test_metricsrate ... ok
[INFO] [stdout] test counter::tests::test_lograte ... ok
[INFO] [stdout] test counter::tests::test_metricsrate_env ... ok
[INFO] [stdout] test metrics::test::test_flush_before_drop ... ok
[INFO] [stdout] test counter::tests::test_lograte_env ... ok
[INFO] [stdout] test metrics::test::test_multithread_submit ... ok
[INFO] [stdout] test metrics::test::test_submit ... ok
[INFO] [stdout] test metrics::test::test_submit_counter ... ok
[INFO] [stdout] test metrics::test::test_submit_bucketed_counter ... ok
[INFO] [stdout] test poh_timing_point::test::test_poh_timing_point ... ok
[INFO] [stdout] test metrics::test::test_submit_counter_increment ... ok
[INFO] [stdout] test metrics::test::test_submit_with_delay ... ok
[INFO] [stdout] test metrics::test::test_submit_exceed_max_rate ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests solana_metrics
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1", kill_on_drop: false }`
[INFO] [stdout] 483a157d16468f836236a2eda990e83e97c51e7e683046c9a4b14c394b2034b1
