[INFO] fetching crate devcycle-bucketing-rs 0.2.3...
[INFO] checking devcycle-bucketing-rs-0.2.3 against master#507271bc119683008ec719ecee48814e8ac86c65 for pr-146440
[INFO] extracting crate devcycle-bucketing-rs 0.2.3 into /workspace/builds/worker-1-tc1/source
[INFO] removed /workspace/builds/worker-1-tc1/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate devcycle-bucketing-rs 0.2.3
[INFO] finished tweaking crates.io crate devcycle-bucketing-rs 0.2.3
[INFO] tweaked toml for crates.io crate devcycle-bucketing-rs 0.2.3 written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate devcycle-bucketing-rs 0.2.3 on toolchain 507271bc119683008ec719ecee48814e8ac86c65
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+507271bc119683008ec719ecee48814e8ac86c65" "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" "+507271bc119683008ec719ecee48814e8ac86c65" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rustls-pki-types v1.13.0
[INFO] [stderr]   Downloaded clap v4.5.52
[INFO] [stderr]   Downloaded clap_builder v4.5.52
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+507271bc119683008ec719ecee48814e8ac86c65" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 0d79bfdefd5ce612b6174b5dfb644ec703f81efc6c050ff4426115e36c692e0e
[INFO] running `Command { std: "docker" "start" "-a" "0d79bfdefd5ce612b6174b5dfb644ec703f81efc6c050ff4426115e36c692e0e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0d79bfdefd5ce612b6174b5dfb644ec703f81efc6c050ff4426115e36c692e0e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0d79bfdefd5ce612b6174b5dfb644ec703f81efc6c050ff4426115e36c692e0e", kill_on_drop: false }`
[INFO] [stdout] 0d79bfdefd5ce612b6174b5dfb644ec703f81efc6c050ff4426115e36c692e0e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+507271bc119683008ec719ecee48814e8ac86c65" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ea397bd5f2c5cd0711b7a17e8d66db468f17dc334c3baf6b554aafbacda6aa1c
[INFO] running `Command { std: "docker" "start" "-a" "ea397bd5f2c5cd0711b7a17e8d66db468f17dc334c3baf6b554aafbacda6aa1c", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.110
[INFO] [stderr]    Compiling cc v1.2.46
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking clap_builder v4.5.52
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking rustls-pki-types v1.13.0
[INFO] [stderr]     Checking hostname v0.4.1
[INFO] [stderr]     Checking murmur3 v0.5.2
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]     Checking clap v4.5.52
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[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]     Checking tokio v1.48.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking zerocopy v0.8.27
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking 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] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking tower-http v0.6.6
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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]     Checking hyper v1.8.1
[INFO] [stderr]     Checking hyper-util v0.1.18
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.24
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]   --> src/bucketing/bucketing_benches.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     setup_platform_data();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]    --> src/bucketing/bucketing_benches.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 |     setup_platform_data();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]    --> src/bucketing/bucketing_benches.rs:248:5
[INFO] [stdout]     |
[INFO] [stdout] 248 |     setup_platform_data();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: 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]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 `dev` profile [unoptimized + debuginfo] target(s) in 34.80s
[INFO] running `Command { std: "docker" "inspect" "ea397bd5f2c5cd0711b7a17e8d66db468f17dc334c3baf6b554aafbacda6aa1c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ea397bd5f2c5cd0711b7a17e8d66db468f17dc334c3baf6b554aafbacda6aa1c", kill_on_drop: false }`
[INFO] [stdout] ea397bd5f2c5cd0711b7a17e8d66db468f17dc334c3baf6b554aafbacda6aa1c
