invariance

Crates.ioinvariance
lib.rsinvariance
version0.1.2
created_at2025-08-17 16:53:21.344787+00
updated_at2025-08-18 16:33:24.03195+00
descriptionA Rust crate providing type-safe, validated configuration to prevent runtime crashes from invalid config data.
homepagehttps://github.com/ParkBlake/invariance
repositoryhttps://github.com/ParkBlake/invariance
max_upload_size
id1799575
size32,347
b!k (ParkBlake)

documentation

https://docs.rs/invariance

README

invariance

Crates.io Docs.rs Build Status License

A Rust crate providing type-safe, validated configuration for preventing runtime crashes caused by invalid config data.


Overview

invariance helps you define configuration structs with strong typing and validation logic. It ensures that configurations loaded from files (currently TOML and JSON) are always validated before use, preventing null pointer errors, invalid states, and unexpected runtime failures.

The crate provides:

  • A Config trait with default implementations for parsing configuration from strings in multiple formats (currently TOML and JSON), enabling flexible config loading without boilerplate.

  • A Validate trait for implementing custom, domain-specific validation logic to enforce invariants and prevent invalid config states at runtime.

  • Clear and descriptive error handling with the ConfigError type, supporting error chaining and categorisation for easier debugging and reporting.

  • Basic schema generation by printing default configuration instances as example outputs in both JSON and TOML formats.

Getting Started

To use invariance in your Rust project, add it to your Cargo.toml using:

cargo add invariance

Features & Roadmap

  • Strongly typed config parsing from TOML and JSON strings
  • Custom validation via a trait-based system with clear reporting
  • Minimal boilerplate thanks to trait defaults and composable design

  • Support for additional serialization formats, starting with YAML
  • CLI tools for config validation and schema inspection
  • Macro-driven validation DSL to simplify and standardise validation logic
  • Advanced schema generation and introspection features for improved developer experience
Commit count: 0

cargo fmt