vessel 0.1.2

A context propogation struct. Carries cancellation, and other useful items transparently through an application
Documentation
# 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