This document describes the feature flags and configuration options available in diagnostics_tools.
By default, the crate enables these features:
[dependencies]
diagnostics_tools = "0.11" # Includes: enabled, runtime, compiletime, memory_layoutThis gives you access to all assertion types:
- Runtime assertions (
a_*macros) - Compile-time assertions (
cta_*macros) - Memory layout validation (
cta_type_*,cta_ptr_*,cta_mem_*)
Master switch that enables the crate functionality. Without this, all macros become no-ops.
[dependencies]
diagnostics_tools = { version = "0.11", features = ["enabled"] }Enables all features - equivalent to enabling all individual feature flags.
[dependencies]
diagnostics_tools = { version = "0.11", features = ["full"] }Enables runtime assertion macros:
a_true!,a_false!a_id!,a_not_id!a_dbg_true!,a_dbg_false!,a_dbg_id!,a_dbg_not_id!
[dependencies]
diagnostics_tools = { version = "0.11", features = ["enabled", "diagnostics_runtime_assertions"] }Enables compile-time assertion macros:
cta_true!
[dependencies]
diagnostics_tools = { version = "0.11", features = ["enabled", "diagnostics_compiletime_assertions"] }Enables memory layout validation macros:
cta_type_same_size!,cta_type_same_align!cta_ptr_same_size!,cta_mem_same_size!
[dependencies]
diagnostics_tools = { version = "0.11", features = ["enabled", "diagnostics_memory_layout"] }Enables no_std support for embedded and constrained environments.
[dependencies]
diagnostics_tools = { version = "0.11", features = ["no_std", "enabled"] }When no_std is enabled:
- Runtime assertions still work but with limited formatting
- Compile-time assertions work exactly the same
- Memory layout validation works exactly the same
When using no_std, you can still enable heap allocation with use_alloc.
[dependencies]
diagnostics_tools = { version = "0.11", features = ["no_std", "use_alloc", "enabled"] }For projects that only need runtime assertions:
[dependencies]
diagnostics_tools = {
version = "0.11",
default-features = false,
features = ["enabled", "diagnostics_runtime_assertions"]
}For projects that only need compile-time validation:
[dependencies]
diagnostics_tools = {
version = "0.11",
default-features = false,
features = ["enabled", "diagnostics_compiletime_assertions"]
}For low-level code that only needs memory validation:
[dependencies]
diagnostics_tools = {
version = "0.11",
default-features = false,
features = ["enabled", "diagnostics_memory_layout"]
}For embedded projects:
[dependencies]
diagnostics_tools = {
version = "0.11",
default-features = false,
features = ["no_std", "enabled", "diagnostics_compiletime_assertions", "diagnostics_memory_layout"]
}You can conditionally enable features based on your build configuration:
[dependencies]
diagnostics_tools = { version = "0.11", default-features = false, features = ["enabled"] }
[dependencies.diagnostics_tools.features]
# Only include runtime assertions in debug builds
diagnostics_runtime_assertions = { optional = true }
[features]
default = []
debug_asserts = ["diagnostics_tools/diagnostics_runtime_assertions"]Then use with:
# Development build with runtime assertions
cargo build --features debug_asserts
# Release build without runtime assertions
cargo build --release| Feature | Binary Size Impact | Runtime Impact |
|---|---|---|
diagnostics_runtime_assertions |
Medium (includes pretty_assertions) | Same as standard assertions |
diagnostics_compiletime_assertions |
None (compile-time only) | None |
diagnostics_memory_layout |
None (compile-time only) | None |
no_std |
Reduces size | Slightly reduced formatting |
Testing/Development:
diagnostics_tools = "0.11" # Use all default featuresProduction Libraries:
diagnostics_tools = {
version = "0.11",
default-features = false,
features = ["enabled", "diagnostics_compiletime_assertions", "diagnostics_memory_layout"]
}Embedded Systems:
diagnostics_tools = {
version = "0.11",
default-features = false,
features = ["no_std", "enabled", "diagnostics_compiletime_assertions"]
}High-Performance Applications:
# Development
[dependencies.diagnostics_tools]
version = "0.11"
# Production (disable runtime assertions)
[dependencies.diagnostics_tools]
version = "0.11"
default-features = false
features = ["enabled", "diagnostics_compiletime_assertions", "diagnostics_memory_layout"]Some features have dependencies on each other:
enabledis required for any functionalityuse_allocrequiresno_std- All diagnostic features require
enabled
The crate will give compile-time errors if incompatible features are selected.