[INFO] fetching crate devcycle-bucketing-rs 0.2.3...
[INFO] testing devcycle-bucketing-rs-0.2.3 against 1.94.0 for beta-1.95-1
[INFO] extracting crate devcycle-bucketing-rs 0.2.3 into /workspace/builds/worker-4-tc1/source
[INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate devcycle-bucketing-rs 0.2.3
[INFO] finished tweaking crates.io crate devcycle-bucketing-rs 0.2.3
[INFO] tweaked toml for crates.io crate devcycle-bucketing-rs 0.2.3 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate devcycle-bucketing-rs 0.2.3 on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate devcycle-bucketing-rs 0.2.3 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.105
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.105
[INFO] [stderr]   Downloaded anes v0.1.6
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.55
[INFO] [stderr]   Downloaded windows-core v0.62.2
[INFO] [stderr]   Downloaded windows-implement v0.60.2
[INFO] [stderr]   Downloaded iana-time-zone v0.1.64
[INFO] [stderr]   Downloaded windows-strings v0.5.1
[INFO] [stderr]   Downloaded litemap v0.8.1
[INFO] [stderr]   Downloaded crunchy v0.2.4
[INFO] [stderr]   Downloaded is-terminal v0.4.17
[INFO] [stderr]   Downloaded clap_lex v0.7.6
[INFO] [stderr]   Downloaded ciborium-io v0.2.2
[INFO] [stderr]   Downloaded windows-registry v0.6.1
[INFO] [stderr]   Downloaded ciborium-ll v0.2.2
[INFO] [stderr]   Downloaded ciborium v0.2.2
[INFO] [stderr]   Downloaded half v2.7.1
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.27
[INFO] [stderr]   Downloaded chrono v0.4.42
[INFO] [stderr]   Downloaded indexmap v2.12.0
[INFO] [stderr]   Downloaded clap_builder v4.5.52
[INFO] [stderr]   Downloaded hashbrown v0.16.0
[INFO] [stderr]   Downloaded regex v1.12.2
[INFO] [stderr]   Downloaded zerovec v0.11.5
[INFO] [stderr]   Downloaded web-sys v0.3.82
[INFO] [stderr]   Downloaded reqwest v0.12.24
[INFO] [stderr]   Downloaded serde_json v1.0.145
[INFO] [stderr]   Downloaded zerocopy v0.8.27
[INFO] [stderr]   Downloaded openssl v0.10.75
[INFO] [stderr]   Downloaded tokio-util v0.7.17
[INFO] [stderr]   Downloaded iri-string v0.7.9
[INFO] [stderr]   Downloaded icu_properties_data v2.1.1
[INFO] [stderr]   Downloaded regex-syntax v0.8.8
[INFO] [stderr]   Downloaded console_error_panic_hook v0.1.7
[INFO] [stderr]   Downloaded hyper-util v0.1.18
[INFO] [stderr]   Downloaded rustls v0.23.35
[INFO] [stderr]   Downloaded rustix v1.1.2
[INFO] [stderr]   Downloaded mio v1.1.0
[INFO] [stderr]   Downloaded criterion v0.5.1
[INFO] [stderr]   Downloaded rustls-webpki v0.103.8
[INFO] [stderr]   Downloaded icu_collections v2.1.1
[INFO] [stderr]   Downloaded memchr v2.7.6
[INFO] [stderr]   Downloaded rustls-pki-types v1.13.0
[INFO] [stderr]   Downloaded openssl-sys v0.9.111
[INFO] [stderr]   Downloaded icu_normalizer_data v2.1.1
[INFO] [stderr]   Downloaded icu_locale_core v2.1.1
[INFO] [stderr]   Downloaded icu_properties v2.1.1
[INFO] [stderr]   Downloaded regex-automata v0.4.13
[INFO] [stderr]   Downloaded serde-wasm-bindgen v0.6.5
[INFO] [stderr]   Downloaded socket2 v0.6.1
[INFO] [stderr]   Downloaded js-sys v0.3.82
[INFO] [stderr]   Downloaded tokio-rustls v0.26.4
[INFO] [stderr]   Downloaded schannel v0.1.28
[INFO] [stderr]   Downloaded wit-bindgen v0.46.0
[INFO] [stderr]   Downloaded tempfile v3.23.0
[INFO] [stderr]   Downloaded libc v0.2.177
[INFO] [stderr]   Downloaded windows_aarch64_gnullvm v0.53.1
[INFO] [stderr]   Downloaded icu_provider v2.1.1
[INFO] [stderr]   Downloaded windows_aarch64_msvc v0.53.1
[INFO] [stderr]   Downloaded windows_x86_64_msvc v0.53.1
[INFO] [stderr]   Downloaded windows_x86_64_gnullvm v0.53.1
[INFO] [stderr]   Downloaded windows_i686_gnullvm v0.53.1
[INFO] [stderr]   Downloaded tokio v1.48.0
[INFO] [stderr]   Downloaded windows_i686_msvc v0.53.1
[INFO] [stderr]   Downloaded windows_i686_gnu v0.53.1
[INFO] [stderr]   Downloaded windows_x86_64_gnu v0.53.1
[INFO] [stderr]   Downloaded lock_api v0.4.14
[INFO] [stderr]   Downloaded bitflags v2.10.0
[INFO] [stderr]   Downloaded parking_lot_core v0.9.12
[INFO] [stderr]   Downloaded parking_lot v0.12.5
[INFO] [stderr]   Downloaded tokio-macros v2.6.0
[INFO] [stderr]   Downloaded security-framework-sys v2.15.0
[INFO] [stderr]   Downloaded icu_normalizer v2.1.1
[INFO] [stderr]   Downloaded zerotrie v0.2.3
[INFO] [stderr]   Downloaded semver v1.0.27
[INFO] [stderr]   Downloaded anstyle v1.0.13
[INFO] [stderr]   Downloaded criterion-plot v0.5.0
[INFO] [stderr]   Downloaded hostname v0.4.1
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.5
[INFO] [stderr]   Downloaded tinystr v0.8.2
[INFO] [stderr]   Downloaded redox_syscall v0.5.18
[INFO] [stderr]   Downloaded windows-targets v0.53.5
[INFO] [stderr]   Downloaded clap v4.5.52
[INFO] [stderr]   Downloaded murmur3 v0.5.2
[INFO] [stderr]   Downloaded windows-result v0.4.1
[INFO] [stderr]   Downloaded proc-macro2 v1.0.103
[INFO] [stderr]   Downloaded zeroize v1.8.2
[INFO] [stderr]   Downloaded log v0.4.28
[INFO] [stderr]   Downloaded getrandom v0.3.4
[INFO] [stderr]   Downloaded errno v0.3.14
[INFO] [stderr]   Downloaded potential_utf v0.1.4
[INFO] [stderr]   Downloaded writeable v0.6.2
[INFO] [stderr]   Downloaded yoke v0.8.1
[INFO] [stderr]   Downloaded hyper v1.8.1
[INFO] [stderr]   Downloaded wasip2 v1.0.1+wasi-0.2.4
[INFO] [stderr]   Downloaded stable_deref_trait v1.2.1
[INFO] [stderr]   Downloaded yoke-derive v0.8.1
[INFO] [stderr]   Downloaded syn v2.0.110
[INFO] [stderr]   Downloaded windows-interface v0.59.3
[INFO] [stderr]   Downloaded cc v1.2.46
[INFO] [stderr]   Downloaded zerovec-derive v0.11.2
[INFO] [stderr]   Downloaded bytes v1.11.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.105
[INFO] [stderr]   Downloaded unicode-ident v1.0.22
[INFO] [stderr]   Downloaded quote v1.0.42
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.105
[INFO] [stderr]   Downloaded linux-raw-sys v0.11.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fc2a0bc69f5f01727973e36bd68d5071d85c7f0d97143aabc75b01bdb7b2b8c9
[INFO] running `Command { std: "docker" "start" "-a" "fc2a0bc69f5f01727973e36bd68d5071d85c7f0d97143aabc75b01bdb7b2b8c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fc2a0bc69f5f01727973e36bd68d5071d85c7f0d97143aabc75b01bdb7b2b8c9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fc2a0bc69f5f01727973e36bd68d5071d85c7f0d97143aabc75b01bdb7b2b8c9", kill_on_drop: false }`
[INFO] [stdout] fc2a0bc69f5f01727973e36bd68d5071d85c7f0d97143aabc75b01bdb7b2b8c9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ca6f04cc85541cf4a5b83d802d374a6b9d53ec595cc3f972bf2b5bfeb79294cf
[INFO] running `Command { std: "docker" "start" "-a" "ca6f04cc85541cf4a5b83d802d374a6b9d53ec595cc3f972bf2b5bfeb79294cf", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling ryu v1.0.20
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling murmur3 v0.5.2
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling syn v2.0.110
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling hostname v0.4.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling devcycle-bucketing-rs v0.2.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition value: `protobuf`
[INFO] [stdout]   --> src/lib.rs:61:7
[INFO] [stdout]    |
[INFO] [stdout] 61 | #[cfg(feature = "protobuf")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `console_error_panic_hook`, `default`, `libc`, `serde-wasm-bindgen`, `wasm`, `wasm-bindgen`, and `wasm-bindgen-futures`
[INFO] [stdout]    = help: consider adding `protobuf` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bucketing::*`
[INFO] [stdout]   --> src/bucketing/mod.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) use bucketing::*;
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `event::*`
[INFO] [stdout]   --> src/events/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use event::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `filters::*`
[INFO] [stdout]  --> src/segmentation/mod.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) use filters::*;
[INFO] [stdout]   |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `errors::DevCycleError`
[INFO] [stdout]  --> src/util/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use errors::DevCycleError;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:193:51
[INFO] [stdout]     |
[INFO] [stdout] 193 |                     constants::COMPARATOR_EQUAL | "=" => {
[INFO] [stdout]     |                     ---------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     matches all the relevant values
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:199:61
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...                   constants::COMPARATOR_GREATER | ">" => result > 0.0,
[INFO] [stdout]     |                       -----------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:200:67
[INFO] [stdout]     |
[INFO] [stdout] 200 | ...                   constants::COMPARATOR_GREATER_EQUAL | ">=" => result >= 0.0,
[INFO] [stdout]     |                       -----------------------------------   ^^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:201:58
[INFO] [stdout]     |
[INFO] [stdout] 201 | ...                   constants::COMPARATOR_LESS | "<" => result < 0.0,
[INFO] [stdout]     |                       --------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:202:64
[INFO] [stdout]     |
[INFO] [stdout] 202 | ...                   constants::COMPARATOR_LESS_EQUAL | "<=" => result <= 0.0,
[INFO] [stdout]     |                       --------------------------------   ^^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:287:47
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 constants::COMPARATOR_EQUAL | "=" => user_value == filter_value,
[INFO] [stdout]     |                 ---------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:214:11
[INFO] [stdout]     |
[INFO] [stdout] 214 |     match CStr::from_ptr(sdk_key).to_str() {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:206:1
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn parse_sdk_key(sdk_key: *const c_char) -> Result<String, DevCycleFFIErrorCode> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:236:29
[INFO] [stdout]     |
[INFO] [stdout] 236 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:230:1
[INFO] [stdout]     |
[INFO] [stdout] 230 | / pub unsafe extern "C" fn devcycle_init_event_queue(
[INFO] [stdout] 231 | |     sdk_key: *const c_char,
[INFO] [stdout] 232 | |     options: *const CEventQueueOptions,
[INFO] [stdout] 233 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |         (*options).0.clone()
[INFO] [stdout]     |         ^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:293:29
[INFO] [stdout]     |
[INFO] [stdout] 293 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:278:1
[INFO] [stdout]     |
[INFO] [stdout] 278 | / pub unsafe extern "C" fn devcycle_generate_bucketed_config(
[INFO] [stdout] 279 | |     sdk_key: *const c_char,
[INFO] [stdout] 280 | |     user: *const CPopulatedUser,
[INFO] [stdout] 281 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 282 | | ) -> *mut CBucketedUserConfig {
[INFO] [stdout]     | |_____________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:298:26
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let populated_user = (*user).0.clone();
[INFO] [stdout]     |                          ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:304:19
[INFO] [stdout]     |
[INFO] [stdout] 304 |             match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:371:29
[INFO] [stdout]     |
[INFO] [stdout] 371 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:356:1
[INFO] [stdout]     |
[INFO] [stdout] 356 | / pub unsafe extern "C" fn devcycle_generate_bucketed_config_from_user(
[INFO] [stdout] 357 | |     sdk_key: *const c_char,
[INFO] [stdout] 358 | |     user: *const CUser,
[INFO] [stdout] 359 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 360 | | ) -> *mut CBucketedUserConfig {
[INFO] [stdout]     | |_____________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:376:20
[INFO] [stdout]     |
[INFO] [stdout] 376 |     let user_obj = (*user).0.clone();
[INFO] [stdout]     |                    ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:424:29
[INFO] [stdout]     |
[INFO] [stdout] 424 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:410:1
[INFO] [stdout]     |
[INFO] [stdout] 410 | / pub unsafe extern "C" fn devcycle_set_config(
[INFO] [stdout] 411 | |     sdk_key: *const c_char,
[INFO] [stdout] 412 | |     config_json: *const c_char,
[INFO] [stdout] 413 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:429:33
[INFO] [stdout]     |
[INFO] [stdout] 429 |     let config_json_str = match CStr::from_ptr(config_json).to_str() {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:508:29
[INFO] [stdout]     |
[INFO] [stdout] 508 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:494:1
[INFO] [stdout]     |
[INFO] [stdout] 494 | / pub unsafe extern "C" fn devcycle_set_client_custom_data(
[INFO] [stdout] 495 | |     sdk_key: *const c_char,
[INFO] [stdout] 496 | |     custom_data_json: *const c_char,
[INFO] [stdout] 497 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:513:38
[INFO] [stdout]     |
[INFO] [stdout] 513 |     let custom_data_json_str = match CStr::from_ptr(custom_data_json).to_str() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:572:29
[INFO] [stdout]     |
[INFO] [stdout] 572 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:566:1
[INFO] [stdout]     |
[INFO] [stdout] 566 | / pub unsafe extern "C" fn devcycle_set_platform_data(
[INFO] [stdout] 567 | |     sdk_key: *const c_char,
[INFO] [stdout] 568 | |     platform_data_json: *const c_char,
[INFO] [stdout] 569 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:585:40
[INFO] [stdout]     |
[INFO] [stdout] 585 |     let platform_data_json_str = match CStr::from_ptr(platform_data_json).to_str() {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:645:29
[INFO] [stdout]     |
[INFO] [stdout] 645 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:628:1
[INFO] [stdout]     |
[INFO] [stdout] 628 | / pub unsafe extern "C" fn devcycle_init_sdk_key(
[INFO] [stdout] 629 | |     sdk_key: *const c_char,
[INFO] [stdout] 630 | |     config_json: *const c_char,
[INFO] [stdout] 631 | |     event_queue_options: *const CEventQueueOptions,
[INFO] [stdout] 632 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 633 | |     platform_data_json: *const c_char,
[INFO] [stdout] 634 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:650:33
[INFO] [stdout]     |
[INFO] [stdout] 650 |     let config_json_str = match CStr::from_ptr(config_json).to_str() {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:665:15
[INFO] [stdout]     |
[INFO] [stdout] 665 |         match CStr::from_ptr(platform_data_json).to_str() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:714:9
[INFO] [stdout]     |
[INFO] [stdout] 714 |         (*event_queue_options).0.clone()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:722:19
[INFO] [stdout]     |
[INFO] [stdout] 722 |             match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:793:29
[INFO] [stdout]     |
[INFO] [stdout] 793 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:779:1
[INFO] [stdout]     |
[INFO] [stdout] 779 | / pub unsafe extern "C" fn devcycle_variable_for_user(
[INFO] [stdout] 780 | |     sdk_key: *const c_char,
[INFO] [stdout] 781 | |     user: *const CPopulatedUser,
[INFO] [stdout] 782 | |     variable_key: *const c_char,
[INFO] [stdout] 783 | |     variable_type: *const c_char,
[INFO] [stdout] 784 | | ) -> *mut CVariableForUserResult {
[INFO] [stdout]     | |________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:797:34
[INFO] [stdout]     |
[INFO] [stdout] 797 |     let variable_key_str = match CStr::from_ptr(variable_key).to_str() {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:807:35
[INFO] [stdout]     |
[INFO] [stdout] 807 |     let variable_type_str = match CStr::from_ptr(variable_type).to_str() {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:817:26
[INFO] [stdout]     |
[INFO] [stdout] 817 |     let populated_user = (*user).0.clone();
[INFO] [stdout]     |                          ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:859:34
[INFO] [stdout]     |
[INFO] [stdout] 859 |     match serde_json::to_string(&(*result).0.variable_value) {
[INFO] [stdout]     |                                  ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:848:1
[INFO] [stdout]     |
[INFO] [stdout] 848 | / pub unsafe extern "C" fn devcycle_variable_result_to_json(
[INFO] [stdout] 849 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 850 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:897:24
[INFO] [stdout]     |
[INFO] [stdout] 897 |     match CString::new((*result).0.variable_type.clone()) {
[INFO] [stdout]     |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:886:1
[INFO] [stdout]     |
[INFO] [stdout] 886 | / pub unsafe extern "C" fn devcycle_variable_result_get_type(
[INFO] [stdout] 887 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 888 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:926:34
[INFO] [stdout]     |
[INFO] [stdout] 926 |     match serde_json::to_string(&(*config).0) {
[INFO] [stdout]     |                                  ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:915:1
[INFO] [stdout]     |
[INFO] [stdout] 915 | / pub unsafe extern "C" fn devcycle_bucketed_config_to_json(
[INFO] [stdout] 916 | |     config: *const CBucketedUserConfig,
[INFO] [stdout] 917 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:954:17
[INFO] [stdout]     |
[INFO] [stdout] 954 |         let _ = Box::from_raw(result);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:952:1
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub unsafe extern "C" fn devcycle_free_variable_result(result: *mut CVariableForUserResult) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CString::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:962:17
[INFO] [stdout]     |
[INFO] [stdout] 962 |         let _ = CString::from_raw(s);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:960:1
[INFO] [stdout]     |
[INFO] [stdout] 960 | pub unsafe extern "C" fn devcycle_free_string(s: *mut c_char) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:970:17
[INFO] [stdout]     |
[INFO] [stdout] 970 |         let _ = Box::from_raw(config);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:968:1
[INFO] [stdout]     |
[INFO] [stdout] 968 | pub unsafe extern "C" fn devcycle_free_bucketed_config(config: *mut CBucketedUserConfig) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:978:17
[INFO] [stdout]     |
[INFO] [stdout] 978 |         let _ = Box::from_raw(user);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:976:1
[INFO] [stdout]     |
[INFO] [stdout] 976 | pub unsafe extern "C" fn devcycle_free_user(user: *mut CUser) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:986:17
[INFO] [stdout]     |
[INFO] [stdout] 986 |         let _ = Box::from_raw(user);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:984:1
[INFO] [stdout]     |
[INFO] [stdout] 984 | pub unsafe extern "C" fn devcycle_free_populated_user(user: *mut CPopulatedUser) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:994:17
[INFO] [stdout]     |
[INFO] [stdout] 994 |         let _ = Box::from_raw(options);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:992:1
[INFO] [stdout]     |
[INFO] [stdout] 992 | pub unsafe extern "C" fn devcycle_free_event_queue_options(options: *mut CEventQueueOptions) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1009:26
[INFO] [stdout]      |
[INFO] [stdout] 1009 |     let json_str = match CStr::from_ptr(json).to_str() {
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1000:1
[INFO] [stdout]      |
[INFO] [stdout] 1000 | pub unsafe extern "C" fn devcycle_user_from_json(json: *const c_char) -> *mut CUser {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1051:29
[INFO] [stdout]      |
[INFO] [stdout] 1051 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1039:1
[INFO] [stdout]      |
[INFO] [stdout] 1039 | / pub unsafe extern "C" fn devcycle_populate_user(
[INFO] [stdout] 1040 | |     sdk_key: *const c_char,
[INFO] [stdout] 1041 | |     user: *const CUser,
[INFO] [stdout] 1042 | | ) -> *mut CPopulatedUser {
[INFO] [stdout]      | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1055:20
[INFO] [stdout]      |
[INFO] [stdout] 1055 |     let user_obj = (*user).0.clone();
[INFO] [stdout]      |                    ^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1076:26
[INFO] [stdout]      |
[INFO] [stdout] 1076 |     let json_str = match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1064:1
[INFO] [stdout]      |
[INFO] [stdout] 1064 | / pub unsafe extern "C" fn devcycle_populated_user_merge_client_custom_data(
[INFO] [stdout] 1065 | |     populated_user: *mut CPopulatedUser,
[INFO] [stdout] 1066 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 1067 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1099:20
[INFO] [stdout]      |
[INFO] [stdout] 1099 |     let pop = &mut (*populated_user).0;
[INFO] [stdout]      |                    ^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1123:24
[INFO] [stdout]      |
[INFO] [stdout] 1123 |     match CString::new((*result).0.feature_id.clone()) {
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1112:1
[INFO] [stdout]      |
[INFO] [stdout] 1112 | / pub unsafe extern "C" fn devcycle_variable_result_get_feature_id(
[INFO] [stdout] 1113 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1114 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1152:24
[INFO] [stdout]      |
[INFO] [stdout] 1152 |     match CString::new((*result).0.variation_id.clone()) {
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1141:1
[INFO] [stdout]      |
[INFO] [stdout] 1141 | / pub unsafe extern "C" fn devcycle_variable_result_get_variation_id(
[INFO] [stdout] 1142 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1143 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1181:29
[INFO] [stdout]      |
[INFO] [stdout] 1181 |     let reason_str = match &(*result).0.eval_reason {
[INFO] [stdout]      |                             ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1170:1
[INFO] [stdout]      |
[INFO] [stdout] 1170 | / pub unsafe extern "C" fn devcycle_variable_result_get_evaluation_reason(
[INFO] [stdout] 1171 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1172 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1212:12
[INFO] [stdout]      |
[INFO] [stdout] 1212 |     match &(*result).0.eval_reason {
[INFO] [stdout]      |            ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1202:1
[INFO] [stdout]      |
[INFO] [stdout] 1202 | / pub unsafe extern "C" fn devcycle_variable_result_is_error(
[INFO] [stdout] 1203 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1204 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1238:12
[INFO] [stdout]      |
[INFO] [stdout] 1238 |     match &(*result).0.eval_reason {
[INFO] [stdout]      |            ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1227:1
[INFO] [stdout]      |
[INFO] [stdout] 1227 | / pub unsafe extern "C" fn devcycle_variable_result_get_error(
[INFO] [stdout] 1228 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1229 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1273:61
[INFO] [stdout]      |
[INFO] [stdout] 1273 |     let (is_error, eval_reason_str, error_message) = match &(*result).0.eval_reason {
[INFO] [stdout]      |                                                             ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1262:1
[INFO] [stdout]      |
[INFO] [stdout] 1262 | / pub unsafe extern "C" fn devcycle_variable_result_to_full_json(
[INFO] [stdout] 1263 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1264 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1278:25
[INFO] [stdout]      |
[INFO] [stdout] 1278 |         "variableType": (*result).0.variable_type,
[INFO] [stdout]      |                         ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1279:26
[INFO] [stdout]      |
[INFO] [stdout] 1279 |         "variableValue": (*result).0.variable_value,
[INFO] [stdout]      |                          ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1280:22
[INFO] [stdout]      |
[INFO] [stdout] 1280 |         "featureId": (*result).0.feature_id,
[INFO] [stdout]      |                      ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1281:24
[INFO] [stdout]      |
[INFO] [stdout] 1281 |         "variationId": (*result).0.variation_id,
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1347:29
[INFO] [stdout]      |
[INFO] [stdout] 1347 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1329:1
[INFO] [stdout]      |
[INFO] [stdout] 1329 | / pub unsafe extern "C" fn devcycle_queue_event(
[INFO] [stdout] 1330 | |     sdk_key: *const c_char,
[INFO] [stdout] 1331 | |     user_json: *const c_char,
[INFO] [stdout] 1332 | |     event_type_str: *const c_char,
[INFO] [stdout] ...    |
[INFO] [stdout] 1336 | |     meta_data_json: *const c_char,
[INFO] [stdout] 1337 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1351:31
[INFO] [stdout]      |
[INFO] [stdout] 1351 |     let user_json_str = match CStr::from_ptr(user_json).to_str() {
[INFO] [stdout]      |                               ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1361:32
[INFO] [stdout]      |
[INFO] [stdout] 1361 |     let event_type_raw = match CStr::from_ptr(event_type_str).to_str() {
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1387:15
[INFO] [stdout]      |
[INFO] [stdout] 1387 |         match CStr::from_ptr(custom_type).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1402:15
[INFO] [stdout]      |
[INFO] [stdout] 1402 |         match CStr::from_ptr(target).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1418:15
[INFO] [stdout]      |
[INFO] [stdout] 1418 |         match CStr::from_ptr(meta_data_json).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BucketingConfiguration` is never constructed
[INFO] [stdout]   --> src/config/config.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub(crate) struct BucketingConfiguration {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SSEHost` is never constructed
[INFO] [stdout]   --> src/config/config.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct SSEHost {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_feature_for_key` is never used
[INFO] [stdout]    --> src/config/config.rs:179:19
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl ConfigBody {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub(crate) fn get_feature_for_key(&self, key: &str) -> Option<&ConfigFeature> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_config` is never used
[INFO] [stdout]   --> src/config/configmanager.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn has_config(sdk_key: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target`, `custom_type`, `client_date`, `value`, and `meta_data` are never read
[INFO] [stdout]    --> src/events/event.rs:109:16
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub(crate) struct Event {
[INFO] [stdout]     |                   ----- fields in this struct
[INFO] [stdout] 108 |     pub(crate) event_type: EventType,
[INFO] [stdout] 109 |     pub(crate) target: String,
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 110 |     pub(crate) custom_type: String,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 111 |     pub(crate) user_id: String,
[INFO] [stdout] 112 |     pub(crate) client_date: std::time::Instant,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 113 |     pub(crate) value: f64,
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 114 |     pub(crate) feature_vars: HashMap<String, String>,
[INFO] [stdout] 115 |     pub(crate) meta_data: HashMap<String, serde_json::Value>,
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `event` and `user` are never read
[INFO] [stdout]    --> src/events/event.rs:119:16
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub(crate) struct UserEventData {
[INFO] [stdout]     |                   ------------- fields in this struct
[INFO] [stdout] 119 |     pub(crate) event: Event,
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 120 |     pub(crate) user: User,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]    --> src/events/event.rs:124:16
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub(crate) struct UserEventsBatchRecord {
[INFO] [stdout]     |                   --------------------- field in this struct
[INFO] [stdout] 124 |     pub(crate) user: PopulatedUser,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `event_type`, `variable_key`, `feature_id`, `variation_id`, and `eval_metadata` are never read
[INFO] [stdout]    --> src/events/event.rs:129:16
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub(crate) struct AggEventQueueRawMessage {
[INFO] [stdout]     |                   ----------------------- fields in this struct
[INFO] [stdout] 129 |     pub(crate) event_type: EventType,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 130 |     pub(crate) variable_key: String,
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 131 |     pub(crate) feature_id: String,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 132 |     pub(crate) variation_id: String,
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 133 |     pub(crate) eval_metadata: EvalReasonAggMap,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/events/event_queue.rs:51:16
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct EventQueue {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 51 |     pub(crate) sdk_key: String,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 52 |     pub(crate) platform_data: Arc<PlatformData>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^
[INFO] [stdout] 53 |     pub(crate) agg_event_queue_raw_tx: mpsc::Sender<AggEventQueueRawMessage>,
[INFO] [stdout] 54 |     pub(crate) agg_event_queue_raw_rx: mpsc::Receiver<AggEventQueueRawMessage>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     pub(crate) user_event_queue_raw_tx: mpsc::Sender<UserEventData>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     pub(crate) user_event_queue_raw_rx: mpsc::Receiver<UserEventData>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     pub(crate) agg_event_queue: AggregateEventQueue,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub(crate) queue_access_mutex: tokio::sync::Mutex<()>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     pub(crate) events_flushed: AtomicI64,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     pub(crate) events_dropped: AtomicI64,
[INFO] [stdout] 63 |     pub(crate) events_reported: AtomicI64,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `queue_event`, `merge_agg_event_queue_keys`, `process_user_events`, `process_aggregate_event`, and `process_events` are never used
[INFO] [stdout]    --> src/events/event_queue.rs:172:18
[INFO] [stdout]     |
[INFO] [stdout]  67 | impl EventQueue {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn queue_event(&self, user: User, event: Event) -> Result<bool, DevCycleError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub(crate) async fn merge_agg_event_queue_keys(&mut self, config_body: &ConfigBody) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     async unsafe fn process_user_events(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     pub(crate) async fn process_aggregate_event(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub(crate) async fn process_events(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_event_queue` is never used
[INFO] [stdout]   --> src/events/event_queue_manager.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn has_event_queue(sdk_key: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FilterType` is never used
[INFO] [stdout]   --> src/segmentation/filters.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum FilterType {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FilterSubType` is never used
[INFO] [stdout]   --> src/segmentation/filters.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum FilterSubType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FilterOrOperator` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:446:11
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub trait FilterOrOperator {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PassFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:524:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | pub struct PassFilter {}
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `evaluate` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:526:12
[INFO] [stdout]     |
[INFO] [stdout] 525 | impl PassFilter {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 526 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FailFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:535:12
[INFO] [stdout]     |
[INFO] [stdout] 535 | pub struct FailFilter {}
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `evaluate` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:537:12
[INFO] [stdout]     |
[INFO] [stdout] 536 | impl FailFilter {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 537 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AllFilter` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:546:10
[INFO] [stdout]     |
[INFO] [stdout] 546 | pub type AllFilter = PassFilter;
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `OptInFilter` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:547:10
[INFO] [stdout]     |
[INFO] [stdout] 547 | pub type OptInFilter = FailFilter;
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:550:12
[INFO] [stdout]     |
[INFO] [stdout] 550 | pub struct BaseFilter {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:557:12
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct UserFilter {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `evaluate` and `compile` are never used
[INFO] [stdout]    --> src/segmentation/filters.rs:566:12
[INFO] [stdout]     |
[INFO] [stdout] 565 | impl UserFilter {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 566 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn compile(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FilterTrait` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:647:7
[INFO] [stdout]     |
[INFO] [stdout] 647 | trait FilterTrait {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Audience` is never constructed
[INFO] [stdout]   --> src/segmentation/target.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Audience {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SemverOptions` is never constructed
[INFO] [stdout]  --> src/segmentation/versioncompare.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct SemverOptions {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Compare` is never used
[INFO] [stdout]   --> src/segmentation/versioncompare.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | trait Compare {
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_valid_parts` is never used
[INFO] [stdout]   --> src/segmentation/versioncompare.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn has_valid_parts(lexicographical: bool, parts: &[String]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `user` and `feature_vars` are never read
[INFO] [stdout]   --> src/user/user.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct UserFeatureData<'a> {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 70 |     user: &'a User,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 71 |     feature_vars: &'a HashMap<String, String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]    --> src/user/user.rs:177:16
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct BucketedUserConfig {
[INFO] [stdout]     |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub(crate) user: PopulatedUser,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VARIABLE_EVALUATED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const VARIABLE_EVALUATED_EVENT: &str = "variableEvaluated";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VARIABLE_DEFAULTED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const VARIABLE_DEFAULTED_EVENT: &str = "variableDefaulted";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AGG_VARIABLE_EVALUATED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const AGG_VARIABLE_EVALUATED_EVENT: &str = "aggVariableEvaluated";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AGG_VARIABLE_DEFAULTED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const AGG_VARIABLE_DEFAULTED_EVENT: &str = "aggVariableDefaulted";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUB_TYPE_IP` is never used
[INFO] [stdout]   --> src/util/constants.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const SUB_TYPE_IP: &str = "ip";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_STRING` is never used
[INFO] [stdout]   --> src/util/constants.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const DATA_KEY_TYPE_STRING: &str = "String";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_BOOLEAN` is never used
[INFO] [stdout]   --> src/util/constants.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub const DATA_KEY_TYPE_BOOLEAN: &str = "Boolean";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_NUMBER` is never used
[INFO] [stdout]   --> src/util/constants.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const DATA_KEY_TYPE_NUMBER: &str = "Number";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROLLOUT_TYPE_PERCENTAGE` is never used
[INFO] [stdout]   --> src/util/constants.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const ROLLOUT_TYPE_PERCENTAGE: &str = "percentage";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MISSING_VARIABLE` is never used
[INFO] [stdout]   --> src/util/errors.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const MISSING_VARIABLE: DevCycleError = DevCycleError {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MISSING_VARIATION` is never used
[INFO] [stdout]   --> src/util/errors.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const MISSING_VARIATION: DevCycleError = DevCycleError {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_user_does_not_qualify_for_targets` is never used
[INFO] [stdout]   --> src/util/errors.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub(crate) fn failed_user_does_not_qualify_for_targets() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_user_does_not_qualify_for_rollouts` is never used
[INFO] [stdout]   --> src/util/errors.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub(crate) fn failed_user_does_not_qualify_for_rollouts() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `variable_type_mismatch` is never used
[INFO] [stdout]   --> src/util/errors.rs:83:15
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub(crate) fn variable_type_mismatch() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_to_set_client_custom_data` is never used
[INFO] [stdout]   --> src/util/errors.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn failed_to_set_client_custom_data() -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_error` is never used
[INFO] [stdout]   --> src/util/errors.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn parse_error(msg: String) -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `missing_field` is never used
[INFO] [stdout]   --> src/util/errors.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn missing_field(field: String) -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.53s
[INFO] running `Command { std: "docker" "inspect" "ca6f04cc85541cf4a5b83d802d374a6b9d53ec595cc3f972bf2b5bfeb79294cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ca6f04cc85541cf4a5b83d802d374a6b9d53ec595cc3f972bf2b5bfeb79294cf", kill_on_drop: false }`
[INFO] [stdout] ca6f04cc85541cf4a5b83d802d374a6b9d53ec595cc3f972bf2b5bfeb79294cf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9c421834857a8bef0e81394d384d74c1dd4d6d389ad2d8c032f6ce356f13df2a
[INFO] running `Command { std: "docker" "start" "-a" "9c421834857a8bef0e81394d384d74c1dd4d6d389ad2d8c032f6ce356f13df2a", kill_on_drop: false }`
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.5
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling syn v2.0.110
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling http v1.3.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling cc v1.2.46
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling tracing-core v0.1.34
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling hashbrown v0.16.0
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling foreign-types v0.3.2
[INFO] [stderr]    Compiling slab v0.4.11
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling openssl-probe v0.1.6
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling clap_lex v0.7.6
[INFO] [stderr]    Compiling ipnet v2.11.0
[INFO] [stderr]    Compiling indexmap v2.12.0
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling clap_builder v4.5.52
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling iri-string v0.7.9
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling rustls-pki-types v1.13.0
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling clap v4.5.52
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.27
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling tokio-util v0.7.17
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]    Compiling tower-http v0.6.6
[INFO] [stderr]    Compiling h2 v0.4.12
[INFO] [stderr]    Compiling devcycle-bucketing-rs v0.2.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition value: `protobuf`
[INFO] [stdout]   --> src/lib.rs:61:7
[INFO] [stdout]    |
[INFO] [stdout] 61 | #[cfg(feature = "protobuf")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `console_error_panic_hook`, `default`, `libc`, `serde-wasm-bindgen`, `wasm`, `wasm-bindgen`, and `wasm-bindgen-futures`
[INFO] [stdout]    = help: consider adding `protobuf` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bucketing::*`
[INFO] [stdout]   --> src/bucketing/mod.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) use bucketing::*;
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `event::*`
[INFO] [stdout]   --> src/events/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use event::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `filters::*`
[INFO] [stdout]  --> src/segmentation/mod.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) use filters::*;
[INFO] [stdout]   |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `errors::DevCycleError`
[INFO] [stdout]  --> src/util/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use errors::DevCycleError;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:193:51
[INFO] [stdout]     |
[INFO] [stdout] 193 |                     constants::COMPARATOR_EQUAL | "=" => {
[INFO] [stdout]     |                     ---------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     matches all the relevant values
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:199:61
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...                   constants::COMPARATOR_GREATER | ">" => result > 0.0,
[INFO] [stdout]     |                       -----------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:200:67
[INFO] [stdout]     |
[INFO] [stdout] 200 | ...                   constants::COMPARATOR_GREATER_EQUAL | ">=" => result >= 0.0,
[INFO] [stdout]     |                       -----------------------------------   ^^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:201:58
[INFO] [stdout]     |
[INFO] [stdout] 201 | ...                   constants::COMPARATOR_LESS | "<" => result < 0.0,
[INFO] [stdout]     |                       --------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:202:64
[INFO] [stdout]     |
[INFO] [stdout] 202 | ...                   constants::COMPARATOR_LESS_EQUAL | "<=" => result <= 0.0,
[INFO] [stdout]     |                       --------------------------------   ^^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:287:47
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 constants::COMPARATOR_EQUAL | "=" => user_value == filter_value,
[INFO] [stdout]     |                 ---------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:214:11
[INFO] [stdout]     |
[INFO] [stdout] 214 |     match CStr::from_ptr(sdk_key).to_str() {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:206:1
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn parse_sdk_key(sdk_key: *const c_char) -> Result<String, DevCycleFFIErrorCode> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:236:29
[INFO] [stdout]     |
[INFO] [stdout] 236 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:230:1
[INFO] [stdout]     |
[INFO] [stdout] 230 | / pub unsafe extern "C" fn devcycle_init_event_queue(
[INFO] [stdout] 231 | |     sdk_key: *const c_char,
[INFO] [stdout] 232 | |     options: *const CEventQueueOptions,
[INFO] [stdout] 233 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |         (*options).0.clone()
[INFO] [stdout]     |         ^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:293:29
[INFO] [stdout]     |
[INFO] [stdout] 293 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:278:1
[INFO] [stdout]     |
[INFO] [stdout] 278 | / pub unsafe extern "C" fn devcycle_generate_bucketed_config(
[INFO] [stdout] 279 | |     sdk_key: *const c_char,
[INFO] [stdout] 280 | |     user: *const CPopulatedUser,
[INFO] [stdout] 281 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 282 | | ) -> *mut CBucketedUserConfig {
[INFO] [stdout]     | |_____________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:298:26
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let populated_user = (*user).0.clone();
[INFO] [stdout]     |                          ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:304:19
[INFO] [stdout]     |
[INFO] [stdout] 304 |             match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:371:29
[INFO] [stdout]     |
[INFO] [stdout] 371 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:356:1
[INFO] [stdout]     |
[INFO] [stdout] 356 | / pub unsafe extern "C" fn devcycle_generate_bucketed_config_from_user(
[INFO] [stdout] 357 | |     sdk_key: *const c_char,
[INFO] [stdout] 358 | |     user: *const CUser,
[INFO] [stdout] 359 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 360 | | ) -> *mut CBucketedUserConfig {
[INFO] [stdout]     | |_____________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:376:20
[INFO] [stdout]     |
[INFO] [stdout] 376 |     let user_obj = (*user).0.clone();
[INFO] [stdout]     |                    ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:424:29
[INFO] [stdout]     |
[INFO] [stdout] 424 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:410:1
[INFO] [stdout]     |
[INFO] [stdout] 410 | / pub unsafe extern "C" fn devcycle_set_config(
[INFO] [stdout] 411 | |     sdk_key: *const c_char,
[INFO] [stdout] 412 | |     config_json: *const c_char,
[INFO] [stdout] 413 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:429:33
[INFO] [stdout]     |
[INFO] [stdout] 429 |     let config_json_str = match CStr::from_ptr(config_json).to_str() {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:508:29
[INFO] [stdout]     |
[INFO] [stdout] 508 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:494:1
[INFO] [stdout]     |
[INFO] [stdout] 494 | / pub unsafe extern "C" fn devcycle_set_client_custom_data(
[INFO] [stdout] 495 | |     sdk_key: *const c_char,
[INFO] [stdout] 496 | |     custom_data_json: *const c_char,
[INFO] [stdout] 497 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:513:38
[INFO] [stdout]     |
[INFO] [stdout] 513 |     let custom_data_json_str = match CStr::from_ptr(custom_data_json).to_str() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:572:29
[INFO] [stdout]     |
[INFO] [stdout] 572 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:566:1
[INFO] [stdout]     |
[INFO] [stdout] 566 | / pub unsafe extern "C" fn devcycle_set_platform_data(
[INFO] [stdout] 567 | |     sdk_key: *const c_char,
[INFO] [stdout] 568 | |     platform_data_json: *const c_char,
[INFO] [stdout] 569 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:585:40
[INFO] [stdout]     |
[INFO] [stdout] 585 |     let platform_data_json_str = match CStr::from_ptr(platform_data_json).to_str() {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:645:29
[INFO] [stdout]     |
[INFO] [stdout] 645 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:628:1
[INFO] [stdout]     |
[INFO] [stdout] 628 | / pub unsafe extern "C" fn devcycle_init_sdk_key(
[INFO] [stdout] 629 | |     sdk_key: *const c_char,
[INFO] [stdout] 630 | |     config_json: *const c_char,
[INFO] [stdout] 631 | |     event_queue_options: *const CEventQueueOptions,
[INFO] [stdout] 632 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 633 | |     platform_data_json: *const c_char,
[INFO] [stdout] 634 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:650:33
[INFO] [stdout]     |
[INFO] [stdout] 650 |     let config_json_str = match CStr::from_ptr(config_json).to_str() {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:665:15
[INFO] [stdout]     |
[INFO] [stdout] 665 |         match CStr::from_ptr(platform_data_json).to_str() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:714:9
[INFO] [stdout]     |
[INFO] [stdout] 714 |         (*event_queue_options).0.clone()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:722:19
[INFO] [stdout]     |
[INFO] [stdout] 722 |             match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:793:29
[INFO] [stdout]     |
[INFO] [stdout] 793 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:779:1
[INFO] [stdout]     |
[INFO] [stdout] 779 | / pub unsafe extern "C" fn devcycle_variable_for_user(
[INFO] [stdout] 780 | |     sdk_key: *const c_char,
[INFO] [stdout] 781 | |     user: *const CPopulatedUser,
[INFO] [stdout] 782 | |     variable_key: *const c_char,
[INFO] [stdout] 783 | |     variable_type: *const c_char,
[INFO] [stdout] 784 | | ) -> *mut CVariableForUserResult {
[INFO] [stdout]     | |________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:797:34
[INFO] [stdout]     |
[INFO] [stdout] 797 |     let variable_key_str = match CStr::from_ptr(variable_key).to_str() {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:807:35
[INFO] [stdout]     |
[INFO] [stdout] 807 |     let variable_type_str = match CStr::from_ptr(variable_type).to_str() {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:817:26
[INFO] [stdout]     |
[INFO] [stdout] 817 |     let populated_user = (*user).0.clone();
[INFO] [stdout]     |                          ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:859:34
[INFO] [stdout]     |
[INFO] [stdout] 859 |     match serde_json::to_string(&(*result).0.variable_value) {
[INFO] [stdout]     |                                  ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:848:1
[INFO] [stdout]     |
[INFO] [stdout] 848 | / pub unsafe extern "C" fn devcycle_variable_result_to_json(
[INFO] [stdout] 849 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 850 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:897:24
[INFO] [stdout]     |
[INFO] [stdout] 897 |     match CString::new((*result).0.variable_type.clone()) {
[INFO] [stdout]     |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:886:1
[INFO] [stdout]     |
[INFO] [stdout] 886 | / pub unsafe extern "C" fn devcycle_variable_result_get_type(
[INFO] [stdout] 887 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 888 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:926:34
[INFO] [stdout]     |
[INFO] [stdout] 926 |     match serde_json::to_string(&(*config).0) {
[INFO] [stdout]     |                                  ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:915:1
[INFO] [stdout]     |
[INFO] [stdout] 915 | / pub unsafe extern "C" fn devcycle_bucketed_config_to_json(
[INFO] [stdout] 916 | |     config: *const CBucketedUserConfig,
[INFO] [stdout] 917 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:954:17
[INFO] [stdout]     |
[INFO] [stdout] 954 |         let _ = Box::from_raw(result);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:952:1
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub unsafe extern "C" fn devcycle_free_variable_result(result: *mut CVariableForUserResult) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CString::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:962:17
[INFO] [stdout]     |
[INFO] [stdout] 962 |         let _ = CString::from_raw(s);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:960:1
[INFO] [stdout]     |
[INFO] [stdout] 960 | pub unsafe extern "C" fn devcycle_free_string(s: *mut c_char) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:970:17
[INFO] [stdout]     |
[INFO] [stdout] 970 |         let _ = Box::from_raw(config);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:968:1
[INFO] [stdout]     |
[INFO] [stdout] 968 | pub unsafe extern "C" fn devcycle_free_bucketed_config(config: *mut CBucketedUserConfig) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:978:17
[INFO] [stdout]     |
[INFO] [stdout] 978 |         let _ = Box::from_raw(user);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:976:1
[INFO] [stdout]     |
[INFO] [stdout] 976 | pub unsafe extern "C" fn devcycle_free_user(user: *mut CUser) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:986:17
[INFO] [stdout]     |
[INFO] [stdout] 986 |         let _ = Box::from_raw(user);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:984:1
[INFO] [stdout]     |
[INFO] [stdout] 984 | pub unsafe extern "C" fn devcycle_free_populated_user(user: *mut CPopulatedUser) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:994:17
[INFO] [stdout]     |
[INFO] [stdout] 994 |         let _ = Box::from_raw(options);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:992:1
[INFO] [stdout]     |
[INFO] [stdout] 992 | pub unsafe extern "C" fn devcycle_free_event_queue_options(options: *mut CEventQueueOptions) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1009:26
[INFO] [stdout]      |
[INFO] [stdout] 1009 |     let json_str = match CStr::from_ptr(json).to_str() {
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1000:1
[INFO] [stdout]      |
[INFO] [stdout] 1000 | pub unsafe extern "C" fn devcycle_user_from_json(json: *const c_char) -> *mut CUser {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1051:29
[INFO] [stdout]      |
[INFO] [stdout] 1051 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1039:1
[INFO] [stdout]      |
[INFO] [stdout] 1039 | / pub unsafe extern "C" fn devcycle_populate_user(
[INFO] [stdout] 1040 | |     sdk_key: *const c_char,
[INFO] [stdout] 1041 | |     user: *const CUser,
[INFO] [stdout] 1042 | | ) -> *mut CPopulatedUser {
[INFO] [stdout]      | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1055:20
[INFO] [stdout]      |
[INFO] [stdout] 1055 |     let user_obj = (*user).0.clone();
[INFO] [stdout]      |                    ^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1076:26
[INFO] [stdout]      |
[INFO] [stdout] 1076 |     let json_str = match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1064:1
[INFO] [stdout]      |
[INFO] [stdout] 1064 | / pub unsafe extern "C" fn devcycle_populated_user_merge_client_custom_data(
[INFO] [stdout] 1065 | |     populated_user: *mut CPopulatedUser,
[INFO] [stdout] 1066 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 1067 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1099:20
[INFO] [stdout]      |
[INFO] [stdout] 1099 |     let pop = &mut (*populated_user).0;
[INFO] [stdout]      |                    ^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1123:24
[INFO] [stdout]      |
[INFO] [stdout] 1123 |     match CString::new((*result).0.feature_id.clone()) {
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1112:1
[INFO] [stdout]      |
[INFO] [stdout] 1112 | / pub unsafe extern "C" fn devcycle_variable_result_get_feature_id(
[INFO] [stdout] 1113 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1114 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1152:24
[INFO] [stdout]      |
[INFO] [stdout] 1152 |     match CString::new((*result).0.variation_id.clone()) {
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1141:1
[INFO] [stdout]      |
[INFO] [stdout] 1141 | / pub unsafe extern "C" fn devcycle_variable_result_get_variation_id(
[INFO] [stdout] 1142 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1143 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1181:29
[INFO] [stdout]      |
[INFO] [stdout] 1181 |     let reason_str = match &(*result).0.eval_reason {
[INFO] [stdout]      |                             ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1170:1
[INFO] [stdout]      |
[INFO] [stdout] 1170 | / pub unsafe extern "C" fn devcycle_variable_result_get_evaluation_reason(
[INFO] [stdout] 1171 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1172 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1212:12
[INFO] [stdout]      |
[INFO] [stdout] 1212 |     match &(*result).0.eval_reason {
[INFO] [stdout]      |            ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1202:1
[INFO] [stdout]      |
[INFO] [stdout] 1202 | / pub unsafe extern "C" fn devcycle_variable_result_is_error(
[INFO] [stdout] 1203 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1204 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1238:12
[INFO] [stdout]      |
[INFO] [stdout] 1238 |     match &(*result).0.eval_reason {
[INFO] [stdout]      |            ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1227:1
[INFO] [stdout]      |
[INFO] [stdout] 1227 | / pub unsafe extern "C" fn devcycle_variable_result_get_error(
[INFO] [stdout] 1228 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1229 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1273:61
[INFO] [stdout]      |
[INFO] [stdout] 1273 |     let (is_error, eval_reason_str, error_message) = match &(*result).0.eval_reason {
[INFO] [stdout]      |                                                             ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1262:1
[INFO] [stdout]      |
[INFO] [stdout] 1262 | / pub unsafe extern "C" fn devcycle_variable_result_to_full_json(
[INFO] [stdout] 1263 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1264 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1278:25
[INFO] [stdout]      |
[INFO] [stdout] 1278 |         "variableType": (*result).0.variable_type,
[INFO] [stdout]      |                         ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1279:26
[INFO] [stdout]      |
[INFO] [stdout] 1279 |         "variableValue": (*result).0.variable_value,
[INFO] [stdout]      |                          ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1280:22
[INFO] [stdout]      |
[INFO] [stdout] 1280 |         "featureId": (*result).0.feature_id,
[INFO] [stdout]      |                      ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1281:24
[INFO] [stdout]      |
[INFO] [stdout] 1281 |         "variationId": (*result).0.variation_id,
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1347:29
[INFO] [stdout]      |
[INFO] [stdout] 1347 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1329:1
[INFO] [stdout]      |
[INFO] [stdout] 1329 | / pub unsafe extern "C" fn devcycle_queue_event(
[INFO] [stdout] 1330 | |     sdk_key: *const c_char,
[INFO] [stdout] 1331 | |     user_json: *const c_char,
[INFO] [stdout] 1332 | |     event_type_str: *const c_char,
[INFO] [stdout] ...    |
[INFO] [stdout] 1336 | |     meta_data_json: *const c_char,
[INFO] [stdout] 1337 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1351:31
[INFO] [stdout]      |
[INFO] [stdout] 1351 |     let user_json_str = match CStr::from_ptr(user_json).to_str() {
[INFO] [stdout]      |                               ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1361:32
[INFO] [stdout]      |
[INFO] [stdout] 1361 |     let event_type_raw = match CStr::from_ptr(event_type_str).to_str() {
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1387:15
[INFO] [stdout]      |
[INFO] [stdout] 1387 |         match CStr::from_ptr(custom_type).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1402:15
[INFO] [stdout]      |
[INFO] [stdout] 1402 |         match CStr::from_ptr(target).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1418:15
[INFO] [stdout]      |
[INFO] [stdout] 1418 |         match CStr::from_ptr(meta_data_json).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BucketingConfiguration` is never constructed
[INFO] [stdout]   --> src/config/config.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub(crate) struct BucketingConfiguration {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SSEHost` is never constructed
[INFO] [stdout]   --> src/config/config.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct SSEHost {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_feature_for_key` is never used
[INFO] [stdout]    --> src/config/config.rs:179:19
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl ConfigBody {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub(crate) fn get_feature_for_key(&self, key: &str) -> Option<&ConfigFeature> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_config` is never used
[INFO] [stdout]   --> src/config/configmanager.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn has_config(sdk_key: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target`, `custom_type`, `client_date`, `value`, and `meta_data` are never read
[INFO] [stdout]    --> src/events/event.rs:109:16
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub(crate) struct Event {
[INFO] [stdout]     |                   ----- fields in this struct
[INFO] [stdout] 108 |     pub(crate) event_type: EventType,
[INFO] [stdout] 109 |     pub(crate) target: String,
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 110 |     pub(crate) custom_type: String,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 111 |     pub(crate) user_id: String,
[INFO] [stdout] 112 |     pub(crate) client_date: std::time::Instant,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 113 |     pub(crate) value: f64,
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 114 |     pub(crate) feature_vars: HashMap<String, String>,
[INFO] [stdout] 115 |     pub(crate) meta_data: HashMap<String, serde_json::Value>,
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `event` and `user` are never read
[INFO] [stdout]    --> src/events/event.rs:119:16
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub(crate) struct UserEventData {
[INFO] [stdout]     |                   ------------- fields in this struct
[INFO] [stdout] 119 |     pub(crate) event: Event,
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 120 |     pub(crate) user: User,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]    --> src/events/event.rs:124:16
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub(crate) struct UserEventsBatchRecord {
[INFO] [stdout]     |                   --------------------- field in this struct
[INFO] [stdout] 124 |     pub(crate) user: PopulatedUser,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `event_type`, `variable_key`, `feature_id`, `variation_id`, and `eval_metadata` are never read
[INFO] [stdout]    --> src/events/event.rs:129:16
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub(crate) struct AggEventQueueRawMessage {
[INFO] [stdout]     |                   ----------------------- fields in this struct
[INFO] [stdout] 129 |     pub(crate) event_type: EventType,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 130 |     pub(crate) variable_key: String,
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 131 |     pub(crate) feature_id: String,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 132 |     pub(crate) variation_id: String,
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 133 |     pub(crate) eval_metadata: EvalReasonAggMap,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/events/event_queue.rs:51:16
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct EventQueue {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 51 |     pub(crate) sdk_key: String,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 52 |     pub(crate) platform_data: Arc<PlatformData>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^
[INFO] [stdout] 53 |     pub(crate) agg_event_queue_raw_tx: mpsc::Sender<AggEventQueueRawMessage>,
[INFO] [stdout] 54 |     pub(crate) agg_event_queue_raw_rx: mpsc::Receiver<AggEventQueueRawMessage>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     pub(crate) user_event_queue_raw_tx: mpsc::Sender<UserEventData>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     pub(crate) user_event_queue_raw_rx: mpsc::Receiver<UserEventData>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     pub(crate) agg_event_queue: AggregateEventQueue,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub(crate) queue_access_mutex: tokio::sync::Mutex<()>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     pub(crate) events_flushed: AtomicI64,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     pub(crate) events_dropped: AtomicI64,
[INFO] [stdout] 63 |     pub(crate) events_reported: AtomicI64,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `queue_event`, `merge_agg_event_queue_keys`, `process_user_events`, `process_aggregate_event`, and `process_events` are never used
[INFO] [stdout]    --> src/events/event_queue.rs:172:18
[INFO] [stdout]     |
[INFO] [stdout]  67 | impl EventQueue {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn queue_event(&self, user: User, event: Event) -> Result<bool, DevCycleError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub(crate) async fn merge_agg_event_queue_keys(&mut self, config_body: &ConfigBody) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     async unsafe fn process_user_events(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     pub(crate) async fn process_aggregate_event(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub(crate) async fn process_events(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_event_queue` is never used
[INFO] [stdout]   --> src/events/event_queue_manager.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn has_event_queue(sdk_key: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FilterType` is never used
[INFO] [stdout]   --> src/segmentation/filters.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum FilterType {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FilterSubType` is never used
[INFO] [stdout]   --> src/segmentation/filters.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum FilterSubType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FilterOrOperator` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:446:11
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub trait FilterOrOperator {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PassFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:524:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | pub struct PassFilter {}
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `evaluate` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:526:12
[INFO] [stdout]     |
[INFO] [stdout] 525 | impl PassFilter {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 526 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FailFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:535:12
[INFO] [stdout]     |
[INFO] [stdout] 535 | pub struct FailFilter {}
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `evaluate` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:537:12
[INFO] [stdout]     |
[INFO] [stdout] 536 | impl FailFilter {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 537 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AllFilter` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:546:10
[INFO] [stdout]     |
[INFO] [stdout] 546 | pub type AllFilter = PassFilter;
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `OptInFilter` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:547:10
[INFO] [stdout]     |
[INFO] [stdout] 547 | pub type OptInFilter = FailFilter;
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:550:12
[INFO] [stdout]     |
[INFO] [stdout] 550 | pub struct BaseFilter {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:557:12
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct UserFilter {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `evaluate` and `compile` are never used
[INFO] [stdout]    --> src/segmentation/filters.rs:566:12
[INFO] [stdout]     |
[INFO] [stdout] 565 | impl UserFilter {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 566 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn compile(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FilterTrait` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:647:7
[INFO] [stdout]     |
[INFO] [stdout] 647 | trait FilterTrait {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Audience` is never constructed
[INFO] [stdout]   --> src/segmentation/target.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Audience {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SemverOptions` is never constructed
[INFO] [stdout]  --> src/segmentation/versioncompare.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct SemverOptions {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Compare` is never used
[INFO] [stdout]   --> src/segmentation/versioncompare.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | trait Compare {
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_valid_parts` is never used
[INFO] [stdout]   --> src/segmentation/versioncompare.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn has_valid_parts(lexicographical: bool, parts: &[String]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `user` and `feature_vars` are never read
[INFO] [stdout]   --> src/user/user.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct UserFeatureData<'a> {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 70 |     user: &'a User,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 71 |     feature_vars: &'a HashMap<String, String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]    --> src/user/user.rs:177:16
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct BucketedUserConfig {
[INFO] [stdout]     |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub(crate) user: PopulatedUser,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VARIABLE_EVALUATED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const VARIABLE_EVALUATED_EVENT: &str = "variableEvaluated";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VARIABLE_DEFAULTED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const VARIABLE_DEFAULTED_EVENT: &str = "variableDefaulted";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AGG_VARIABLE_EVALUATED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const AGG_VARIABLE_EVALUATED_EVENT: &str = "aggVariableEvaluated";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AGG_VARIABLE_DEFAULTED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const AGG_VARIABLE_DEFAULTED_EVENT: &str = "aggVariableDefaulted";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUB_TYPE_IP` is never used
[INFO] [stdout]   --> src/util/constants.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const SUB_TYPE_IP: &str = "ip";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_STRING` is never used
[INFO] [stdout]   --> src/util/constants.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const DATA_KEY_TYPE_STRING: &str = "String";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_BOOLEAN` is never used
[INFO] [stdout]   --> src/util/constants.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub const DATA_KEY_TYPE_BOOLEAN: &str = "Boolean";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_NUMBER` is never used
[INFO] [stdout]   --> src/util/constants.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const DATA_KEY_TYPE_NUMBER: &str = "Number";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROLLOUT_TYPE_PERCENTAGE` is never used
[INFO] [stdout]   --> src/util/constants.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const ROLLOUT_TYPE_PERCENTAGE: &str = "percentage";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MISSING_VARIABLE` is never used
[INFO] [stdout]   --> src/util/errors.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const MISSING_VARIABLE: DevCycleError = DevCycleError {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MISSING_VARIATION` is never used
[INFO] [stdout]   --> src/util/errors.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const MISSING_VARIATION: DevCycleError = DevCycleError {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_user_does_not_qualify_for_targets` is never used
[INFO] [stdout]   --> src/util/errors.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub(crate) fn failed_user_does_not_qualify_for_targets() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_user_does_not_qualify_for_rollouts` is never used
[INFO] [stdout]   --> src/util/errors.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub(crate) fn failed_user_does_not_qualify_for_rollouts() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `variable_type_mismatch` is never used
[INFO] [stdout]   --> src/util/errors.rs:83:15
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub(crate) fn variable_type_mismatch() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_to_set_client_custom_data` is never used
[INFO] [stdout]   --> src/util/errors.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn failed_to_set_client_custom_data() -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_error` is never used
[INFO] [stdout]   --> src/util/errors.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn parse_error(msg: String) -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `missing_field` is never used
[INFO] [stdout]   --> src/util/errors.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn missing_field(field: String) -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.18
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.24
[INFO] [stdout] warning: unexpected `cfg` condition value: `protobuf`
[INFO] [stdout]   --> src/lib.rs:61:7
[INFO] [stdout]    |
[INFO] [stdout] 61 | #[cfg(feature = "protobuf")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `console_error_panic_hook`, `default`, `libc`, `serde-wasm-bindgen`, `wasm`, `wasm-bindgen`, and `wasm-bindgen-futures`
[INFO] [stdout]    = help: consider adding `protobuf` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bucketing::*`
[INFO] [stdout]   --> src/bucketing/mod.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) use bucketing::*;
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `filters::*`
[INFO] [stdout]  --> src/segmentation/mod.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) use filters::*;
[INFO] [stdout]   |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `errors::DevCycleError`
[INFO] [stdout]  --> src/util/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use errors::DevCycleError;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:163:22
[INFO] [stdout]     |
[INFO] [stdout] 163 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:205:22
[INFO] [stdout]     |
[INFO] [stdout] 205 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:244:26
[INFO] [stdout]     |
[INFO] [stdout] 244 |             let result = unsafe {
[INFO] [stdout]     |                          ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:284:26
[INFO] [stdout]     |
[INFO] [stdout] 284 |             let result = unsafe {
[INFO] [stdout]     |                          ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:310:22
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:339:22
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:454:22
[INFO] [stdout]     |
[INFO] [stdout] 454 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:491:22
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:538:26
[INFO] [stdout]     |
[INFO] [stdout] 538 |             let result = unsafe {
[INFO] [stdout]     |                          ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:574:26
[INFO] [stdout]     |
[INFO] [stdout] 574 |             let result = unsafe {
[INFO] [stdout]     |                          ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:651:27
[INFO] [stdout]     |
[INFO] [stdout] 651 |         let test_result = unsafe {
[INFO] [stdout]     |                           ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:660:27
[INFO] [stdout]     |
[INFO] [stdout] 660 |         let prod_result = unsafe {
[INFO] [stdout]     |                           ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:686:32
[INFO] [stdout]     |
[INFO] [stdout] 686 |         let bucketing_result = unsafe {
[INFO] [stdout]     |                                ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:736:22
[INFO] [stdout]     |
[INFO] [stdout] 736 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:811:22
[INFO] [stdout]     |
[INFO] [stdout] 811 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/bucketing/bucketing_tests.rs:927:22
[INFO] [stdout]     |
[INFO] [stdout] 927 |         let result = unsafe {
[INFO] [stdout]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_ref`
[INFO] [stdout]    --> src/events/event_queue_tests.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let config_ref = get_config(sdk_key).unwrap();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_ref`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_queue`
[INFO] [stdout]    --> src/events/event_queue_tests.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |         let event_queue = event_queue_manager::get_event_queue(sdk_key).unwrap();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_queue`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_queue`
[INFO] [stdout]    --> src/events/event_queue_tests.rs:171:13
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let event_queue = event_queue_manager::get_event_queue(sdk_key).unwrap();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_queue`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:193:51
[INFO] [stdout]     |
[INFO] [stdout] 193 |                     constants::COMPARATOR_EQUAL | "=" => {
[INFO] [stdout]     |                     ---------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     matches all the relevant values
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:199:61
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...                   constants::COMPARATOR_GREATER | ">" => result > 0.0,
[INFO] [stdout]     |                       -----------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:200:67
[INFO] [stdout]     |
[INFO] [stdout] 200 | ...                   constants::COMPARATOR_GREATER_EQUAL | ">=" => result >= 0.0,
[INFO] [stdout]     |                       -----------------------------------   ^^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:201:58
[INFO] [stdout]     |
[INFO] [stdout] 201 | ...                   constants::COMPARATOR_LESS | "<" => result < 0.0,
[INFO] [stdout]     |                       --------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:202:64
[INFO] [stdout]     |
[INFO] [stdout] 202 | ...                   constants::COMPARATOR_LESS_EQUAL | "<=" => result <= 0.0,
[INFO] [stdout]     |                       --------------------------------   ^^^^ no value can reach this
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/segmentation/filters.rs:287:47
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 constants::COMPARATOR_EQUAL | "=" => user_value == filter_value,
[INFO] [stdout]     |                 ---------------------------   ^^^ no value can reach this
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 matches all the relevant values
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/segmentation/filter_tests.rs:1405:13
[INFO] [stdout]      |
[INFO] [stdout] 1405 |         let mut user = create_test_user();
[INFO] [stdout]      |             ----^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filter`
[INFO] [stdout]     --> src/segmentation/filter_tests.rs:1392:13
[INFO] [stdout]      |
[INFO] [stdout] 1392 |         let filter = Filter {
[INFO] [stdout]      |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]     --> src/segmentation/filter_tests.rs:1405:13
[INFO] [stdout]      |
[INFO] [stdout] 1405 |         let mut user = create_test_user();
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audiences`
[INFO] [stdout]     --> src/segmentation/filter_tests.rs:1406:13
[INFO] [stdout]      |
[INFO] [stdout] 1406 |         let audiences: HashMap<String, NoIdAudience> = HashMap::new();
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audiences`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `client_custom_data`
[INFO] [stdout]     --> src/segmentation/filter_tests.rs:1407:13
[INFO] [stdout]      |
[INFO] [stdout] 1407 |         let client_custom_data: HashMap<String, serde_json::Value> = HashMap::new();
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_client_custom_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:214:11
[INFO] [stdout]     |
[INFO] [stdout] 214 |     match CStr::from_ptr(sdk_key).to_str() {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:206:1
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn parse_sdk_key(sdk_key: *const c_char) -> Result<String, DevCycleFFIErrorCode> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:236:29
[INFO] [stdout]     |
[INFO] [stdout] 236 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:230:1
[INFO] [stdout]     |
[INFO] [stdout] 230 | / pub unsafe extern "C" fn devcycle_init_event_queue(
[INFO] [stdout] 231 | |     sdk_key: *const c_char,
[INFO] [stdout] 232 | |     options: *const CEventQueueOptions,
[INFO] [stdout] 233 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |         (*options).0.clone()
[INFO] [stdout]     |         ^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:293:29
[INFO] [stdout]     |
[INFO] [stdout] 293 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:278:1
[INFO] [stdout]     |
[INFO] [stdout] 278 | / pub unsafe extern "C" fn devcycle_generate_bucketed_config(
[INFO] [stdout] 279 | |     sdk_key: *const c_char,
[INFO] [stdout] 280 | |     user: *const CPopulatedUser,
[INFO] [stdout] 281 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 282 | | ) -> *mut CBucketedUserConfig {
[INFO] [stdout]     | |_____________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:298:26
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let populated_user = (*user).0.clone();
[INFO] [stdout]     |                          ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:304:19
[INFO] [stdout]     |
[INFO] [stdout] 304 |             match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:371:29
[INFO] [stdout]     |
[INFO] [stdout] 371 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:356:1
[INFO] [stdout]     |
[INFO] [stdout] 356 | / pub unsafe extern "C" fn devcycle_generate_bucketed_config_from_user(
[INFO] [stdout] 357 | |     sdk_key: *const c_char,
[INFO] [stdout] 358 | |     user: *const CUser,
[INFO] [stdout] 359 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 360 | | ) -> *mut CBucketedUserConfig {
[INFO] [stdout]     | |_____________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:376:20
[INFO] [stdout]     |
[INFO] [stdout] 376 |     let user_obj = (*user).0.clone();
[INFO] [stdout]     |                    ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:424:29
[INFO] [stdout]     |
[INFO] [stdout] 424 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:410:1
[INFO] [stdout]     |
[INFO] [stdout] 410 | / pub unsafe extern "C" fn devcycle_set_config(
[INFO] [stdout] 411 | |     sdk_key: *const c_char,
[INFO] [stdout] 412 | |     config_json: *const c_char,
[INFO] [stdout] 413 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:429:33
[INFO] [stdout]     |
[INFO] [stdout] 429 |     let config_json_str = match CStr::from_ptr(config_json).to_str() {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:508:29
[INFO] [stdout]     |
[INFO] [stdout] 508 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:494:1
[INFO] [stdout]     |
[INFO] [stdout] 494 | / pub unsafe extern "C" fn devcycle_set_client_custom_data(
[INFO] [stdout] 495 | |     sdk_key: *const c_char,
[INFO] [stdout] 496 | |     custom_data_json: *const c_char,
[INFO] [stdout] 497 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:513:38
[INFO] [stdout]     |
[INFO] [stdout] 513 |     let custom_data_json_str = match CStr::from_ptr(custom_data_json).to_str() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:572:29
[INFO] [stdout]     |
[INFO] [stdout] 572 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:566:1
[INFO] [stdout]     |
[INFO] [stdout] 566 | / pub unsafe extern "C" fn devcycle_set_platform_data(
[INFO] [stdout] 567 | |     sdk_key: *const c_char,
[INFO] [stdout] 568 | |     platform_data_json: *const c_char,
[INFO] [stdout] 569 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:585:40
[INFO] [stdout]     |
[INFO] [stdout] 585 |     let platform_data_json_str = match CStr::from_ptr(platform_data_json).to_str() {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:645:29
[INFO] [stdout]     |
[INFO] [stdout] 645 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:628:1
[INFO] [stdout]     |
[INFO] [stdout] 628 | / pub unsafe extern "C" fn devcycle_init_sdk_key(
[INFO] [stdout] 629 | |     sdk_key: *const c_char,
[INFO] [stdout] 630 | |     config_json: *const c_char,
[INFO] [stdout] 631 | |     event_queue_options: *const CEventQueueOptions,
[INFO] [stdout] 632 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 633 | |     platform_data_json: *const c_char,
[INFO] [stdout] 634 | | ) -> i32 {
[INFO] [stdout]     | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:650:33
[INFO] [stdout]     |
[INFO] [stdout] 650 |     let config_json_str = match CStr::from_ptr(config_json).to_str() {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:665:15
[INFO] [stdout]     |
[INFO] [stdout] 665 |         match CStr::from_ptr(platform_data_json).to_str() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:714:9
[INFO] [stdout]     |
[INFO] [stdout] 714 |         (*event_queue_options).0.clone()
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:722:19
[INFO] [stdout]     |
[INFO] [stdout] 722 |             match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:793:29
[INFO] [stdout]     |
[INFO] [stdout] 793 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:779:1
[INFO] [stdout]     |
[INFO] [stdout] 779 | / pub unsafe extern "C" fn devcycle_variable_for_user(
[INFO] [stdout] 780 | |     sdk_key: *const c_char,
[INFO] [stdout] 781 | |     user: *const CPopulatedUser,
[INFO] [stdout] 782 | |     variable_key: *const c_char,
[INFO] [stdout] 783 | |     variable_type: *const c_char,
[INFO] [stdout] 784 | | ) -> *mut CVariableForUserResult {
[INFO] [stdout]     | |________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:797:34
[INFO] [stdout]     |
[INFO] [stdout] 797 |     let variable_key_str = match CStr::from_ptr(variable_key).to_str() {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:807:35
[INFO] [stdout]     |
[INFO] [stdout] 807 |     let variable_type_str = match CStr::from_ptr(variable_type).to_str() {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:817:26
[INFO] [stdout]     |
[INFO] [stdout] 817 |     let populated_user = (*user).0.clone();
[INFO] [stdout]     |                          ^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:859:34
[INFO] [stdout]     |
[INFO] [stdout] 859 |     match serde_json::to_string(&(*result).0.variable_value) {
[INFO] [stdout]     |                                  ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:848:1
[INFO] [stdout]     |
[INFO] [stdout] 848 | / pub unsafe extern "C" fn devcycle_variable_result_to_json(
[INFO] [stdout] 849 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 850 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:897:24
[INFO] [stdout]     |
[INFO] [stdout] 897 |     match CString::new((*result).0.variable_type.clone()) {
[INFO] [stdout]     |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:886:1
[INFO] [stdout]     |
[INFO] [stdout] 886 | / pub unsafe extern "C" fn devcycle_variable_result_get_type(
[INFO] [stdout] 887 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 888 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:926:34
[INFO] [stdout]     |
[INFO] [stdout] 926 |     match serde_json::to_string(&(*config).0) {
[INFO] [stdout]     |                                  ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:915:1
[INFO] [stdout]     |
[INFO] [stdout] 915 | / pub unsafe extern "C" fn devcycle_bucketed_config_to_json(
[INFO] [stdout] 916 | |     config: *const CBucketedUserConfig,
[INFO] [stdout] 917 | | ) -> *mut c_char {
[INFO] [stdout]     | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:954:17
[INFO] [stdout]     |
[INFO] [stdout] 954 |         let _ = Box::from_raw(result);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:952:1
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub unsafe extern "C" fn devcycle_free_variable_result(result: *mut CVariableForUserResult) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CString::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:962:17
[INFO] [stdout]     |
[INFO] [stdout] 962 |         let _ = CString::from_raw(s);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:960:1
[INFO] [stdout]     |
[INFO] [stdout] 960 | pub unsafe extern "C" fn devcycle_free_string(s: *mut c_char) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:970:17
[INFO] [stdout]     |
[INFO] [stdout] 970 |         let _ = Box::from_raw(config);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:968:1
[INFO] [stdout]     |
[INFO] [stdout] 968 | pub unsafe extern "C" fn devcycle_free_bucketed_config(config: *mut CBucketedUserConfig) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:978:17
[INFO] [stdout]     |
[INFO] [stdout] 978 |         let _ = Box::from_raw(user);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:976:1
[INFO] [stdout]     |
[INFO] [stdout] 976 | pub unsafe extern "C" fn devcycle_free_user(user: *mut CUser) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:986:17
[INFO] [stdout]     |
[INFO] [stdout] 986 |         let _ = Box::from_raw(user);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:984:1
[INFO] [stdout]     |
[INFO] [stdout] 984 | pub unsafe extern "C" fn devcycle_free_populated_user(user: *mut CPopulatedUser) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/ffi.rs:994:17
[INFO] [stdout]     |
[INFO] [stdout] 994 |         let _ = Box::from_raw(options);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/ffi.rs:992:1
[INFO] [stdout]     |
[INFO] [stdout] 992 | pub unsafe extern "C" fn devcycle_free_event_queue_options(options: *mut CEventQueueOptions) {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1009:26
[INFO] [stdout]      |
[INFO] [stdout] 1009 |     let json_str = match CStr::from_ptr(json).to_str() {
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1000:1
[INFO] [stdout]      |
[INFO] [stdout] 1000 | pub unsafe extern "C" fn devcycle_user_from_json(json: *const c_char) -> *mut CUser {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1051:29
[INFO] [stdout]      |
[INFO] [stdout] 1051 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1039:1
[INFO] [stdout]      |
[INFO] [stdout] 1039 | / pub unsafe extern "C" fn devcycle_populate_user(
[INFO] [stdout] 1040 | |     sdk_key: *const c_char,
[INFO] [stdout] 1041 | |     user: *const CUser,
[INFO] [stdout] 1042 | | ) -> *mut CPopulatedUser {
[INFO] [stdout]      | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1055:20
[INFO] [stdout]      |
[INFO] [stdout] 1055 |     let user_obj = (*user).0.clone();
[INFO] [stdout]      |                    ^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1076:26
[INFO] [stdout]      |
[INFO] [stdout] 1076 |     let json_str = match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1064:1
[INFO] [stdout]      |
[INFO] [stdout] 1064 | / pub unsafe extern "C" fn devcycle_populated_user_merge_client_custom_data(
[INFO] [stdout] 1065 | |     populated_user: *mut CPopulatedUser,
[INFO] [stdout] 1066 | |     client_custom_data_json: *const c_char,
[INFO] [stdout] 1067 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1099:20
[INFO] [stdout]      |
[INFO] [stdout] 1099 |     let pop = &mut (*populated_user).0;
[INFO] [stdout]      |                    ^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1123:24
[INFO] [stdout]      |
[INFO] [stdout] 1123 |     match CString::new((*result).0.feature_id.clone()) {
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1112:1
[INFO] [stdout]      |
[INFO] [stdout] 1112 | / pub unsafe extern "C" fn devcycle_variable_result_get_feature_id(
[INFO] [stdout] 1113 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1114 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1152:24
[INFO] [stdout]      |
[INFO] [stdout] 1152 |     match CString::new((*result).0.variation_id.clone()) {
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1141:1
[INFO] [stdout]      |
[INFO] [stdout] 1141 | / pub unsafe extern "C" fn devcycle_variable_result_get_variation_id(
[INFO] [stdout] 1142 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1143 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1181:29
[INFO] [stdout]      |
[INFO] [stdout] 1181 |     let reason_str = match &(*result).0.eval_reason {
[INFO] [stdout]      |                             ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1170:1
[INFO] [stdout]      |
[INFO] [stdout] 1170 | / pub unsafe extern "C" fn devcycle_variable_result_get_evaluation_reason(
[INFO] [stdout] 1171 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1172 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1212:12
[INFO] [stdout]      |
[INFO] [stdout] 1212 |     match &(*result).0.eval_reason {
[INFO] [stdout]      |            ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1202:1
[INFO] [stdout]      |
[INFO] [stdout] 1202 | / pub unsafe extern "C" fn devcycle_variable_result_is_error(
[INFO] [stdout] 1203 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1204 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1238:12
[INFO] [stdout]      |
[INFO] [stdout] 1238 |     match &(*result).0.eval_reason {
[INFO] [stdout]      |            ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1227:1
[INFO] [stdout]      |
[INFO] [stdout] 1227 | / pub unsafe extern "C" fn devcycle_variable_result_get_error(
[INFO] [stdout] 1228 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1229 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1273:61
[INFO] [stdout]      |
[INFO] [stdout] 1273 |     let (is_error, eval_reason_str, error_message) = match &(*result).0.eval_reason {
[INFO] [stdout]      |                                                             ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1262:1
[INFO] [stdout]      |
[INFO] [stdout] 1262 | / pub unsafe extern "C" fn devcycle_variable_result_to_full_json(
[INFO] [stdout] 1263 | |     result: *const CVariableForUserResult,
[INFO] [stdout] 1264 | | ) -> *mut c_char {
[INFO] [stdout]      | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1278:25
[INFO] [stdout]      |
[INFO] [stdout] 1278 |         "variableType": (*result).0.variable_type,
[INFO] [stdout]      |                         ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1279:26
[INFO] [stdout]      |
[INFO] [stdout] 1279 |         "variableValue": (*result).0.variable_value,
[INFO] [stdout]      |                          ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1280:22
[INFO] [stdout]      |
[INFO] [stdout] 1280 |         "featureId": (*result).0.feature_id,
[INFO] [stdout]      |                      ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1281:24
[INFO] [stdout]      |
[INFO] [stdout] 1281 |         "variationId": (*result).0.variation_id,
[INFO] [stdout]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1347:29
[INFO] [stdout]      |
[INFO] [stdout] 1347 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]     --> src/ffi.rs:1329:1
[INFO] [stdout]      |
[INFO] [stdout] 1329 | / pub unsafe extern "C" fn devcycle_queue_event(
[INFO] [stdout] 1330 | |     sdk_key: *const c_char,
[INFO] [stdout] 1331 | |     user_json: *const c_char,
[INFO] [stdout] 1332 | |     event_type_str: *const c_char,
[INFO] [stdout] ...    |
[INFO] [stdout] 1336 | |     meta_data_json: *const c_char,
[INFO] [stdout] 1337 | | ) -> i32 {
[INFO] [stdout]      | |________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1351:31
[INFO] [stdout]      |
[INFO] [stdout] 1351 |     let user_json_str = match CStr::from_ptr(user_json).to_str() {
[INFO] [stdout]      |                               ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1361:32
[INFO] [stdout]      |
[INFO] [stdout] 1361 |     let event_type_raw = match CStr::from_ptr(event_type_str).to_str() {
[INFO] [stdout]      |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1387:15
[INFO] [stdout]      |
[INFO] [stdout] 1387 |         match CStr::from_ptr(custom_type).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1402:15
[INFO] [stdout]      |
[INFO] [stdout] 1402 |         match CStr::from_ptr(target).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stdout]     --> src/ffi.rs:1418:15
[INFO] [stdout]      |
[INFO] [stdout] 1418 |         match CStr::from_ptr(meta_data_json).to_str() {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]      |
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SSEHost` is never constructed
[INFO] [stdout]   --> src/config/config.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct SSEHost {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_feature_for_key` is never used
[INFO] [stdout]    --> src/config/config.rs:179:19
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl ConfigBody {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub(crate) fn get_feature_for_key(&self, key: &str) -> Option<&ConfigFeature> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target`, `custom_type`, `client_date`, `value`, and `meta_data` are never read
[INFO] [stdout]    --> src/events/event.rs:109:16
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub(crate) struct Event {
[INFO] [stdout]     |                   ----- fields in this struct
[INFO] [stdout] 108 |     pub(crate) event_type: EventType,
[INFO] [stdout] 109 |     pub(crate) target: String,
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 110 |     pub(crate) custom_type: String,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 111 |     pub(crate) user_id: String,
[INFO] [stdout] 112 |     pub(crate) client_date: std::time::Instant,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 113 |     pub(crate) value: f64,
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 114 |     pub(crate) feature_vars: HashMap<String, String>,
[INFO] [stdout] 115 |     pub(crate) meta_data: HashMap<String, serde_json::Value>,
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user` is never read
[INFO] [stdout]    --> src/events/event.rs:124:16
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub(crate) struct UserEventsBatchRecord {
[INFO] [stdout]     |                   --------------------- field in this struct
[INFO] [stdout] 124 |     pub(crate) user: PopulatedUser,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `event_type`, `variable_key`, `feature_id`, `variation_id`, and `eval_metadata` are never read
[INFO] [stdout]    --> src/events/event.rs:129:16
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub(crate) struct AggEventQueueRawMessage {
[INFO] [stdout]     |                   ----------------------- fields in this struct
[INFO] [stdout] 129 |     pub(crate) event_type: EventType,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 130 |     pub(crate) variable_key: String,
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 131 |     pub(crate) feature_id: String,
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 132 |     pub(crate) variation_id: String,
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 133 |     pub(crate) eval_metadata: EvalReasonAggMap,
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `platform_data`, `agg_event_queue_raw_rx`, `agg_event_queue`, and `queue_access_mutex` are never read
[INFO] [stdout]   --> src/events/event_queue.rs:52:16
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct EventQueue {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 51 |     pub(crate) sdk_key: String,
[INFO] [stdout] 52 |     pub(crate) platform_data: Arc<PlatformData>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^
[INFO] [stdout] 53 |     pub(crate) agg_event_queue_raw_tx: mpsc::Sender<AggEventQueueRawMessage>,
[INFO] [stdout] 54 |     pub(crate) agg_event_queue_raw_rx: mpsc::Receiver<AggEventQueueRawMessage>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub(crate) agg_event_queue: AggregateEventQueue,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub(crate) queue_access_mutex: tokio::sync::Mutex<()>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `merge_agg_event_queue_keys`, `process_user_events`, `process_aggregate_event`, and `process_events` are never used
[INFO] [stdout]    --> src/events/event_queue.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout]  67 | impl EventQueue {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub(crate) async fn merge_agg_event_queue_keys(&mut self, config_body: &ConfigBody) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     async unsafe fn process_user_events(
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     pub(crate) async fn process_aggregate_event(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub(crate) async fn process_events(
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_event_queue` is never used
[INFO] [stdout]   --> src/events/event_queue_manager.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub(crate) fn has_event_queue(sdk_key: &str) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FilterType` is never used
[INFO] [stdout]   --> src/segmentation/filters.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum FilterType {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FilterSubType` is never used
[INFO] [stdout]   --> src/segmentation/filters.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum FilterSubType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FilterOrOperator` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:446:11
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub trait FilterOrOperator {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PassFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:524:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | pub struct PassFilter {}
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `evaluate` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:526:12
[INFO] [stdout]     |
[INFO] [stdout] 525 | impl PassFilter {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 526 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FailFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:535:12
[INFO] [stdout]     |
[INFO] [stdout] 535 | pub struct FailFilter {}
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `evaluate` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:537:12
[INFO] [stdout]     |
[INFO] [stdout] 536 | impl FailFilter {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 537 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AllFilter` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:546:10
[INFO] [stdout]     |
[INFO] [stdout] 546 | pub type AllFilter = PassFilter;
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `OptInFilter` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:547:10
[INFO] [stdout]     |
[INFO] [stdout] 547 | pub type OptInFilter = FailFilter;
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:550:12
[INFO] [stdout]     |
[INFO] [stdout] 550 | pub struct BaseFilter {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserFilter` is never constructed
[INFO] [stdout]    --> src/segmentation/filters.rs:557:12
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct UserFilter {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `evaluate` and `compile` are never used
[INFO] [stdout]    --> src/segmentation/filters.rs:566:12
[INFO] [stdout]     |
[INFO] [stdout] 565 | impl UserFilter {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 566 |     pub fn evaluate(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub fn compile(&mut self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `FilterTrait` is never used
[INFO] [stdout]    --> src/segmentation/filters.rs:647:7
[INFO] [stdout]     |
[INFO] [stdout] 647 | trait FilterTrait {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Audience` is never constructed
[INFO] [stdout]   --> src/segmentation/target.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Audience {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SemverOptions` is never constructed
[INFO] [stdout]  --> src/segmentation/versioncompare.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct SemverOptions {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Compare` is never used
[INFO] [stdout]   --> src/segmentation/versioncompare.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | trait Compare {
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_valid_parts` is never used
[INFO] [stdout]   --> src/segmentation/versioncompare.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn has_valid_parts(lexicographical: bool, parts: &[String]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `user` and `feature_vars` are never read
[INFO] [stdout]   --> src/user/user.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct UserFeatureData<'a> {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 70 |     user: &'a User,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 71 |     feature_vars: &'a HashMap<String, String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VARIABLE_EVALUATED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const VARIABLE_EVALUATED_EVENT: &str = "variableEvaluated";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VARIABLE_DEFAULTED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const VARIABLE_DEFAULTED_EVENT: &str = "variableDefaulted";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AGG_VARIABLE_EVALUATED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const AGG_VARIABLE_EVALUATED_EVENT: &str = "aggVariableEvaluated";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AGG_VARIABLE_DEFAULTED_EVENT` is never used
[INFO] [stdout]  --> src/util/constants.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const AGG_VARIABLE_DEFAULTED_EVENT: &str = "aggVariableDefaulted";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUB_TYPE_IP` is never used
[INFO] [stdout]   --> src/util/constants.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const SUB_TYPE_IP: &str = "ip";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_STRING` is never used
[INFO] [stdout]   --> src/util/constants.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const DATA_KEY_TYPE_STRING: &str = "String";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_BOOLEAN` is never used
[INFO] [stdout]   --> src/util/constants.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub const DATA_KEY_TYPE_BOOLEAN: &str = "Boolean";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_KEY_TYPE_NUMBER` is never used
[INFO] [stdout]   --> src/util/constants.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const DATA_KEY_TYPE_NUMBER: &str = "Number";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROLLOUT_TYPE_PERCENTAGE` is never used
[INFO] [stdout]   --> src/util/constants.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const ROLLOUT_TYPE_PERCENTAGE: &str = "percentage";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MISSING_VARIABLE` is never used
[INFO] [stdout]   --> src/util/errors.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const MISSING_VARIABLE: DevCycleError = DevCycleError {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MISSING_VARIATION` is never used
[INFO] [stdout]   --> src/util/errors.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const MISSING_VARIATION: DevCycleError = DevCycleError {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_user_does_not_qualify_for_targets` is never used
[INFO] [stdout]   --> src/util/errors.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub(crate) fn failed_user_does_not_qualify_for_targets() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_user_does_not_qualify_for_rollouts` is never used
[INFO] [stdout]   --> src/util/errors.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub(crate) fn failed_user_does_not_qualify_for_rollouts() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `variable_type_mismatch` is never used
[INFO] [stdout]   --> src/util/errors.rs:83:15
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub(crate) fn variable_type_mismatch() -> DevCycleError {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `failed_to_set_client_custom_data` is never used
[INFO] [stdout]   --> src/util/errors.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn failed_to_set_client_custom_data() -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_error` is never used
[INFO] [stdout]   --> src/util/errors.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn parse_error(msg: String) -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `missing_field` is never used
[INFO] [stdout]   --> src/util/errors.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn missing_field(field: String) -> DevCycleError {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 07s
[INFO] running `Command { std: "docker" "inspect" "9c421834857a8bef0e81394d384d74c1dd4d6d389ad2d8c032f6ce356f13df2a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9c421834857a8bef0e81394d384d74c1dd4d6d389ad2d8c032f6ce356f13df2a", kill_on_drop: false }`
[INFO] [stdout] 9c421834857a8bef0e81394d384d74c1dd4d6d389ad2d8c032f6ce356f13df2a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] e993c0442329a1d64dbab53bd51d0564e3c0f5d3287a821ec748505a3a0f0ff4
[INFO] running `Command { std: "docker" "start" "-a" "e993c0442329a1d64dbab53bd51d0564e3c0f5d3287a821ec748505a3a0f0ff4", kill_on_drop: false }`
[INFO] [stderr] warning: unexpected `cfg` condition value: `protobuf`
[INFO] [stderr]   --> src/lib.rs:61:7
[INFO] [stderr]    |
[INFO] [stderr] 61 | #[cfg(feature = "protobuf")]
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: expected values for `feature` are: `console_error_panic_hook`, `default`, `libc`, `serde-wasm-bindgen`, `wasm`, `wasm-bindgen`, and `wasm-bindgen-futures`
[INFO] [stderr]    = help: consider adding `protobuf` as a feature in `Cargo.toml`
[INFO] [stderr]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stderr]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `bucketing::*`
[INFO] [stderr]   --> src/bucketing/mod.rs:10:16
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub(crate) use bucketing::*;
[INFO] [stderr]    |                ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `event::*`
[INFO] [stderr]   --> src/events/mod.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use event::*;
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `filters::*`
[INFO] [stderr]  --> src/segmentation/mod.rs:8:16
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub(crate) use filters::*;
[INFO] [stderr]   |                ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `errors::DevCycleError`
[INFO] [stderr]  --> src/util/mod.rs:8:9
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub use errors::DevCycleError;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/segmentation/filters.rs:193:51
[INFO] [stderr]     |
[INFO] [stderr] 193 |                     constants::COMPARATOR_EQUAL | "=" => {
[INFO] [stderr]     |                     ---------------------------   ^^^ no value can reach this
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     matches all the relevant values
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/segmentation/filters.rs:199:61
[INFO] [stderr]     |
[INFO] [stderr] 199 | ...                   constants::COMPARATOR_GREATER | ">" => result > 0.0,
[INFO] [stderr]     |                       -----------------------------   ^^^ no value can reach this
[INFO] [stderr]     |                       |
[INFO] [stderr]     |                       matches all the relevant values
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/segmentation/filters.rs:200:67
[INFO] [stderr]     |
[INFO] [stderr] 200 | ...                   constants::COMPARATOR_GREATER_EQUAL | ">=" => result >= 0.0,
[INFO] [stderr]     |                       -----------------------------------   ^^^^ no value can reach this
[INFO] [stderr]     |                       |
[INFO] [stderr]     |                       matches all the relevant values
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/segmentation/filters.rs:201:58
[INFO] [stderr]     |
[INFO] [stderr] 201 | ...                   constants::COMPARATOR_LESS | "<" => result < 0.0,
[INFO] [stderr]     |                       --------------------------   ^^^ no value can reach this
[INFO] [stderr]     |                       |
[INFO] [stderr]     |                       matches all the relevant values
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/segmentation/filters.rs:202:64
[INFO] [stderr]     |
[INFO] [stderr] 202 | ...                   constants::COMPARATOR_LESS_EQUAL | "<=" => result <= 0.0,
[INFO] [stderr]     |                       --------------------------------   ^^^^ no value can reach this
[INFO] [stderr]     |                       |
[INFO] [stderr]     |                       matches all the relevant values
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/segmentation/filters.rs:287:47
[INFO] [stderr]     |
[INFO] [stderr] 287 |                 constants::COMPARATOR_EQUAL | "=" => user_value == filter_value,
[INFO] [stderr]     |                 ---------------------------   ^^^ no value can reach this
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 matches all the relevant values
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:214:11
[INFO] [stderr]     |
[INFO] [stderr] 214 |     match CStr::from_ptr(sdk_key).to_str() {
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:206:1
[INFO] [stderr]     |
[INFO] [stderr] 206 | unsafe fn parse_sdk_key(sdk_key: *const c_char) -> Result<String, DevCycleFFIErrorCode> {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:236:29
[INFO] [stderr]     |
[INFO] [stderr] 236 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:230:1
[INFO] [stderr]     |
[INFO] [stderr] 230 | / pub unsafe extern "C" fn devcycle_init_event_queue(
[INFO] [stderr] 231 | |     sdk_key: *const c_char,
[INFO] [stderr] 232 | |     options: *const CEventQueueOptions,
[INFO] [stderr] 233 | | ) -> i32 {
[INFO] [stderr]     | |________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:244:9
[INFO] [stderr]     |
[INFO] [stderr] 244 |         (*options).0.clone()
[INFO] [stderr]     |         ^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:293:29
[INFO] [stderr]     |
[INFO] [stderr] 293 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:278:1
[INFO] [stderr]     |
[INFO] [stderr] 278 | / pub unsafe extern "C" fn devcycle_generate_bucketed_config(
[INFO] [stderr] 279 | |     sdk_key: *const c_char,
[INFO] [stderr] 280 | |     user: *const CPopulatedUser,
[INFO] [stderr] 281 | |     client_custom_data_json: *const c_char,
[INFO] [stderr] 282 | | ) -> *mut CBucketedUserConfig {
[INFO] [stderr]     | |_____________________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:298:26
[INFO] [stderr]     |
[INFO] [stderr] 298 |     let populated_user = (*user).0.clone();
[INFO] [stderr]     |                          ^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:304:19
[INFO] [stderr]     |
[INFO] [stderr] 304 |             match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:371:29
[INFO] [stderr]     |
[INFO] [stderr] 371 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:356:1
[INFO] [stderr]     |
[INFO] [stderr] 356 | / pub unsafe extern "C" fn devcycle_generate_bucketed_config_from_user(
[INFO] [stderr] 357 | |     sdk_key: *const c_char,
[INFO] [stderr] 358 | |     user: *const CUser,
[INFO] [stderr] 359 | |     client_custom_data_json: *const c_char,
[INFO] [stderr] 360 | | ) -> *mut CBucketedUserConfig {
[INFO] [stderr]     | |_____________________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:376:20
[INFO] [stderr]     |
[INFO] [stderr] 376 |     let user_obj = (*user).0.clone();
[INFO] [stderr]     |                    ^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:424:29
[INFO] [stderr]     |
[INFO] [stderr] 424 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:410:1
[INFO] [stderr]     |
[INFO] [stderr] 410 | / pub unsafe extern "C" fn devcycle_set_config(
[INFO] [stderr] 411 | |     sdk_key: *const c_char,
[INFO] [stderr] 412 | |     config_json: *const c_char,
[INFO] [stderr] 413 | | ) -> i32 {
[INFO] [stderr]     | |________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:429:33
[INFO] [stderr]     |
[INFO] [stderr] 429 |     let config_json_str = match CStr::from_ptr(config_json).to_str() {
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:508:29
[INFO] [stderr]     |
[INFO] [stderr] 508 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:494:1
[INFO] [stderr]     |
[INFO] [stderr] 494 | / pub unsafe extern "C" fn devcycle_set_client_custom_data(
[INFO] [stderr] 495 | |     sdk_key: *const c_char,
[INFO] [stderr] 496 | |     custom_data_json: *const c_char,
[INFO] [stderr] 497 | | ) -> i32 {
[INFO] [stderr]     | |________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:513:38
[INFO] [stderr]     |
[INFO] [stderr] 513 |     let custom_data_json_str = match CStr::from_ptr(custom_data_json).to_str() {
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:572:29
[INFO] [stderr]     |
[INFO] [stderr] 572 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:566:1
[INFO] [stderr]     |
[INFO] [stderr] 566 | / pub unsafe extern "C" fn devcycle_set_platform_data(
[INFO] [stderr] 567 | |     sdk_key: *const c_char,
[INFO] [stderr] 568 | |     platform_data_json: *const c_char,
[INFO] [stderr] 569 | | ) -> i32 {
[INFO] [stderr]     | |________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:585:40
[INFO] [stderr]     |
[INFO] [stderr] 585 |     let platform_data_json_str = match CStr::from_ptr(platform_data_json).to_str() {
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:645:29
[INFO] [stderr]     |
[INFO] [stderr] 645 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:628:1
[INFO] [stderr]     |
[INFO] [stderr] 628 | / pub unsafe extern "C" fn devcycle_init_sdk_key(
[INFO] [stderr] 629 | |     sdk_key: *const c_char,
[INFO] [stderr] 630 | |     config_json: *const c_char,
[INFO] [stderr] 631 | |     event_queue_options: *const CEventQueueOptions,
[INFO] [stderr] 632 | |     client_custom_data_json: *const c_char,
[INFO] [stderr] 633 | |     platform_data_json: *const c_char,
[INFO] [stderr] 634 | | ) -> i32 {
[INFO] [stderr]     | |________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:650:33
[INFO] [stderr]     |
[INFO] [stderr] 650 |     let config_json_str = match CStr::from_ptr(config_json).to_str() {
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:665:15
[INFO] [stderr]     |
[INFO] [stderr] 665 |         match CStr::from_ptr(platform_data_json).to_str() {
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:714:9
[INFO] [stderr]     |
[INFO] [stderr] 714 |         (*event_queue_options).0.clone()
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:722:19
[INFO] [stderr]     |
[INFO] [stderr] 722 |             match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:793:29
[INFO] [stderr]     |
[INFO] [stderr] 793 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:779:1
[INFO] [stderr]     |
[INFO] [stderr] 779 | / pub unsafe extern "C" fn devcycle_variable_for_user(
[INFO] [stderr] 780 | |     sdk_key: *const c_char,
[INFO] [stderr] 781 | |     user: *const CPopulatedUser,
[INFO] [stderr] 782 | |     variable_key: *const c_char,
[INFO] [stderr] 783 | |     variable_type: *const c_char,
[INFO] [stderr] 784 | | ) -> *mut CVariableForUserResult {
[INFO] [stderr]     | |________________________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:797:34
[INFO] [stderr]     |
[INFO] [stderr] 797 |     let variable_key_str = match CStr::from_ptr(variable_key).to_str() {
[INFO] [stderr]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:807:35
[INFO] [stderr]     |
[INFO] [stderr] 807 |     let variable_type_str = match CStr::from_ptr(variable_type).to_str() {
[INFO] [stderr]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:817:26
[INFO] [stderr]     |
[INFO] [stderr] 817 |     let populated_user = (*user).0.clone();
[INFO] [stderr]     |                          ^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:859:34
[INFO] [stderr]     |
[INFO] [stderr] 859 |     match serde_json::to_string(&(*result).0.variable_value) {
[INFO] [stderr]     |                                  ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:848:1
[INFO] [stderr]     |
[INFO] [stderr] 848 | / pub unsafe extern "C" fn devcycle_variable_result_to_json(
[INFO] [stderr] 849 | |     result: *const CVariableForUserResult,
[INFO] [stderr] 850 | | ) -> *mut c_char {
[INFO] [stderr]     | |________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:897:24
[INFO] [stderr]     |
[INFO] [stderr] 897 |     match CString::new((*result).0.variable_type.clone()) {
[INFO] [stderr]     |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:886:1
[INFO] [stderr]     |
[INFO] [stderr] 886 | / pub unsafe extern "C" fn devcycle_variable_result_get_type(
[INFO] [stderr] 887 | |     result: *const CVariableForUserResult,
[INFO] [stderr] 888 | | ) -> *mut c_char {
[INFO] [stderr]     | |________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:926:34
[INFO] [stderr]     |
[INFO] [stderr] 926 |     match serde_json::to_string(&(*config).0) {
[INFO] [stderr]     |                                  ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:915:1
[INFO] [stderr]     |
[INFO] [stderr] 915 | / pub unsafe extern "C" fn devcycle_bucketed_config_to_json(
[INFO] [stderr] 916 | |     config: *const CBucketedUserConfig,
[INFO] [stderr] 917 | | ) -> *mut c_char {
[INFO] [stderr]     | |________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:954:17
[INFO] [stderr]     |
[INFO] [stderr] 954 |         let _ = Box::from_raw(result);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:952:1
[INFO] [stderr]     |
[INFO] [stderr] 952 | pub unsafe extern "C" fn devcycle_free_variable_result(result: *mut CVariableForUserResult) {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CString::from_raw` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:962:17
[INFO] [stderr]     |
[INFO] [stderr] 962 |         let _ = CString::from_raw(s);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:960:1
[INFO] [stderr]     |
[INFO] [stderr] 960 | pub unsafe extern "C" fn devcycle_free_string(s: *mut c_char) {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:970:17
[INFO] [stderr]     |
[INFO] [stderr] 970 |         let _ = Box::from_raw(config);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:968:1
[INFO] [stderr]     |
[INFO] [stderr] 968 | pub unsafe extern "C" fn devcycle_free_bucketed_config(config: *mut CBucketedUserConfig) {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:978:17
[INFO] [stderr]     |
[INFO] [stderr] 978 |         let _ = Box::from_raw(user);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:976:1
[INFO] [stderr]     |
[INFO] [stderr] 976 | pub unsafe extern "C" fn devcycle_free_user(user: *mut CUser) {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:986:17
[INFO] [stderr]     |
[INFO] [stderr] 986 |         let _ = Box::from_raw(user);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:984:1
[INFO] [stderr]     |
[INFO] [stderr] 984 | pub unsafe extern "C" fn devcycle_free_populated_user(user: *mut CPopulatedUser) {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::boxed::Box::<T>::from_raw` is unsafe and requires unsafe block
[INFO] [stderr]    --> src/ffi.rs:994:17
[INFO] [stderr]     |
[INFO] [stderr] 994 |         let _ = Box::from_raw(options);
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/ffi.rs:992:1
[INFO] [stderr]     |
[INFO] [stderr] 992 | pub unsafe extern "C" fn devcycle_free_event_queue_options(options: *mut CEventQueueOptions) {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1009:26
[INFO] [stderr]      |
[INFO] [stderr] 1009 |     let json_str = match CStr::from_ptr(json).to_str() {
[INFO] [stderr]      |                          ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1000:1
[INFO] [stderr]      |
[INFO] [stderr] 1000 | pub unsafe extern "C" fn devcycle_user_from_json(json: *const c_char) -> *mut CUser {
[INFO] [stderr]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1051:29
[INFO] [stderr]      |
[INFO] [stderr] 1051 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]      |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1039:1
[INFO] [stderr]      |
[INFO] [stderr] 1039 | / pub unsafe extern "C" fn devcycle_populate_user(
[INFO] [stderr] 1040 | |     sdk_key: *const c_char,
[INFO] [stderr] 1041 | |     user: *const CUser,
[INFO] [stderr] 1042 | | ) -> *mut CPopulatedUser {
[INFO] [stderr]      | |________________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1055:20
[INFO] [stderr]      |
[INFO] [stderr] 1055 |     let user_obj = (*user).0.clone();
[INFO] [stderr]      |                    ^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1076:26
[INFO] [stderr]      |
[INFO] [stderr] 1076 |     let json_str = match CStr::from_ptr(client_custom_data_json).to_str() {
[INFO] [stderr]      |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1064:1
[INFO] [stderr]      |
[INFO] [stderr] 1064 | / pub unsafe extern "C" fn devcycle_populated_user_merge_client_custom_data(
[INFO] [stderr] 1065 | |     populated_user: *mut CPopulatedUser,
[INFO] [stderr] 1066 | |     client_custom_data_json: *const c_char,
[INFO] [stderr] 1067 | | ) -> i32 {
[INFO] [stderr]      | |________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1099:20
[INFO] [stderr]      |
[INFO] [stderr] 1099 |     let pop = &mut (*populated_user).0;
[INFO] [stderr]      |                    ^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1123:24
[INFO] [stderr]      |
[INFO] [stderr] 1123 |     match CString::new((*result).0.feature_id.clone()) {
[INFO] [stderr]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1112:1
[INFO] [stderr]      |
[INFO] [stderr] 1112 | / pub unsafe extern "C" fn devcycle_variable_result_get_feature_id(
[INFO] [stderr] 1113 | |     result: *const CVariableForUserResult,
[INFO] [stderr] 1114 | | ) -> *mut c_char {
[INFO] [stderr]      | |________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1152:24
[INFO] [stderr]      |
[INFO] [stderr] 1152 |     match CString::new((*result).0.variation_id.clone()) {
[INFO] [stderr]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1141:1
[INFO] [stderr]      |
[INFO] [stderr] 1141 | / pub unsafe extern "C" fn devcycle_variable_result_get_variation_id(
[INFO] [stderr] 1142 | |     result: *const CVariableForUserResult,
[INFO] [stderr] 1143 | | ) -> *mut c_char {
[INFO] [stderr]      | |________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1181:29
[INFO] [stderr]      |
[INFO] [stderr] 1181 |     let reason_str = match &(*result).0.eval_reason {
[INFO] [stderr]      |                             ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1170:1
[INFO] [stderr]      |
[INFO] [stderr] 1170 | / pub unsafe extern "C" fn devcycle_variable_result_get_evaluation_reason(
[INFO] [stderr] 1171 | |     result: *const CVariableForUserResult,
[INFO] [stderr] 1172 | | ) -> *mut c_char {
[INFO] [stderr]      | |________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1212:12
[INFO] [stderr]      |
[INFO] [stderr] 1212 |     match &(*result).0.eval_reason {
[INFO] [stderr]      |            ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1202:1
[INFO] [stderr]      |
[INFO] [stderr] 1202 | / pub unsafe extern "C" fn devcycle_variable_result_is_error(
[INFO] [stderr] 1203 | |     result: *const CVariableForUserResult,
[INFO] [stderr] 1204 | | ) -> i32 {
[INFO] [stderr]      | |________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1238:12
[INFO] [stderr]      |
[INFO] [stderr] 1238 |     match &(*result).0.eval_reason {
[INFO] [stderr]      |            ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1227:1
[INFO] [stderr]      |
[INFO] [stderr] 1227 | / pub unsafe extern "C" fn devcycle_variable_result_get_error(
[INFO] [stderr] 1228 | |     result: *const CVariableForUserResult,
[INFO] [stderr] 1229 | | ) -> *mut c_char {
[INFO] [stderr]      | |________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1273:61
[INFO] [stderr]      |
[INFO] [stderr] 1273 |     let (is_error, eval_reason_str, error_message) = match &(*result).0.eval_reason {
[INFO] [stderr]      |                                                             ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1262:1
[INFO] [stderr]      |
[INFO] [stderr] 1262 | / pub unsafe extern "C" fn devcycle_variable_result_to_full_json(
[INFO] [stderr] 1263 | |     result: *const CVariableForUserResult,
[INFO] [stderr] 1264 | | ) -> *mut c_char {
[INFO] [stderr]      | |________________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1278:25
[INFO] [stderr]      |
[INFO] [stderr] 1278 |         "variableType": (*result).0.variable_type,
[INFO] [stderr]      |                         ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1279:26
[INFO] [stderr]      |
[INFO] [stderr] 1279 |         "variableValue": (*result).0.variable_value,
[INFO] [stderr]      |                          ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1280:22
[INFO] [stderr]      |
[INFO] [stderr] 1280 |         "featureId": (*result).0.feature_id,
[INFO] [stderr]      |                      ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1281:24
[INFO] [stderr]      |
[INFO] [stderr] 1281 |         "variationId": (*result).0.variation_id,
[INFO] [stderr]      |                        ^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `ffi::parse_sdk_key` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1347:29
[INFO] [stderr]      |
[INFO] [stderr] 1347 |     let sdk_key_str = match parse_sdk_key(sdk_key) {
[INFO] [stderr]      |                             ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]     --> src/ffi.rs:1329:1
[INFO] [stderr]      |
[INFO] [stderr] 1329 | / pub unsafe extern "C" fn devcycle_queue_event(
[INFO] [stderr] 1330 | |     sdk_key: *const c_char,
[INFO] [stderr] 1331 | |     user_json: *const c_char,
[INFO] [stderr] 1332 | |     event_type_str: *const c_char,
[INFO] [stderr] ...    |
[INFO] [stderr] 1336 | |     meta_data_json: *const c_char,
[INFO] [stderr] 1337 | | ) -> i32 {
[INFO] [stderr]      | |________^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1351:31
[INFO] [stderr]      |
[INFO] [stderr] 1351 |     let user_json_str = match CStr::from_ptr(user_json).to_str() {
[INFO] [stderr]      |                               ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1361:32
[INFO] [stderr]      |
[INFO] [stderr] 1361 |     let event_type_raw = match CStr::from_ptr(event_type_str).to_str() {
[INFO] [stderr]      |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1387:15
[INFO] [stderr]      |
[INFO] [stderr] 1387 |         match CStr::from_ptr(custom_type).to_str() {
[INFO] [stderr]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1402:15
[INFO] [stderr]      |
[INFO] [stderr] 1402 |         match CStr::from_ptr(target).to_str() {
[INFO] [stderr]      |               ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ffi::CStr::from_ptr` is unsafe and requires unsafe block
[INFO] [stderr]     --> src/ffi.rs:1418:15
[INFO] [stderr]      |
[INFO] [stderr] 1418 |         match CStr::from_ptr(meta_data_json).to_str() {
[INFO] [stderr]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stderr]      |
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]      = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BucketingConfiguration` is never constructed
[INFO] [stderr]   --> src/config/config.rs:70:19
[INFO] [stderr]    |
[INFO] [stderr] 70 | pub(crate) struct BucketingConfiguration {
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SSEHost` is never constructed
[INFO] [stderr]   --> src/config/config.rs:84:12
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub struct SSEHost {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_feature_for_key` is never used
[INFO] [stderr]    --> src/config/config.rs:179:19
[INFO] [stderr]     |
[INFO] [stderr] 128 | impl ConfigBody {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 179 |     pub(crate) fn get_feature_for_key(&self, key: &str) -> Option<&ConfigFeature> {
[INFO] [stderr]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `has_config` is never used
[INFO] [stderr]   --> src/config/configmanager.rs:19:15
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub(crate) fn has_config(sdk_key: &str) -> bool {
[INFO] [stderr]    |               ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `target`, `custom_type`, `client_date`, `value`, and `meta_data` are never read
[INFO] [stderr]    --> src/events/event.rs:109:16
[INFO] [stderr]     |
[INFO] [stderr] 107 | pub(crate) struct Event {
[INFO] [stderr]     |                   ----- fields in this struct
[INFO] [stderr] 108 |     pub(crate) event_type: EventType,
[INFO] [stderr] 109 |     pub(crate) target: String,
[INFO] [stderr]     |                ^^^^^^
[INFO] [stderr] 110 |     pub(crate) custom_type: String,
[INFO] [stderr]     |                ^^^^^^^^^^^
[INFO] [stderr] 111 |     pub(crate) user_id: String,
[INFO] [stderr] 112 |     pub(crate) client_date: std::time::Instant,
[INFO] [stderr]     |                ^^^^^^^^^^^
[INFO] [stderr] 113 |     pub(crate) value: f64,
[INFO] [stderr]     |                ^^^^^
[INFO] [stderr] 114 |     pub(crate) feature_vars: HashMap<String, String>,
[INFO] [stderr] 115 |     pub(crate) meta_data: HashMap<String, serde_json::Value>,
[INFO] [stderr]     |                ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `event` and `user` are never read
[INFO] [stderr]    --> src/events/event.rs:119:16
[INFO] [stderr]     |
[INFO] [stderr] 118 | pub(crate) struct UserEventData {
[INFO] [stderr]     |                   ------------- fields in this struct
[INFO] [stderr] 119 |     pub(crate) event: Event,
[INFO] [stderr]     |                ^^^^^
[INFO] [stderr] 120 |     pub(crate) user: User,
[INFO] [stderr]     |                ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `user` is never read
[INFO] [stderr]    --> src/events/event.rs:124:16
[INFO] [stderr]     |
[INFO] [stderr] 123 | pub(crate) struct UserEventsBatchRecord {
[INFO] [stderr]     |                   --------------------- field in this struct
[INFO] [stderr] 124 |     pub(crate) user: PopulatedUser,
[INFO] [stderr]     |                ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `event_type`, `variable_key`, `feature_id`, `variation_id`, and `eval_metadata` are never read
[INFO] [stderr]    --> src/events/event.rs:129:16
[INFO] [stderr]     |
[INFO] [stderr] 128 | pub(crate) struct AggEventQueueRawMessage {
[INFO] [stderr]     |                   ----------------------- fields in this struct
[INFO] [stderr] 129 |     pub(crate) event_type: EventType,
[INFO] [stderr]     |                ^^^^^^^^^^
[INFO] [stderr] 130 |     pub(crate) variable_key: String,
[INFO] [stderr]     |                ^^^^^^^^^^^^
[INFO] [stderr] 131 |     pub(crate) feature_id: String,
[INFO] [stderr]     |                ^^^^^^^^^^
[INFO] [stderr] 132 |     pub(crate) variation_id: String,
[INFO] [stderr]     |                ^^^^^^^^^^^^
[INFO] [stderr] 133 |     pub(crate) eval_metadata: EvalReasonAggMap,
[INFO] [stderr]     |                ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/events/event_queue.rs:51:16
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub struct EventQueue {
[INFO] [stderr]    |            ---------- fields in this struct
[INFO] [stderr] 51 |     pub(crate) sdk_key: String,
[INFO] [stderr]    |                ^^^^^^^
[INFO] [stderr] 52 |     pub(crate) platform_data: Arc<PlatformData>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^
[INFO] [stderr] 53 |     pub(crate) agg_event_queue_raw_tx: mpsc::Sender<AggEventQueueRawMessage>,
[INFO] [stderr] 54 |     pub(crate) agg_event_queue_raw_rx: mpsc::Receiver<AggEventQueueRawMessage>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 55 |     pub(crate) user_event_queue_raw_tx: mpsc::Sender<UserEventData>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 56 |     pub(crate) user_event_queue_raw_rx: mpsc::Receiver<UserEventData>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 57 |     pub(crate) agg_event_queue: AggregateEventQueue,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 60 |     pub(crate) queue_access_mutex: tokio::sync::Mutex<()>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 61 |     pub(crate) events_flushed: AtomicI64,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^
[INFO] [stderr] 62 |     pub(crate) events_dropped: AtomicI64,
[INFO] [stderr] 63 |     pub(crate) events_reported: AtomicI64,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `queue_event`, `merge_agg_event_queue_keys`, `process_user_events`, `process_aggregate_event`, and `process_events` are never used
[INFO] [stderr]    --> src/events/event_queue.rs:172:18
[INFO] [stderr]     |
[INFO] [stderr]  67 | impl EventQueue {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 172 |     pub async fn queue_event(&self, user: User, event: Event) -> Result<bool, DevCycleError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 187 |     pub(crate) async fn merge_agg_event_queue_keys(&mut self, config_body: &ConfigBody) {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 286 |     async unsafe fn process_user_events(
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 331 |     pub(crate) async fn process_aggregate_event(
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 380 |     pub(crate) async fn process_events(
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `has_event_queue` is never used
[INFO] [stderr]   --> src/events/event_queue_manager.rs:19:15
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub(crate) fn has_event_queue(sdk_key: &str) -> bool {
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `FilterType` is never used
[INFO] [stderr]   --> src/segmentation/filters.rs:10:10
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub enum FilterType {
[INFO] [stderr]    |          ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `FilterSubType` is never used
[INFO] [stderr]   --> src/segmentation/filters.rs:21:10
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub enum FilterSubType {
[INFO] [stderr]    |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `FilterOrOperator` is never used
[INFO] [stderr]    --> src/segmentation/filters.rs:446:11
[INFO] [stderr]     |
[INFO] [stderr] 446 | pub trait FilterOrOperator {
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PassFilter` is never constructed
[INFO] [stderr]    --> src/segmentation/filters.rs:524:12
[INFO] [stderr]     |
[INFO] [stderr] 524 | pub struct PassFilter {}
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `evaluate` is never used
[INFO] [stderr]    --> src/segmentation/filters.rs:526:12
[INFO] [stderr]     |
[INFO] [stderr] 525 | impl PassFilter {
[INFO] [stderr]     | --------------- associated function in this implementation
[INFO] [stderr] 526 |     pub fn evaluate(
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `FailFilter` is never constructed
[INFO] [stderr]    --> src/segmentation/filters.rs:535:12
[INFO] [stderr]     |
[INFO] [stderr] 535 | pub struct FailFilter {}
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `evaluate` is never used
[INFO] [stderr]    --> src/segmentation/filters.rs:537:12
[INFO] [stderr]     |
[INFO] [stderr] 536 | impl FailFilter {
[INFO] [stderr]     | --------------- associated function in this implementation
[INFO] [stderr] 537 |     pub fn evaluate(
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `AllFilter` is never used
[INFO] [stderr]    --> src/segmentation/filters.rs:546:10
[INFO] [stderr]     |
[INFO] [stderr] 546 | pub type AllFilter = PassFilter;
[INFO] [stderr]     |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `OptInFilter` is never used
[INFO] [stderr]    --> src/segmentation/filters.rs:547:10
[INFO] [stderr]     |
[INFO] [stderr] 547 | pub type OptInFilter = FailFilter;
[INFO] [stderr]     |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BaseFilter` is never constructed
[INFO] [stderr]    --> src/segmentation/filters.rs:550:12
[INFO] [stderr]     |
[INFO] [stderr] 550 | pub struct BaseFilter {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `UserFilter` is never constructed
[INFO] [stderr]    --> src/segmentation/filters.rs:557:12
[INFO] [stderr]     |
[INFO] [stderr] 557 | pub struct UserFilter {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `evaluate` and `compile` are never used
[INFO] [stderr]    --> src/segmentation/filters.rs:566:12
[INFO] [stderr]     |
[INFO] [stderr] 565 | impl UserFilter {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] 566 |     pub fn evaluate(
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 576 |     pub fn compile(&mut self) -> Result<(), String> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `FilterTrait` is never used
[INFO] [stderr]    --> src/segmentation/filters.rs:647:7
[INFO] [stderr]     |
[INFO] [stderr] 647 | trait FilterTrait {
[INFO] [stderr]     |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Audience` is never constructed
[INFO] [stderr]   --> src/segmentation/target.rs:42:12
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub struct Audience {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SemverOptions` is never constructed
[INFO] [stderr]  --> src/segmentation/versioncompare.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 | struct SemverOptions {
[INFO] [stderr]   |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `Compare` is never used
[INFO] [stderr]   --> src/segmentation/versioncompare.rs:11:7
[INFO] [stderr]    |
[INFO] [stderr] 11 | trait Compare {
[INFO] [stderr]    |       ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `has_valid_parts` is never used
[INFO] [stderr]   --> src/segmentation/versioncompare.rs:75:4
[INFO] [stderr]    |
[INFO] [stderr] 75 | fn has_valid_parts(lexicographical: bool, parts: &[String]) -> bool {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `user` and `feature_vars` are never read
[INFO] [stderr]   --> src/user/user.rs:70:5
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub struct UserFeatureData<'a> {
[INFO] [stderr]    |            --------------- fields in this struct
[INFO] [stderr] 70 |     user: &'a User,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 71 |     feature_vars: &'a HashMap<String, String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `user` is never read
[INFO] [stderr]    --> src/user/user.rs:177:16
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub struct BucketedUserConfig {
[INFO] [stderr]     |            ------------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 177 |     pub(crate) user: PopulatedUser,
[INFO] [stderr]     |                ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VARIABLE_EVALUATED_EVENT` is never used
[INFO] [stderr]  --> src/util/constants.rs:5:11
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub const VARIABLE_EVALUATED_EVENT: &str = "variableEvaluated";
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VARIABLE_DEFAULTED_EVENT` is never used
[INFO] [stderr]  --> src/util/constants.rs:6:11
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub const VARIABLE_DEFAULTED_EVENT: &str = "variableDefaulted";
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `AGG_VARIABLE_EVALUATED_EVENT` is never used
[INFO] [stderr]  --> src/util/constants.rs:7:11
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub const AGG_VARIABLE_EVALUATED_EVENT: &str = "aggVariableEvaluated";
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `AGG_VARIABLE_DEFAULTED_EVENT` is never used
[INFO] [stderr]  --> src/util/constants.rs:8:11
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub const AGG_VARIABLE_DEFAULTED_EVENT: &str = "aggVariableDefaulted";
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SUB_TYPE_IP` is never used
[INFO] [stderr]   --> src/util/constants.rs:17:11
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub const SUB_TYPE_IP: &str = "ip";
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DATA_KEY_TYPE_STRING` is never used
[INFO] [stderr]   --> src/util/constants.rs:39:11
[INFO] [stderr]    |
[INFO] [stderr] 39 | pub const DATA_KEY_TYPE_STRING: &str = "String";
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DATA_KEY_TYPE_BOOLEAN` is never used
[INFO] [stderr]   --> src/util/constants.rs:40:11
[INFO] [stderr]    |
[INFO] [stderr] 40 | pub const DATA_KEY_TYPE_BOOLEAN: &str = "Boolean";
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DATA_KEY_TYPE_NUMBER` is never used
[INFO] [stderr]   --> src/util/constants.rs:41:11
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub const DATA_KEY_TYPE_NUMBER: &str = "Number";
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ROLLOUT_TYPE_PERCENTAGE` is never used
[INFO] [stderr]   --> src/util/constants.rs:49:11
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub const ROLLOUT_TYPE_PERCENTAGE: &str = "percentage";
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MISSING_VARIABLE` is never used
[INFO] [stderr]   --> src/util/errors.rs:39:11
[INFO] [stderr]    |
[INFO] [stderr] 39 | pub const MISSING_VARIABLE: DevCycleError = DevCycleError {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MISSING_VARIATION` is never used
[INFO] [stderr]   --> src/util/errors.rs:42:11
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub const MISSING_VARIATION: DevCycleError = DevCycleError {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `failed_user_does_not_qualify_for_targets` is never used
[INFO] [stderr]   --> src/util/errors.rs:51:15
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub(crate) fn failed_user_does_not_qualify_for_targets() -> DevCycleError {
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `failed_user_does_not_qualify_for_rollouts` is never used
[INFO] [stderr]   --> src/util/errors.rs:55:15
[INFO] [stderr]    |
[INFO] [stderr] 55 | pub(crate) fn failed_user_does_not_qualify_for_rollouts() -> DevCycleError {
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `variable_type_mismatch` is never used
[INFO] [stderr]   --> src/util/errors.rs:83:15
[INFO] [stderr]    |
[INFO] [stderr] 83 | pub(crate) fn variable_type_mismatch() -> DevCycleError {
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `failed_to_set_client_custom_data` is never used
[INFO] [stderr]   --> src/util/errors.rs:87:8
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub fn failed_to_set_client_custom_data() -> DevCycleError {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_error` is never used
[INFO] [stderr]   --> src/util/errors.rs:91:8
[INFO] [stderr]    |
[INFO] [stderr] 91 | pub fn parse_error(msg: String) -> DevCycleError {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `missing_field` is never used
[INFO] [stderr]   --> src/util/errors.rs:95:8
[INFO] [stderr]    |
[INFO] [stderr] 95 | pub fn missing_field(field: String) -> DevCycleError {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] For more information about this error, try `rustc --explain E0133`.
[INFO] [stderr] warning: `devcycle-bucketing-rs` (lib) generated 111 warnings (run `cargo fix --lib -p devcycle-bucketing-rs` to apply 32 suggestions)
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:163:22
[INFO] [stderr]     |
[INFO] [stderr] 163 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:205:22
[INFO] [stderr]     |
[INFO] [stderr] 205 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:244:26
[INFO] [stderr]     |
[INFO] [stderr] 244 |             let result = unsafe {
[INFO] [stderr]     |                          ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:284:26
[INFO] [stderr]     |
[INFO] [stderr] 284 |             let result = unsafe {
[INFO] [stderr]     |                          ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:310:22
[INFO] [stderr]     |
[INFO] [stderr] 310 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:339:22
[INFO] [stderr]     |
[INFO] [stderr] 339 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:454:22
[INFO] [stderr]     |
[INFO] [stderr] 454 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:491:22
[INFO] [stderr]     |
[INFO] [stderr] 491 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:538:26
[INFO] [stderr]     |
[INFO] [stderr] 538 |             let result = unsafe {
[INFO] [stderr]     |                          ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:574:26
[INFO] [stderr]     |
[INFO] [stderr] 574 |             let result = unsafe {
[INFO] [stderr]     |                          ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:651:27
[INFO] [stderr]     |
[INFO] [stderr] 651 |         let test_result = unsafe {
[INFO] [stderr]     |                           ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:660:27
[INFO] [stderr]     |
[INFO] [stderr] 660 |         let prod_result = unsafe {
[INFO] [stderr]     |                           ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:686:32
[INFO] [stderr]     |
[INFO] [stderr] 686 |         let bucketing_result = unsafe {
[INFO] [stderr]     |                                ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:736:22
[INFO] [stderr]     |
[INFO] [stderr] 736 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:811:22
[INFO] [stderr]     |
[INFO] [stderr] 811 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]    --> src/bucketing/bucketing_tests.rs:927:22
[INFO] [stderr]     |
[INFO] [stderr] 927 |         let result = unsafe {
[INFO] [stderr]     |                      ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `config_ref`
[INFO] [stderr]    --> src/events/event_queue_tests.rs:146:13
[INFO] [stderr]     |
[INFO] [stderr] 146 |         let config_ref = get_config(sdk_key).unwrap();
[INFO] [stderr]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_ref`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `event_queue`
[INFO] [stderr]    --> src/events/event_queue_tests.rs:151:13
[INFO] [stderr]     |
[INFO] [stderr] 151 |         let event_queue = event_queue_manager::get_event_queue(sdk_key).unwrap();
[INFO] [stderr]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_queue`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `event_queue`
[INFO] [stderr]    --> src/events/event_queue_tests.rs:171:13
[INFO] [stderr]     |
[INFO] [stderr] 171 |         let event_queue = event_queue_manager::get_event_queue(sdk_key).unwrap();
[INFO] [stderr]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_queue`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/segmentation/filter_tests.rs:1405:13
[INFO] [stderr]      |
[INFO] [stderr] 1405 |         let mut user = create_test_user();
[INFO] [stderr]      |             ----^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `filter`
[INFO] [stderr]     --> src/segmentation/filter_tests.rs:1392:13
[INFO] [stderr]      |
[INFO] [stderr] 1392 |         let filter = Filter {
[INFO] [stderr]      |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_filter`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `user`
[INFO] [stderr]     --> src/segmentation/filter_tests.rs:1405:13
[INFO] [stderr]      |
[INFO] [stderr] 1405 |         let mut user = create_test_user();
[INFO] [stderr]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audiences`
[INFO] [stderr]     --> src/segmentation/filter_tests.rs:1406:13
[INFO] [stderr]      |
[INFO] [stderr] 1406 |         let audiences: HashMap<String, NoIdAudience> = HashMap::new();
[INFO] [stderr]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audiences`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `client_custom_data`
[INFO] [stderr]     --> src/segmentation/filter_tests.rs:1407:13
[INFO] [stderr]      |
[INFO] [stderr] 1407 |         let client_custom_data: HashMap<String, serde_json::Value> = HashMap::new();
[INFO] [stderr]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_client_custom_data`
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SSEHost` is never constructed
[INFO] [stderr]   --> src/config/config.rs:84:12
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub struct SSEHost {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `platform_data`, `agg_event_queue_raw_rx`, `agg_event_queue`, and `queue_access_mutex` are never read
[INFO] [stderr]   --> src/events/event_queue.rs:52:16
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub struct EventQueue {
[INFO] [stderr]    |            ---------- fields in this struct
[INFO] [stderr] 51 |     pub(crate) sdk_key: String,
[INFO] [stderr] 52 |     pub(crate) platform_data: Arc<PlatformData>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^
[INFO] [stderr] 53 |     pub(crate) agg_event_queue_raw_tx: mpsc::Sender<AggEventQueueRawMessage>,
[INFO] [stderr] 54 |     pub(crate) agg_event_queue_raw_rx: mpsc::Receiver<AggEventQueueRawMessage>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub(crate) agg_event_queue: AggregateEventQueue,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 60 |     pub(crate) queue_access_mutex: tokio::sync::Mutex<()>,
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `merge_agg_event_queue_keys`, `process_user_events`, `process_aggregate_event`, and `process_events` are never used
[INFO] [stderr]    --> src/events/event_queue.rs:187:25
[INFO] [stderr]     |
[INFO] [stderr]  67 | impl EventQueue {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 187 |     pub(crate) async fn merge_agg_event_queue_keys(&mut self, config_body: &ConfigBody) {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 286 |     async unsafe fn process_user_events(
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 331 |     pub(crate) async fn process_aggregate_event(
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 380 |     pub(crate) async fn process_events(
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `devcycle-bucketing-rs` (lib test) generated 130 warnings (103 duplicates) (run `cargo fix --lib -p devcycle-bucketing-rs --tests` to apply 8 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.33s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/devcycle_bucketing_rs-e2ac5f3171dfbec0)
[INFO] [stdout] 
[INFO] [stdout] running 173 tests
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_config_loading_and_structure ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_evaluation_reasons_are_set ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_evaluation_details_serialization ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_basic_user ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_with_private_custom_data ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_basic_bucketing ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_missing_sdk_key ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_with_custom_data ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_user_creation_and_data_merging ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_structure_validation ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_multiple_user_scenarios ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_with_targeting_data ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_vs_test_config_consistency ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_v2_user ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_multiple_users ... ok
[INFO] [stdout] test config::config_tests::tests::test_invalid_json_handling ... ok
[INFO] [stdout] test config::config_tests::tests::test_missing_required_fields ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_config_body ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_environment_with_extra_fields ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_environment_json ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_variable_json_with_different_types ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_real_world_config ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_variable_json ... ok
[INFO] [stdout] test config::config_tests::tests::test_round_trip_serialization ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_variable_for_user ... ok
[INFO] [stdout] test config::config_tests::tests::test_serialize_and_deserialize_project ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_variables_array ... ok
[INFO] [stdout] test config::config_tests::tests::test_sse_config_serialization ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_sse_json ... ok
[INFO] [stdout] test config::config_tests::tests::test_bucketing_config_with_partial_fields ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_bucketing_configuration_json ... ok
[INFO] [stdout] test config::config_tests::tests::test_variable_types_from_real_config ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_hardcoded_config_from_resources ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_arc_cloning_efficiency ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_stress_test ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_project_with_field_aliases ... ok
[INFO] [stdout] test config::config_tests::tests::test_pretty_json_output ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_complex_project_config ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_has_config ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_memory_safety_with_arc ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_get_nonexistent_config ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_multiple_configs ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_update_config ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_different_countries ... ok
[INFO] [stdout] test config::platform_data_tests::tests::test_generate_creates_valid_platform_data ... ok
[INFO] [stdout] test config::platform_data_tests::tests::test_get_platform_data_per_sdk_key ... ok
[INFO] [stdout] test config::platform_data_tests::tests::test_get_platform_data_returns_error_when_not_set ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_set_and_get_config ... ok
[INFO] [stdout] test config::platform_data_tests::tests::test_platform_data_serialization ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_concurrent_reads ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_add_to_user_queue ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_creation ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_config_immutability_across_threads ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_project_json ... ok
[INFO] [stdout] test config::platform_data_tests::tests::test_get_platform_data_returns_same_arc_for_same_sdk_key ... ok
[INFO] [stdout] test config::platform_data_tests::tests::test_platform_data_concurrent_access ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_concurrent_different_keys ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_disabled_logging ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_flush_events ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_empty_variable_key_error ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_options_default ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_process_user_event ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_merge_agg_event_queue_keys ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_process_aggregate_event ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_concurrent_reads_and_writes ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_user_max_queue_drop ... ok
[INFO] [stdout] test events::event_tests::tests::test_default_reason_format ... ok
[INFO] [stdout] test events::event_tests::tests::test_evaluation_reason_display ... ok
[INFO] [stdout] test events::event_tests::tests::test_evaluation_reason_format ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_all_filter_always_passes ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_and_operator ... ok
[INFO] [stdout] test events::event_tests::tests::test_default_reason_display ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_and_operator_fails_when_one_filter_fails ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_country_filter ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_variable_defaulted ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_bool_equal_true ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_bool_not_equal ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_not_contains ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_contains ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_exist_empty_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_exist_with_value ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_exist_without_field ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_filter ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_no_deadlock_scenario ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_not_equal_no_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_not_exist_with_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_number_equal ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_not_exist_no_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_string_empty_string ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_number_not_equal ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_number_or_values ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_string_equal_or_values ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_string_key_not_present ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_with_client_custom_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_string_not_equal ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_string_not_equal_multiple ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_stress_concurrent_operations ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_concurrent_has_config_checks ... ok
[INFO] [stdout] test ffi::ffi_tests::test_init_and_queue_event ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_does_user_pass_filter_with_user_country_filter ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_does_user_pass_filter_with_user_email_filter ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_string_equal_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_string_equal_no_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_invalid_comparator ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_does_user_pass_filter_with_user_platform_filter ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_email_filter_contains ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_empty_filters_pass ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_and_custom_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_and_custom_data_prioritize_user_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_audience_filter_for_platforms ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_audience_nested ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_nested_or ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_opt_in ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_nested_filters ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_numeric_comparison_filters ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_optin_filter_always_fails ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_unknown_filter ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_pass_all ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_user_new_comparator ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_fail_empty ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_user_sub_filter_invalid ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_or_operator ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_platform_filter ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_contain_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_contain_no_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_contain_partial_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_equal_match_in_list ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_equal_no_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_exist_not_empty ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_exist_empty ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_contain_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_contain_partial_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_equal_empty_no_values ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_equal_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_contain_no_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_audience_filter_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_equal_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_equal_match_in_list ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_equal_no_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_exist_empty ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_exist_not_empty ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_user_id_filter_equal ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_user_filters_and ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_user_filters_or ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_user_id_filter_contain ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_user_id_filter_not_equal ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_equal_single_values ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_equal_array_no_match ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_add_to_agg_queue ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_queue_and_flush ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_sequential_updates_with_concurrent_reads ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_equal_array_any_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_than_array ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_nested_and ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_than_or_equal_false ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_greater_equal_array ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_not_equal_comparator_false ... ok
[INFO] [stdout] test util::murmurhash_tests::tests::test_hash_expected_result ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_not_equal_array ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_greater_than_or_equal_false ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_equal_array ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_greater_than_array ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_than_false ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_not_equal_single_values ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_not_equal_comparator_true ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_greater_than_true ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_with_extra_characters ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_greater_than_false ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_than_true ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_greater_than_or_equal_true ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_than_or_equal_true ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_production_config_from_cdn ... FAILED
[INFO] [stdout] test config::config_tests::tests::test_production_config_error_handling ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- config::config_tests::tests::test_parse_production_config_from_cdn stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'config::config_tests::tests::test_parse_production_config_from_cdn' (52) panicked at src/config/config_tests.rs:518:14:
[INFO] [stdout] Failed to fetch config from CDN: reqwest::Error { kind: Request, url: "https://config-cdn.devcycle.com/config/v2/server/dvc_server_token_hash.json", source: hyper_util::client::legacy::Error(Connect, ConnectError("dns error", Custom { kind: Uncategorized, error: "failed to lookup address information: Temporary failure in name resolution" })) }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5f8c2c6526d2 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5f8c2c6526d2 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5f8c2c6526d2 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5f8c2c6526d2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5f8c2c663fea - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5f8c2c663fea - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5f8c2c61f9f6 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5f8c2c61f9f6 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5f8c2c631619 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5f8c2c631619 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5f8c2c6314b1 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5f8c2c27c8de - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5f8c2c27c8de - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5f8c2c631942 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5f8c2c631942 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5f8c2c6316d8 - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5f8c2c62c559 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5f8c2c613fed - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5f8c2c66ceec - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5f8c2c66c492 - core::result::unwrap_failed::hf2d1f30a3ac850fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x5f8c2be0bff3 - core::result::Result<T,E>::expect::h6a7cdc8a123b8872
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/result.rs:1185:23
[INFO] [stdout]   21:     0x5f8c2be74135 - devcycle_bucketing_rs::config::config_tests::tests::test_parse_production_config_from_cdn::{{closure}}::hb1f9dbb3457b08bd
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:518:14
[INFO] [stdout]   22:     0x5f8c2bf081c2 - <core::pin::Pin<P> as core::future::future::Future>::poll::h479dd769a442a5bf
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5f8c2bf0829d - <core::pin::Pin<P> as core::future::future::Future>::poll::h7e457398a11d5d7b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x5f8c2bdd430d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::h39527ed16343584a
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:742:70
[INFO] [stdout]   25:     0x5f8c2bdd39cb - tokio::task::coop::with_budget::hff719a75599d5ad9
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x5f8c2bdd39cb - tokio::task::coop::budget::h8a4c7d41f9080611
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x5f8c2bdd39cb - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::h239de26c34293ff0
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:742:25
[INFO] [stdout]   28:     0x5f8c2bdcb480 - tokio::runtime::scheduler::current_thread::Context::enter::hb7e51cedab3105f0
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:432:19
[INFO] [stdout]   29:     0x5f8c2bdd309d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::hdb28dfbe09bbc4db
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:741:44
[INFO] [stdout]   30:     0x5f8c2bdcf3b4 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::he95592bc10940b9f
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:829:68
[INFO] [stdout]   31:     0x5f8c2bec1aeb - tokio::runtime::context::scoped::Scoped<T>::set::hfa8bac89321a7575
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x5f8c2bef88d9 - tokio::runtime::context::set_scheduler::{{closure}}::h105ccf56be56db8b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context.rs:176:38
[INFO] [stdout]   33:     0x5f8c2bdff622 - std::thread::local::LocalKey<T>::try_with::hc3593f70d558364d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x5f8c2bdfc2fe - std::thread::local::LocalKey<T>::with::h0189069854258cad
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x5f8c2bef888d - tokio::runtime::context::set_scheduler::h8a2b488344a2ab6e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context.rs:176:17
[INFO] [stdout]   36:     0x5f8c2bdce460 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::hb3575baecce61b11
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:829:27
[INFO] [stdout]   37:     0x5f8c2bdcf546 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::h1fb60d0bc1355227
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:729:24
[INFO] [stdout]   38:     0x5f8c2bdc9480 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::hb6196e95047a6d21
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   39:     0x5f8c2bf05033 - tokio::runtime::context::runtime::enter_runtime::h196f4a98f996d732
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x5f8c2bdc8611 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h938d3e3187168798
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   41:     0x5f8c2bec2064 - tokio::runtime::runtime::Runtime::block_on_inner::ha000161ccf06e239
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   42:     0x5f8c2bec2a7c - tokio::runtime::runtime::Runtime::block_on::hd9f5a8ee9c1e0d08
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   43:     0x5f8c2be73d30 - devcycle_bucketing_rs::config::config_tests::tests::test_parse_production_config_from_cdn::h58fae48d59b28f79
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:631:77
[INFO] [stdout]   44:     0x5f8c2be73dc7 - devcycle_bucketing_rs::config::config_tests::tests::test_parse_production_config_from_cdn::{{closure}}::h6a85c8249f304a63
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:507:53
[INFO] [stdout]   45:     0x5f8c2becd0d6 - core::ops::function::FnOnce::call_once::h2313f9289db36b3e
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5f8c2c27c69b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x5f8c2c27c69b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x5f8c2c2900aa - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x5f8c2c2900aa - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x5f8c2c2900aa - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x5f8c2c2900aa - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x5f8c2c2900aa - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x5f8c2c2900aa - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x5f8c2c2900aa - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x5f8c2c26a504 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x5f8c2c26a504 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x5f8c2c26dea2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x5f8c2c26dea2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x5f8c2c26dea2 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x5f8c2c26dea2 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x5f8c2c26dea2 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x5f8c2c26dea2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x5f8c2c26dea2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x5f8c2c62773f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x5f8c2c62773f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   66:     0x770a4bed9aa4 - <unknown>
[INFO] [stdout]   67:     0x770a4bf66a64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- config::config_tests::tests::test_production_config_error_handling stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'config::config_tests::tests::test_production_config_error_handling' (61) panicked at src/config/config_tests.rs:644:14:
[INFO] [stdout] Failed to make HTTP request: reqwest::Error { kind: Request, url: "https://config-cdn.devcycle.com/config/v2/server/nonexistent.json", source: hyper_util::client::legacy::Error(Connect, ConnectError("dns error", Custom { kind: Uncategorized, error: "failed to lookup address information: Temporary failure in name resolution" })) }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5f8c2c6526d2 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5f8c2c6526d2 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5f8c2c6526d2 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5f8c2c6526d2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5f8c2c663fea - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5f8c2c663fea - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5f8c2c61f9f6 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5f8c2c61f9f6 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5f8c2c631619 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5f8c2c631619 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5f8c2c6314b1 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5f8c2c27c8de - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5f8c2c27c8de - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5f8c2c631942 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5f8c2c631942 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5f8c2c6316d8 - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5f8c2c62c559 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5f8c2c613fed - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5f8c2c66ceec - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5f8c2c66c492 - core::result::unwrap_failed::hf2d1f30a3ac850fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x5f8c2be0bff3 - core::result::Result<T,E>::expect::h6a7cdc8a123b8872
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/result.rs:1185:23
[INFO] [stdout]   21:     0x5f8c2be76a90 - devcycle_bucketing_rs::config::config_tests::tests::test_production_config_error_handling::{{closure}}::hf1ecf05ce2d74e33
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:644:14
[INFO] [stdout]   22:     0x5f8c2bf081c2 - <core::pin::Pin<P> as core::future::future::Future>::poll::h479dd769a442a5bf
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5f8c2bf0829d - <core::pin::Pin<P> as core::future::future::Future>::poll::h7e457398a11d5d7b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x5f8c2bdd430d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::h39527ed16343584a
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:742:70
[INFO] [stdout]   25:     0x5f8c2bdd39cb - tokio::task::coop::with_budget::hff719a75599d5ad9
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x5f8c2bdd39cb - tokio::task::coop::budget::h8a4c7d41f9080611
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x5f8c2bdd39cb - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::h239de26c34293ff0
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:742:25
[INFO] [stdout]   28:     0x5f8c2bdcb480 - tokio::runtime::scheduler::current_thread::Context::enter::hb7e51cedab3105f0
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:432:19
[INFO] [stdout]   29:     0x5f8c2bdd309d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::hdb28dfbe09bbc4db
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:741:44
[INFO] [stdout]   30:     0x5f8c2bdcf3b4 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::he95592bc10940b9f
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:829:68
[INFO] [stdout]   31:     0x5f8c2bec1aeb - tokio::runtime::context::scoped::Scoped<T>::set::hfa8bac89321a7575
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x5f8c2bef88d9 - tokio::runtime::context::set_scheduler::{{closure}}::h105ccf56be56db8b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context.rs:176:38
[INFO] [stdout]   33:     0x5f8c2bdff622 - std::thread::local::LocalKey<T>::try_with::hc3593f70d558364d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x5f8c2bdfc2fe - std::thread::local::LocalKey<T>::with::h0189069854258cad
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x5f8c2bef888d - tokio::runtime::context::set_scheduler::h8a2b488344a2ab6e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context.rs:176:17
[INFO] [stdout]   36:     0x5f8c2bdce460 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::hb3575baecce61b11
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:829:27
[INFO] [stdout]   37:     0x5f8c2bdcf546 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::h1fb60d0bc1355227
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:729:24
[INFO] [stdout]   38:     0x5f8c2bdc9480 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::hb6196e95047a6d21
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   39:     0x5f8c2bf05033 - tokio::runtime::context::runtime::enter_runtime::h196f4a98f996d732
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x5f8c2bdc8611 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h938d3e3187168798
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   41:     0x5f8c2bec2064 - tokio::runtime::runtime::Runtime::block_on_inner::ha000161ccf06e239
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   42:     0x5f8c2bec2a7c - tokio::runtime::runtime::Runtime::block_on::hd9f5a8ee9c1e0d08
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.48.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   43:     0x5f8c2be7672f - devcycle_bucketing_rs::config::config_tests::tests::test_production_config_error_handling::h68889b91356ede38
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:656:10
[INFO] [stdout]   44:     0x5f8c2be767c7 - devcycle_bucketing_rs::config::config_tests::tests::test_production_config_error_handling::{{closure}}::h20ff7609bbd708c0
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:635:53
[INFO] [stdout]   45:     0x5f8c2becd096 - core::ops::function::FnOnce::call_once::h2276b3c19d39a7a4
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5f8c2c27c69b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x5f8c2c27c69b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x5f8c2c2900aa - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x5f8c2c2900aa - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x5f8c2c2900aa - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x5f8c2c2900aa - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x5f8c2c2900aa - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x5f8c2c2900aa - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x5f8c2c2900aa - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x5f8c2c26a504 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x5f8c2c26a504 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x5f8c2c26dea2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x5f8c2c26dea2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x5f8c2c26dea2 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x5f8c2c26dea2 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x5f8c2c26dea2 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x5f8c2c26dea2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x5f8c2c26dea2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x5f8c2c62773f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x5f8c2c62773f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   66:     0x770a4bed9aa4 - <unknown>
[INFO] [stdout]   67:     0x770a4bf66a64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     config::config_tests::tests::test_parse_production_config_from_cdn
[INFO] [stdout]     config::config_tests::tests::test_production_config_error_handling
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 171 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "e993c0442329a1d64dbab53bd51d0564e3c0f5d3287a821ec748505a3a0f0ff4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e993c0442329a1d64dbab53bd51d0564e3c0f5d3287a821ec748505a3a0f0ff4", kill_on_drop: false }`
[INFO] [stdout] e993c0442329a1d64dbab53bd51d0564e3c0f5d3287a821ec748505a3a0f0ff4
