[INFO] fetching crate devcycle-bucketing-rs 0.2.3...
[INFO] testing devcycle-bucketing-rs-0.2.3 against try#db823df02fd0c2cf67b43025ac3fef3f2d743245 for pr-150681
[INFO] extracting crate devcycle-bucketing-rs 0.2.3 into /workspace/builds/worker-7-tc2/source
[INFO] removed /workspace/builds/worker-7-tc2/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-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate devcycle-bucketing-rs 0.2.3 on toolchain db823df02fd0c2cf67b43025ac3fef3f2d743245
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "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" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 242eed22aae5ef53b7161748538d2eb7cff05b1cdb3555313a41fdbacc333736
[INFO] running `Command { std: "docker" "start" "-a" "242eed22aae5ef53b7161748538d2eb7cff05b1cdb3555313a41fdbacc333736", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "242eed22aae5ef53b7161748538d2eb7cff05b1cdb3555313a41fdbacc333736", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "242eed22aae5ef53b7161748538d2eb7cff05b1cdb3555313a41fdbacc333736", kill_on_drop: false }`
[INFO] [stdout] 242eed22aae5ef53b7161748538d2eb7cff05b1cdb3555313a41fdbacc333736
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c2c59458dfc4398d6afa888179aac33ae5ef70a30257e6a6e0d58448ad126f79
[INFO] running `Command { std: "docker" "start" "-a" "c2c59458dfc4398d6afa888179aac33ae5ef70a30257e6a6e0d58448ad126f79", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling murmur3 v0.5.2
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling hostname v0.4.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling serde_json v1.0.145
[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 20.67s
[INFO] running `Command { std: "docker" "inspect" "c2c59458dfc4398d6afa888179aac33ae5ef70a30257e6a6e0d58448ad126f79", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c2c59458dfc4398d6afa888179aac33ae5ef70a30257e6a6e0d58448ad126f79", kill_on_drop: false }`
[INFO] [stdout] c2c59458dfc4398d6afa888179aac33ae5ef70a30257e6a6e0d58448ad126f79
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1dd4cf803f2714d3b321e8abe8f71470b08f249c2c54a7de7d85b483a2b33874
[INFO] running `Command { std: "docker" "start" "-a" "1dd4cf803f2714d3b321e8abe8f71470b08f249c2c54a7de7d85b483a2b33874", kill_on_drop: false }`
[INFO] [stderr]    Compiling find-msvc-tools v0.1.5
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling http v1.3.1
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling syn v2.0.110
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling clap_builder v4.5.52
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling cc v1.2.46
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling clap v4.5.52
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[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 zerovec-derive v0.11.2
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[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 zerocopy v0.8.27
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[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 tinytemplate v1.2.1
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[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 tower v0.5.2
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]    Compiling h2 v0.4.12
[INFO] [stderr]    Compiling tower-http v0.6.6
[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 45.45s
[INFO] running `Command { std: "docker" "inspect" "1dd4cf803f2714d3b321e8abe8f71470b08f249c2c54a7de7d85b483a2b33874", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1dd4cf803f2714d3b321e8abe8f71470b08f249c2c54a7de7d85b483a2b33874", kill_on_drop: false }`
[INFO] [stdout] 1dd4cf803f2714d3b321e8abe8f71470b08f249c2c54a7de7d85b483a2b33874
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 9dc9d4c21d44af09f74bf6e40ff19c259c1240613729fb13f639cd27674b89a1
[INFO] running `Command { std: "docker" "start" "-a" "9dc9d4c21d44af09f74bf6e40ff19c259c1240613729fb13f639cd27674b89a1", 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.20s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/devcycle_bucketing_rs-e1eb50dc0a80917b)
[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_multiple_users ... 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_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_generate_bucketed_config_with_private_custom_data ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_different_countries ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_basic_bucketing ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_structure_validation ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_user_creation_and_data_merging ... ok
[INFO] [stdout] test config::config_tests::tests::test_bucketing_config_with_partial_fields ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_environment_json ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_bucketing_configuration_json ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_project_json ... 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_invalid_json_handling ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_hardcoded_config_from_resources ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_with_targeting_data ... ok
[INFO] [stdout] test config::config_tests::tests::test_missing_required_fields ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_complex_project_config ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_project_with_field_aliases ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_multiple_user_scenarios ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_real_world_config ... ok
[INFO] [stdout] test config::config_tests::tests::test_round_trip_serialization ... ok
[INFO] [stdout] test config::config_tests::tests::test_sse_config_serialization ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_variables_array ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_variable_json_with_different_types ... ok
[INFO] [stdout] test config::config_tests::tests::test_serialize_and_deserialize_project ... ok
[INFO] [stdout] test config::config_tests::tests::test_pretty_json_output ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_vs_test_config_consistency ... ok
[INFO] [stdout] test config::config_tests::tests::test_variable_types_from_real_config ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_arc_cloning_efficiency ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_sse_json ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_generate_bucketed_config_v2_user ... ok
[INFO] [stdout] test config::config_tests::tests::test_parse_variable_json ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_get_nonexistent_config ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_variable_for_user ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_multiple_configs ... 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::platform_data_tests::tests::test_get_platform_data_per_sdk_key ... ok
[INFO] [stdout] test bucketing::bucketing_tests::tests::test_production_config_stress_test ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_concurrent_reads ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_update_config ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_set_and_get_config ... 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_returns_same_arc_for_same_sdk_key ... ok
[INFO] [stdout] test config::platform_data_tests::tests::test_platform_data_serialization ... ok
[INFO] [stdout] test config::platform_data_tests::tests::test_get_platform_data_returns_error_when_not_set ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_creation ... 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_disabled_logging ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_flush_events ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_concurrent_different_keys ... 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_merge_agg_event_queue_keys ... 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_aggregate_event ... 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_queue_tests::tests::test_event_queue_variable_defaulted ... ok
[INFO] [stdout] test events::event_queue_tests::tests::test_event_queue_process_user_event ... ok
[INFO] [stdout] test events::event_tests::tests::test_evaluation_reason_format ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_config_immutability_across_threads ... ok
[INFO] [stdout] test events::event_tests::tests::test_default_reason_display ... ok
[INFO] [stdout] test events::event_tests::tests::test_evaluation_reason_display ... 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 config::platform_data_tests::tests::test_platform_data_concurrent_access ... 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 segmentation::filter_tests::tests::test_custom_data_bool_not_equal ... 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_filter ... 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_exist_without_field ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_contains ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_not_exist_with_data ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_concurrent_has_config_checks ... 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_number_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_not_equal_no_data ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_number_not_equal ... ok
[INFO] [stdout] test ffi::ffi_tests::test_init_and_queue_event ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_stress_concurrent_operations ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_number_or_values ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_no_deadlock_scenario ... ok
[INFO] [stdout] test config::configmanager_tests::tests::test_concurrent_reads_and_writes ... 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_string_equal_no_data ... 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_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_string_not_equal_multiple ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_with_client_custom_data ... 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_does_user_pass_filter_with_user_platform_filter ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_empty_filters_pass ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_email_filter_contains ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_custom_data_string_not_equal ... 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_audience_filter_for_platforms ... 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_nested ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_fail_empty ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_invalid_comparator ... 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_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_optin_filter_always_fails ... 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_nested_filters ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_numeric_comparison_filters ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_contain_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_user_sub_filter_invalid ... 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_contain_no_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_exist_empty ... 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_equal_match_in_list ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_string_filter_not_contain_no_match ... 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_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_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_evaluate_operator_audience_filter_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_string_filter_not_equal_no_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_user_id_filter_not_equal ... 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_equal ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_user_filters_or ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_evaluate_operator_user_filters_and ... 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_evaluate_operator_nested_and ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_equal_array_no_match ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_equal_single_values ... 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 segmentation::filter_tests::tests::test_version_greater_than_or_equal_false ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_than_array ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_equal_array ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_not_equal_array ... ok
[INFO] [stdout] test util::murmurhash_tests::tests::test_hash_expected_result ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_greater_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_greater_than_false ... 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_not_equal_single_values ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_not_equal_comparator_false ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_not_equal_comparator_true ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_than_or_equal_true ... 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_less_than_true ... ok
[INFO] [stdout] test segmentation::filter_tests::tests::test_version_less_than_false ... 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_true ... ok
[INFO] [stdout] test config::config_tests::tests::test_production_config_error_handling ... FAILED
[INFO] [stdout] test config::config_tests::tests::test_parse_production_config_from_cdn ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[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:     0x5bdd35e3ca32 - std[3f03f8b59f91bef1]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5bdd35e3ca32 - std[3f03f8b59f91bef1]::backtrace_rs::backtrace::trace_unsynchronized::<std[3f03f8b59f91bef1]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5bdd35e3ca32 - std[3f03f8b59f91bef1]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5bdd35e3ca32 - <<std[3f03f8b59f91bef1]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[585f66e14d78f9ba]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5bdd35e5394a - <core[585f66e14d78f9ba]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5bdd35e5394a - core[585f66e14d78f9ba]::fmt::write
[INFO] [stdout]    6:     0x5bdd35e41cf6 - std[3f03f8b59f91bef1]::io::default_write_fmt::<alloc[15e7b27aba85d2e2]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5bdd35e41cf6 - <alloc[15e7b27aba85d2e2]::vec::Vec<u8> as std[3f03f8b59f91bef1]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5bdd35e1989f - <std[3f03f8b59f91bef1]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5bdd35e1989f - std[3f03f8b59f91bef1]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5bdd35e340f9 - std[3f03f8b59f91bef1]::panicking::default_hook
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5bdd35a5786e - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn for<'a, 'b> core[585f66e14d78f9ba]::ops::function::Fn<(&'a std[3f03f8b59f91bef1]::panic::PanicHookInfo<'b>,), Output = ()> + core[585f66e14d78f9ba]::marker::Sync + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::Fn<(&std[3f03f8b59f91bef1]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5bdd35a5786e - test[30224e0cb089acd2]::test_main_with_exit_callback::<test[30224e0cb089acd2]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5bdd35e34362 - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn for<'a, 'b> core[585f66e14d78f9ba]::ops::function::Fn<(&'a std[3f03f8b59f91bef1]::panic::PanicHookInfo<'b>,), Output = ()> + core[585f66e14d78f9ba]::marker::Sync + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::Fn<(&std[3f03f8b59f91bef1]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5bdd35e34362 - std[3f03f8b59f91bef1]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5bdd35e19958 - std[3f03f8b59f91bef1]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5bdd35e0e969 - std[3f03f8b59f91bef1]::sys::backtrace::__rust_end_short_backtrace::<std[3f03f8b59f91bef1]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5bdd35e1a97d - __rustc[caa99d26c7bae192]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5bdd35e5410c - core[585f66e14d78f9ba]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5bdd35e53e82 - core[585f66e14d78f9ba]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x5bdd355ed3b3 - <core[585f66e14d78f9ba]::result::Result<reqwest[6482492c2d2bef64]::async_impl::response::Response, reqwest[6482492c2d2bef64]::error::Error>>::expect
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:1185:23
[INFO] [stdout]   21:     0x5bdd355ffe00 - devcycle_bucketing_rs[600b1c4fab9ee44]::config::config_tests::tests::test_production_config_error_handling::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:644:14
[INFO] [stdout]   22:     0x5bdd356349c2 - <core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>> as core[585f66e14d78f9ba]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5bdd35634add - <core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>> as core[585f66e14d78f9ba]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x5bdd355bce4d - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[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:     0x5bdd355bc93b - tokio[f01b6435d423c514]::task::coop::with_budget::<core[585f66e14d78f9ba]::task::poll::Poll<()>, <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[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:     0x5bdd355bc93b - tokio[f01b6435d423c514]::task::coop::budget::<core[585f66e14d78f9ba]::task::poll::Poll<()>, <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[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:     0x5bdd355bc93b - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[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:     0x5bdd355b2460 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Context>::enter::<core[585f66e14d78f9ba]::task::poll::Poll<()>, <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[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:     0x5bdd355b9f1d - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}
[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:     0x5bdd355b7ba4 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}
[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:     0x5bdd356c08cb - <tokio[f01b6435d423c514]::runtime::context::scoped::Scoped<tokio[f01b6435d423c514]::runtime::scheduler::Context>>::set::<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}, (alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>)>
[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:     0x5bdd356b8399 - tokio[f01b6435d423c514]::runtime::context::set_scheduler::<(alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>), <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}>::{closure#0}
[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:     0x5bdd35654812 - <std[3f03f8b59f91bef1]::thread::local::LocalKey<tokio[f01b6435d423c514]::runtime::context::Context>>::try_with::<tokio[f01b6435d423c514]::runtime::context::set_scheduler<(alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>), <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x5bdd35653a3e - <std[3f03f8b59f91bef1]::thread::local::LocalKey<tokio[f01b6435d423c514]::runtime::context::Context>>::with::<tokio[f01b6435d423c514]::runtime::context::set_scheduler<(alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>), <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x5bdd356b07cd - tokio[f01b6435d423c514]::runtime::context::set_scheduler::<(alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>), <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}>
[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:     0x5bdd355b4fc0 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>
[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:     0x5bdd355b5c86 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>
[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:     0x5bdd355b6ae0 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>::{closure#0}
[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:     0x5bdd356eb483 - tokio[f01b6435d423c514]::runtime::context::runtime::enter_runtime::<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[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:     0x5bdd355b1031 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>
[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:     0x5bdd35635d24 - <tokio[f01b6435d423c514]::runtime::runtime::Runtime>::block_on_inner::<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>
[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:     0x5bdd3563628c - <tokio[f01b6435d423c514]::runtime::runtime::Runtime>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>
[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:     0x5bdd35612dff - devcycle_bucketing_rs[600b1c4fab9ee44]::config::config_tests::tests::test_production_config_error_handling
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:656:10
[INFO] [stdout]   44:     0x5bdd355fe267 - devcycle_bucketing_rs[600b1c4fab9ee44]::config::config_tests::tests::test_production_config_error_handling::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:635:53
[INFO] [stdout]   45:     0x5bdd356bec56 - <devcycle_bucketing_rs[600b1c4fab9ee44]::config::config_tests::tests::test_production_config_error_handling::{closure#0} as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5bdd35a4bc1b - <fn() -> core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x5bdd35a4bc1b - test[30224e0cb089acd2]::__rust_begin_short_backtrace::<core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>, fn() -> core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x5bdd35a5847a - test[30224e0cb089acd2]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x5bdd35a5847a - <core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x5bdd35a5847a - std[3f03f8b59f91bef1]::panicking::catch_unwind::do_call::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>, core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x5bdd35a5847a - std[3f03f8b59f91bef1]::panicking::catch_unwind::<core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>, core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x5bdd35a5847a - std[3f03f8b59f91bef1]::panic::catch_unwind::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>, core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x5bdd35a5847a - test[30224e0cb089acd2]::run_test_in_process
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x5bdd35a5847a - test[30224e0cb089acd2]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x5bdd35a52944 - test[30224e0cb089acd2]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x5bdd35a52944 - std[3f03f8b59f91bef1]::sys::backtrace::__rust_begin_short_backtrace::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x5bdd35a5af72 - <core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::panicking::catch_unwind::do_call::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::panicking::catch_unwind::<(), core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::panic::catch_unwind::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x5bdd35a5af72 - <std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1} as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x5bdd35e3beff - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn core[585f66e14d78f9ba]::ops::function::FnOnce<(), Output = ()> + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x5bdd35e3beff - <std[3f03f8b59f91bef1]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   66:     0x785d88092aa4 - <unknown>
[INFO] [stdout]   67:     0x785d8811fa64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[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:     0x5bdd35e3ca32 - std[3f03f8b59f91bef1]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5bdd35e3ca32 - std[3f03f8b59f91bef1]::backtrace_rs::backtrace::trace_unsynchronized::<std[3f03f8b59f91bef1]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5bdd35e3ca32 - std[3f03f8b59f91bef1]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5bdd35e3ca32 - <<std[3f03f8b59f91bef1]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[585f66e14d78f9ba]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5bdd35e5394a - <core[585f66e14d78f9ba]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5bdd35e5394a - core[585f66e14d78f9ba]::fmt::write
[INFO] [stdout]    6:     0x5bdd35e41cf6 - std[3f03f8b59f91bef1]::io::default_write_fmt::<alloc[15e7b27aba85d2e2]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5bdd35e41cf6 - <alloc[15e7b27aba85d2e2]::vec::Vec<u8> as std[3f03f8b59f91bef1]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5bdd35e1989f - <std[3f03f8b59f91bef1]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5bdd35e1989f - std[3f03f8b59f91bef1]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5bdd35e340f9 - std[3f03f8b59f91bef1]::panicking::default_hook
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5bdd35a5786e - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn for<'a, 'b> core[585f66e14d78f9ba]::ops::function::Fn<(&'a std[3f03f8b59f91bef1]::panic::PanicHookInfo<'b>,), Output = ()> + core[585f66e14d78f9ba]::marker::Sync + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::Fn<(&std[3f03f8b59f91bef1]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5bdd35a5786e - test[30224e0cb089acd2]::test_main_with_exit_callback::<test[30224e0cb089acd2]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5bdd35e34362 - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn for<'a, 'b> core[585f66e14d78f9ba]::ops::function::Fn<(&'a std[3f03f8b59f91bef1]::panic::PanicHookInfo<'b>,), Output = ()> + core[585f66e14d78f9ba]::marker::Sync + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::Fn<(&std[3f03f8b59f91bef1]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5bdd35e34362 - std[3f03f8b59f91bef1]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5bdd35e19958 - std[3f03f8b59f91bef1]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5bdd35e0e969 - std[3f03f8b59f91bef1]::sys::backtrace::__rust_end_short_backtrace::<std[3f03f8b59f91bef1]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5bdd35e1a97d - __rustc[caa99d26c7bae192]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5bdd35e5410c - core[585f66e14d78f9ba]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5bdd35e53e82 - core[585f66e14d78f9ba]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x5bdd355ed3b3 - <core[585f66e14d78f9ba]::result::Result<reqwest[6482492c2d2bef64]::async_impl::response::Response, reqwest[6482492c2d2bef64]::error::Error>>::expect
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:1185:23
[INFO] [stdout]   21:     0x5bdd355fe855 - devcycle_bucketing_rs[600b1c4fab9ee44]::config::config_tests::tests::test_parse_production_config_from_cdn::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:518:14
[INFO] [stdout]   22:     0x5bdd356349c2 - <core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>> as core[585f66e14d78f9ba]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5bdd35634add - <core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>> as core[585f66e14d78f9ba]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x5bdd355bce4d - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[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:     0x5bdd355bc93b - tokio[f01b6435d423c514]::task::coop::with_budget::<core[585f66e14d78f9ba]::task::poll::Poll<()>, <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[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:     0x5bdd355bc93b - tokio[f01b6435d423c514]::task::coop::budget::<core[585f66e14d78f9ba]::task::poll::Poll<()>, <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[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:     0x5bdd355bc93b - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[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:     0x5bdd355b2460 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Context>::enter::<core[585f66e14d78f9ba]::task::poll::Poll<()>, <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[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:     0x5bdd355b9f1d - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}
[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:     0x5bdd355b7ba4 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}
[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:     0x5bdd356c08cb - <tokio[f01b6435d423c514]::runtime::context::scoped::Scoped<tokio[f01b6435d423c514]::runtime::scheduler::Context>>::set::<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}, (alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>)>
[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:     0x5bdd356b8399 - tokio[f01b6435d423c514]::runtime::context::set_scheduler::<(alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>), <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}>::{closure#0}
[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:     0x5bdd35654812 - <std[3f03f8b59f91bef1]::thread::local::LocalKey<tokio[f01b6435d423c514]::runtime::context::Context>>::try_with::<tokio[f01b6435d423c514]::runtime::context::set_scheduler<(alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>), <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x5bdd35653a3e - <std[3f03f8b59f91bef1]::thread::local::LocalKey<tokio[f01b6435d423c514]::runtime::context::Context>>::with::<tokio[f01b6435d423c514]::runtime::context::set_scheduler<(alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>), <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x5bdd356b07cd - tokio[f01b6435d423c514]::runtime::context::set_scheduler::<(alloc[15e7b27aba85d2e2]::boxed::Box<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::Core>, core[585f66e14d78f9ba]::option::Option<()>), <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>::{closure#0}>
[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:     0x5bdd355b4fc0 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>::{closure#0}, core[585f66e14d78f9ba]::option::Option<()>>
[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:     0x5bdd355b5c86 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>>
[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:     0x5bdd355b6ae0 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>::{closure#0}
[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:     0x5bdd356eb483 - tokio[f01b6435d423c514]::runtime::context::runtime::enter_runtime::<<tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[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:     0x5bdd355b1031 - <tokio[f01b6435d423c514]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>
[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:     0x5bdd35635d24 - <tokio[f01b6435d423c514]::runtime::runtime::Runtime>::block_on_inner::<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>
[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:     0x5bdd3563628c - <tokio[f01b6435d423c514]::runtime::runtime::Runtime>::block_on::<core[585f66e14d78f9ba]::pin::Pin<&mut dyn core[585f66e14d78f9ba]::future::future::Future<Output = ()>>>
[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:     0x5bdd35611ab0 - devcycle_bucketing_rs[600b1c4fab9ee44]::config::config_tests::tests::test_parse_production_config_from_cdn
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:631:77
[INFO] [stdout]   44:     0x5bdd355fe207 - devcycle_bucketing_rs[600b1c4fab9ee44]::config::config_tests::tests::test_parse_production_config_from_cdn::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/config/config_tests.rs:507:53
[INFO] [stdout]   45:     0x5bdd356bebd6 - <devcycle_bucketing_rs[600b1c4fab9ee44]::config::config_tests::tests::test_parse_production_config_from_cdn::{closure#0} as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5bdd35a4bc1b - <fn() -> core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x5bdd35a4bc1b - test[30224e0cb089acd2]::__rust_begin_short_backtrace::<core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>, fn() -> core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x5bdd35a5847a - test[30224e0cb089acd2]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x5bdd35a5847a - <core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x5bdd35a5847a - std[3f03f8b59f91bef1]::panicking::catch_unwind::do_call::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>, core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x5bdd35a5847a - std[3f03f8b59f91bef1]::panicking::catch_unwind::<core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>, core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x5bdd35a5847a - std[3f03f8b59f91bef1]::panic::catch_unwind::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>, core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x5bdd35a5847a - test[30224e0cb089acd2]::run_test_in_process
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x5bdd35a5847a - test[30224e0cb089acd2]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x5bdd35a52944 - test[30224e0cb089acd2]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x5bdd35a52944 - std[3f03f8b59f91bef1]::sys::backtrace::__rust_begin_short_backtrace::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x5bdd35a5af72 - <core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::panicking::catch_unwind::do_call::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::panicking::catch_unwind::<(), core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::panic::catch_unwind::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x5bdd35a5af72 - std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x5bdd35a5af72 - <std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1} as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x5bdd35e3beff - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn core[585f66e14d78f9ba]::ops::function::FnOnce<(), Output = ()> + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x5bdd35e3beff - <std[3f03f8b59f91bef1]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   66:     0x785d88092aa4 - <unknown>
[INFO] [stdout]   67:     0x785d8811fa64 - 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.27s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "9dc9d4c21d44af09f74bf6e40ff19c259c1240613729fb13f639cd27674b89a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9dc9d4c21d44af09f74bf6e40ff19c259c1240613729fb13f639cd27674b89a1", kill_on_drop: false }`
[INFO] [stdout] 9dc9d4c21d44af09f74bf6e40ff19c259c1240613729fb13f639cd27674b89a1
