envelo

Crates.ioenvelo
lib.rsenvelo
version0.0.1
created_at2026-01-01 16:21:42.238625+00
updated_at2026-01-01 16:21:42.238625+00
descriptionMinimal envelope that bundles header, payload, and per-route metadata; no dependencies and `#![no_std]`.
homepagehttps://github.com/envelo-rs/envelo
repositoryhttps://github.com/envelo-rs/envelo
max_upload_size
id2016391
size26,435
Mikou (Mikou-2A)

documentation

https://docs.rs/envelo

README

envelo

CI Crates.io Docs.rs no_std MSRV License: MIT OR Apache-2.0

⚠️ 0.0.x is pre-release/experimental; breaking changes are expected. See VERSIONS.md for status and compatibility details.

Minimal envelope for creation-time fields (Header), body (Payload), and per-route metadata (Extension). One type, zero dependencies, and #![no_std] by default.

What’s included

  • Single type: Envelo<Header, Payload, Extension>.
  • Clear split: immutable creation-time data in Header; hop-local metadata in Extension.
  • Ergonomics: constructor, immutable/mutable accessors, into_parts, and From<(H, P, E)> for easy wrapping.
  • Traits: Debug + Clone + PartialEq + Eq + Hash when your field types support them.
  • Dependencies: none; #![no_std] without feature flags.

Install

[dependencies]
envelo = "0.0.1"

Example

use envelo::Envelo;

#[derive(Debug, Clone, PartialEq, Eq, Hash)]
struct Header {
    event_id: &'static str,
}

#[derive(Debug, Clone, PartialEq, Eq, Hash)]
struct UserSignup<'a> {
    user_id: &'a str,
}

let msg = Envelo::new(
    Header { event_id: "evt-123" },
    UserSignup { user_id: "alice" },
    (), // nothing to attach per route yet
);

assert_eq!(msg.payload().user_id, "alice");

Swap or mutate Extension as the message moves between stages. See ARCHITECTURE.md for design notes and patterns.

More

License

Dual-licensed under MIT OR Apache-2.0. See the bundled license files.

Commit count: 0

cargo fmt