Just a simple TCP/UDP Message Communication wrapper. Uses `serde` to data serialization in `bincode` format. Requires the type to derive `serde::Serialize` for sending and `serde:Deserialize` for receiving messages. Consider the following enum: ```rust use serde::{Serialize, Deserialize}; #[derive(Debug, Serialize, Deserialize, PartialEq)] enum Chat { Connect, Msg(String), Close, } ``` Receiving messages: ```rust use std::{io, net::TcpListener}; use stmc::tcp; fn main() -> io::Result<()> { let listener = TcpListener::bind(("127.0.0.1", 8080))?; 'server: for mut stream in listener.incoming().flatten() { loop { let msg: Chat = tcp::read(&mut stream)?; match msg { Chat::Connect => println!("new user connect: {}", stream.ttl()?), Chat::Msg(txt) => println!("new message from {}: {txt}", stream.ttl()?), Chat::Close => break 'server, } } } Ok(()) } ``` Sending messages: ```rust use serde::{Deserialize, Serialize}; use std::{io, net::TcpStream}; fn main() -> io::Result<()> { let mut stream = TcpStream::connect(("127.0.0.1", 8080))?; tcp::send(Chat::Connect, &mut stream)?; tcp::send(Chat::Msg("hi".into()), &mut stream)?; tcp::send(Chat::Close, &mut stream)?; Ok(()) } ``` To use UDP protocol, just change from `tcp` to `udp`.