use std::io::Cursor;
use jetstream_macros::JetStreamWireFormat;
use jetstream_wireformat::WireFormat;
#[derive(Debug, JetStreamWireFormat)]
struct Message {
id: u32,
content: String,
}
fn encode_message(id: u32, content: String) -> Vec<u8> {
let msg = Message { id, content };
let mut buffer = Vec::new();
msg.encode(&mut buffer).expect("Failed to encode message");
buffer
}
fn decode_message(buffer: &[u8]) -> (u32, String) {
let mut cursor = Cursor::new(buffer);
let msg: Message =
WireFormat::decode(&mut cursor).expect("Failed to decode message");
(msg.id, msg.content)
}
fn main() {
let encoded = encode_message(42, "Hello from WebAssembly!".to_string());
println!("Encoded message: {:?}", encoded);
let (id, content) = decode_message(&encoded);
println!("Decoded message: id={}, content=\"{}\"", id, content);
}