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

Download history 1/week @ 2025-08-23 1/week @ 2025-09-13 4/week @ 2025-09-20

632 downloads per month
Used in cdumay_result

Custom license

20KB
119 lines

cdumay_context

License: BSD-3-Clause cdumay_context on crates.io cdumay_context on docs.rs Source Code Repository

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 Contextualize trait and a Context struct
  • 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::Error struct

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