Crate wire_framed
source ·Expand description
wire-framed is a library for encoding and decoding frames using a custom binary protocol. It prioritizes ease-of-use.
It reolves around two traits FromFrame and IntoFrame. These traits can be manually implemented relatively easily using
the utilities provided in the utils module or automatically using the Encoding and Decoding macros.
Usage
use wire_framed::prelude::*;
#[derive(Debug, Encoding, Decoding, PartialEq, Eq)]
pub struct Foo {
pub id: u32,
pub name: String,
pub description: String,
pub created_at: u64,
}
fn send() -> Result<(), std::io::Error> {
let foo = Foo {
id: 1,
name: "John".to_string(),
description: "John is a legend".to_string(),
created_at: 1234567890,
};
let frame = foo.into_frame();
send_to_socket(frame)
}
fn recv() -> Result<(), std::io::Error> {
let bytes = recv_from_socket();
let foo = Foo::from_frame(bytes)?;
// process foo
}
Re-exports
pub use wire_framed_core;pub use wire_framed_core::bytes;
Modules
Structs
- A cheaply cloneable and sliceable chunk of contiguous memory.
- A unique reference to a contiguous slice of memory.
- Codec type for [
Message] that implements [tokio_util::codec::Decoder] and [tokio_util::codec::Encoder].
Traits
- Read bytes from a buffer.
- A trait for values that provide sequential write access to bytes.
- Trait for converting a frame into `Self.
- Trait for converting a
Selfinto a frame.
Derive Macros
- Implements the
FromFrametraits for the type. - Implements the
IntoFrametraits for the type.