#zng #ui

zng-app

Part of the zng project

52 releases (13 breaking)

Uses new Rust 2024

0.15.1 Mar 19, 2025
0.14.9 Feb 10, 2025
0.14.3 Dec 26, 2024
0.13.8 Nov 23, 2024
0.9.6 Jul 26, 2024

#1007 in GUI

Download history 446/week @ 2024-12-04 188/week @ 2024-12-11 268/week @ 2024-12-18 588/week @ 2024-12-25 311/week @ 2025-01-01 326/week @ 2025-01-08 308/week @ 2025-01-15 458/week @ 2025-01-22 293/week @ 2025-01-29 323/week @ 2025-02-05 217/week @ 2025-02-12 143/week @ 2025-02-19 120/week @ 2025-02-26 25/week @ 2025-03-05 41/week @ 2025-03-12 216/week @ 2025-03-19

499 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
~638K SLoC