14af9dbfa5fd4a277025d65d27f6a3f1d419b0d7
Vessel
vessel::Vessel is a simple, immutable value bag for Rust – inspired by Go's context.Context, but focused solely on storing and propagating context in a simple manner.
✨ Features
- Immutable: setting a value returns a new
Vessel. - Ordered: uses a
BTreeMapinternally for deterministic iteration. - Ergonomic: fluent API with zero dependencies (aside from the standard library).
- Useful for threading context-like metadata (e.g., request IDs, tenant info) through application layers.
📦 Example
use vessel::Vessel;
let vessel = Vessel::new();
let vessel = vessel.with_value("request_id", "abc-123");
assert_eq!(vessel.get_value("request_id"), Some(&"abc-123".to_string()));
📚 API
pub fn new() -> Self;
pub fn with_value(&self, key: &str, value: &str) -> Self;
pub fn get_value(&self, key: &str) -> Option<&String>;
pub fn get_values(&self) -> &BTreeMap<String, String>;
with_value: Adds a key-value pair to the vessel, returning a new instance.get_value: Retrieves a value for a given key.get_values: Returns all key-value pairs.
🧪 Tests
Run tests with:
cargo test
📜 License
MIT
Description
v0.1.3
Latest
Languages
Rust
100%