54 releases (13 breaking)

Uses new Rust 2024

new 0.15.3 May 9, 2025
0.15.1 Mar 19, 2025
0.14.3 Dec 26, 2024
0.13.8 Nov 23, 2024
0.9.6 Jul 26, 2024

#639 in GUI

Download history 333/week @ 2025-01-16 464/week @ 2025-01-23 269/week @ 2025-01-30 331/week @ 2025-02-06 203/week @ 2025-02-13 195/week @ 2025-02-20 69/week @ 2025-02-27 28/week @ 2025-03-06 138/week @ 2025-03-13 112/week @ 2025-03-20 36/week @ 2025-03-27 255/week @ 2025-04-03 66/week @ 2025-04-10 118/week @ 2025-04-17 134/week @ 2025-04-24 67/week @ 2025-05-01

389 downloads per month
Used in 51 crates (37 directly)

Apache-2.0 OR MIT

3MB
63K SLoC

This crate is part of the zng project.

Cargo Features

This crate provides 12 feature flags, 2 enabled by default.

"debug_default"

Enable the "dyn_*" and "inspector" features in debug builds.

Enabled by default.

"dyn_node"

Use dynamic dispatch at the node level by placing each property node in a BoxedUiNode and enabling UiNode::cfg_boxed.

This speeds-up compilation time at the cost of runtime.

"inspector"

Instrument each widget instance to retain build information.

"dyn_app_extension"

Use dynamic dispatch at the app-extension level.

This speeds-up compilation time at the cost of runtime.

"dyn_closure"

Box closures at opportune places, such as Var::map, reducing the number of monomorphised types.

This speeds-up compilation time at the cost of runtime.

"test_util"

Like cfg(test) but also visible in docs and integration tests.

"multi_app"

Allows multiple app instances per-process.

This feature allows multiple apps, one app per thread at a time. The LocalContext tracks what app is currently running in each thread and app_local! statics switch to the value of each app depending on the current thread.

Not enabled by default, but enabled by feature="test_util".

"trace_widget"

Instrument every widget outer-most node to trace UI methods.

"trace_wgt_item"

Instrument every property and intrinsic node to trace UI methods.

Note that this can cause very large trace files and bad performance.

"crash_handler"

Allow app-process crash handler.

Only enables in not(any(target_arch = "wasm32", target_os = "android", target_os = "ios")) builds.

"ipc"

Enables IPC tasks and pre-build views and connecting to views running in another process.

Enabled by default.

"deadlock_detection"

Spawns a thread on app creation that checks and prints parking_lot deadlocks.

Not enabled by default, but enabled by feature="test_util".

Dependencies

~8–40MB
~637K SLoC