envelo 0.0.1

Minimal envelope that bundles header, payload, and per-route metadata; no dependencies and `#![no_std]`.
Documentation
  • Coverage
  • 100%
    2 out of 2 items documented1 out of 1 items with examples
  • Size
  • Source code size: 25.87 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.05 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • Homepage
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Mikou-2A

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.