Skip to main content

Crate product_os_utilities

Crate product_os_utilities 

Source
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 - Minimal no_std support with alloc
  • text - 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 tracing
  • data - Comprehensive data type system with conversions
  • yaml - YAML parsing, generation, and conversion utilities
  • xml - XML parsing and validation
  • content - 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 CombinationUse CaseRequires Std
defaultMinimal utilitiesNo
jsonJSON processingNo
json + yamlData format conversionYes
files + logging_stdFile operations with loggingYes
networking_stdBasic networkingYes
allAll functionalityYes

§no_std Support

This crate supports no_std environments with alloc. Features that require std:

  • files - Requires file system access
  • networking_std, networking_advanced - Requires network stack
  • logging_std - Requires std for subscriber setup
  • data, 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 serialization
  • serde_yaml - YAML support
  • regex, chrono - Data validation
  • walkdir - File system traversal
  • dns-lookup, pnet - Networking
  • product-os-security - Cryptographic utilities

Modules§

data
Data Module

Structs§

ProductOSUtilities
Main utility struct providing static methods for various operations.

Enums§

ProductOSError
Error type for product-os-utilities operations.