Version: 0.1.0
License: Apache-2.0
Rust Version: 1.85+ (Edition 2024)
📚 Documentation
🦀 Rust API Documentation
Complete Rust API documentation for library developers. Covers all 147 functions across 30 modules.
Rust API Reference⚙️ C API Documentation
C shared library FFI documentation. Includes 121 C-compatible functions following Senzing SDK patterns.
C/C++ FFI📖 README & Examples
Getting started guide, examples, and usage instructions on GitHub.
Examples🎯 Key Features
- Pure Library: No CLI code, interactive features, or display logic
- 147 Rust Functions: Across 30 modules for complete config management
- 121 C FFI Functions: Full C-compatible interface with proper memory management
- Clean API: Parameter structs for self-documenting code
- Type-Safe Errors: Custom SzConfigError enum for all error conditions
- Command Processing: Process .gtc upgrade scripts (27/27 commands)
- Zero Dependencies: Only serde, serde_json, and anyhow
✨ Modern API Design
All functions use parameter structs for clean, self-documenting code:
use sz_configtool_lib::features::{set_feature, SetFeatureParams};
// ✨ Named fields - crystal clear!
let config = set_feature(&config, SetFeatureParams {
feature: "NAME",
candidates: Some("Yes"),
behavior: Some("NAME"),
version: Some(2),
..Default::default()
})?;
Benefits: Self-documenting • Type-safe • Extensible • IDE-friendly
📝 More Examples
Add a Data Source (minimal)
datasources::add_data_source(&config, AddDataSourceParams {
code: "CUSTOMERS",
..Default::default() // Use all defaults
})?;
Add an Attribute
attributes::add_attribute(&config, AddAttributeParams {
attribute: "EMAIL_ADDR",
feature: "EMAIL",
element: "EMAIL_ADDRESS",
class: "IDENTIFIER",
internal: Some("No"),
required: Some("Yes"),
..Default::default() // default_value = None
})?;
Update a Feature (set only what changes)
features::set_feature(&config, SetFeatureParams {
feature: "SEMANTIC_VALUE",
candidates: Some("Yes"),
behavior: Some("NAME"), // Prevent generic threshold hits!
..Default::default() // Keep all other settings
})?;
Process Upgrade Script
use command_processor::CommandProcessor;
let mut processor = CommandProcessor::new(config);
let upgraded = processor.process_file("upgrade-10-to-11.gtc")?;
println!("{}", processor.summary()); // "Executed 90 commands"
🔧 Modules
attributes (8)
datasources (7)
elements (8)
features (24)
thresholds (6)
calls (32)
functions (28)
behavior_overrides (4)
command_processor
+ 20 more