Expand description
§Product OS Utilities
A comprehensive utility library providing tools for file operations, networking, data manipulation, JSON/YAML processing, and more for the Product OS ecosystem.
§Features
This crate is designed to work in both std and no_std environments with careful
feature flag management. Enable only the features you need for minimal dependencies.
§Core Features (no_std compatible)
default- Minimalno_stdsupport with alloctext- Text manipulation utilities (indentation, formatting)json- JSON utilities for finding properties, type checking, and conversions
§Standard Library Features (require std)
files- File system operations (listing files, path handling)networking_std- Network utilities (socket addresses, DNS lookup)networking_advanced- Advanced networking (interface enumeration with pnet)logging_std- Logging setup and configuration with tracingdata- Comprehensive data type system with conversionsyaml- YAML parsing, generation, and conversion utilitiesxml- XML parsing and validationcontent- Content type detection and MIME sniffing
§Combined Features
all- Enables all features (requires std)
§Quick Start
Add to your Cargo.toml:
[dependencies]
product-os-utilities = { version = "0.0.27", features = ["json", "yaml"] }§Examples
§JSON Property Finding
use product_os_utilities::ProductOSUtilities;
use serde_json::json;
let data = json!({
"user": {
"name": "Alice",
"age": 30
}
});
let name = ProductOSUtilities::find_json_property(&data, "user.name", &json!(null));
assert_eq!(name, json!("Alice"));§YAML to JSON Conversion
use product_os_utilities::ProductOSUtilities;
let yaml_str = "name: test\nvalue: 42";
let yaml = ProductOSUtilities::string_to_yaml(yaml_str).unwrap();
let json = ProductOSUtilities::yaml_value_to_json_value(&yaml).unwrap();§File Operations
use product_os_utilities::ProductOSUtilities;
let files = ProductOSUtilities::get_file_list("src").unwrap();
for file in files {
println!("Found: {}", file);
}§Network Socket Configuration
use product_os_utilities::ProductOSUtilities;
let addr = ProductOSUtilities::get_socket_address("127.0.0.1", 8080, false);
println!("Server will bind to: {}", addr);§Data Types
The data feature provides a rich type system for working with various data formats:
use product_os_utilities::data::{Data, DataFormat};
use chrono::Utc;
let text = Data::Text("Hello".to_string());
let number = Data::Number(42.5);
let date = Data::Date(Utc::now());§Feature Combinations
| Feature Combination | Use Case | Requires Std |
|---|---|---|
default | Minimal utilities | No |
json | JSON processing | No |
json + yaml | Data format conversion | Yes |
files + logging_std | File operations with logging | Yes |
networking_std | Basic networking | Yes |
all | All functionality | Yes |
§no_std Support
This crate supports no_std environments with alloc. Features that require std:
files- Requires file system accessnetworking_std,networking_advanced- Requires network stacklogging_std- Requires std for subscriber setupdata,yaml,xml,content- Require std dependencies
For no_std usage:
[dependencies]
product-os-utilities = { version = "0.0.27", default-features = false, features = ["json", "text"] }§Error Handling
Most functions return Result<T, ProductOSError> for proper error handling:
use product_os_utilities::{ProductOSUtilities, ProductOSError};
fn parse_config() -> Result<(), ProductOSError> {
let yaml = ProductOSUtilities::string_to_yaml("key: value")?;
Ok(())
}§Performance Considerations
- JSON property finding uses recursive traversal - suitable for moderate nesting depths
- File listing uses walkdir with configurable depth (currently max depth 5)
- YAML/JSON conversions allocate new structures
§Safety and Security
- All public APIs are safe Rust
- No unsafe code in this crate
- Input validation on file paths and network addresses
- Uses well-audited dependencies (serde,
serde_json, etc.)
§Dependencies
Key dependencies (feature-gated):
serde,serde_json- JSON serializationserde_yaml- YAML supportregex,chrono- Data validationwalkdir- File system traversaldns-lookup,pnet- Networkingproduct-os-security- Cryptographic utilities
Modules§
- data
- Data Module
Structs§
- ProductOS
Utilities - Main utility struct providing static methods for various operations.
Enums§
- ProductOS
Error - Error type for product-os-utilities operations.