8 stable releases
| 2.0.6 | Jun 19, 2025 |
|---|---|
| 2.0.5 | May 26, 2025 |
| 2.0.2 | Apr 22, 2025 |
| 1.1.2 | Feb 11, 2025 |
#1035 in Encoding
632 downloads per month
Used in cdumay_result
20KB
119 lines
cdumay_context
A flexible context management library that provides a trait-based approach for handling key-value data with support for multiple serialization formats.
Features
- Generic context management through the
Contextualizetrait and aContextstruct - Support for multiple serialization formats (with feature flags):
- JSON (feature: "json")
- TOML (feature: "toml")
- YAML (feature: "yaml")
- Type-safe error handling with the
cdumay_core::Errorstruct
Example Usage
use std::collections::BTreeMap;
use serde::{Serialize, Deserialize};
use cdumay_context::{Contextualize, Context};
// Basic usage
let mut ctx = Context::new();
ctx.insert("name".to_string(), serde_value::Value::String("Alice".to_string()));
Error Handling
The library provides a comprehensive error handling system through the Error enum:
use cdumay_context::{Context, ContextDump, Contextualize, UnExpectedError};
use rand::Rng;
use serde::{Serialize, Deserialize};
use std::collections::BTreeMap;
fn example_error_handling() -> cdumay_core::Result<()> {
let mut rng = rand::rng();
let dice_roll: u8 = rng.random_range(1..=6);
let mut ctx = Context::new();
ctx.insert("env".to_string(), serde_value::Value::String("prod".to_string()));
// Generic error
if dice_roll == 7 {
return Err(UnExpectedError::new().with_message("Something went wrong".to_string()).with_details(ctx.dump()).into());
}
Ok(())
}
Dependencies
~0.6–1.8MB
~39K SLoC