anyval

Crates.ioanyval
lib.rsanyval
version0.1.0
created_at2025-11-28 15:23:10.804205+00
updated_at2025-11-28 15:23:10.804205+00
descriptionA lightweight, dynamically‑typed value container for Rust that works like a scripting language.
homepage
repositoryhttps://github.com/fereidani/anyval
max_upload_size
id1955491
size58,182
Khashayar Fereidani (fereidani)

documentation

https://docs.rs/anyval

README

anyval

crates.io docs.rs license

A lightweight, dynamically‑typed value container for Rust.

anyval provides Map, Array, and Value types that let you store heterogeneous data (numbers, strings, booleans, nested maps/arrays) with a simple, ergonomic API. It’s ideal for configuration handling, scripting, or any situation where you need a flexible data model without pulling in a full‑blown JSON library.

Features

  • Dynamic typingValue can hold floats, ints, bools, strings, maps, arrays, or None.
  • Zero‑allocation on creation – containers allocate only when needed.
  • Serde support – optional serde integration for (de)serialization.
  • Convenient macrosmap! and array! for quick literal construction.
  • Optional JSON helpersto_json / from_json behind the json feature.

Quick start

# Add anyval with the desired features
cargo add anyval

# Add anyval without the default features (no json & serde)
cargo add anyval --no-default-features
use anyval::{map, array, Value};

fn main() {
    // Build a map with mixed types
    let cfg = map! {
        "host" => "localhost",
        "port" => 8080,
        "debug" => true,
        "paths" => array!["/api", "/static"],
    };

    // Access values
    println!("Host: {}", cfg["host"].as_str());
    println!("Port: {}", cfg["port"].as_int());

    // Serialize to JSON (requires the `json` feature)
    #[cfg(feature = "json")]
    println!("JSON: {}", cfg.to_json().unwrap());
}

Documentation

For full API details, examples, and feature flags, see the crate documentation:

https://docs.rs/anyval

Commit count: 0

cargo fmt