vessel/README.md
kjuulh 909fd3b1c9
All checks were successful
continuous-integration/drone/push Build is passing
feat: remove garbage readme
2025-05-22 11:46:17 +02:00

48 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 `BTreeMap` internally 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
```rust
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
```rust
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:
```bash
cargo test
```
## 📜 License
MIT