Procedural macros for the WsForge WebSocket framework.
This crate provides compile-time code generation macros that reduce boilerplate and improve developer experience when building WebSocket applications with WsForge.
Transform async functions into WebSocket handlers.
use wsforge_macros::websocket_handler;
#[websocket_handler]
async fn my_handler(msg: Message) -> Result<String> {
Ok("response".to_string())
}Auto-implement message conversion methods.
use wsforge_macros::WebSocketMessage;
use serde::{Deserialize, Serialize};
#[derive(WebSocketMessage, Serialize, Deserialize)]
struct ChatMessage {
username: String,
text: String,
}
// Generates:
// - into_message(&self) -> Message
// - from_message(msg: Message) -> Result<Self, Error>Implement the Handler trait for custom types.
use wsforge_macros::WebSocketHandler;
#[derive(WebSocketHandler)]
struct MyHandler;
impl MyHandler {
async fn handle(
&self,
message: Message,
conn: Connection,
state: AppState,
extensions: Extensions,
) -> Result<Option<Message>> {
// Your logic here
}
}Create a new Router instance.
use wsforge_macros::routes;
let router = routes!()
.default_handler(handler(my_handler));This crate is typically used as a dependency of the main wsforge crate:
[dependencies]
wsforge = { version = "0.1.0", features = ["macros"] }
Or directly:
[dependencies]
wsforge-macros = "0.1.0"
For complete documentation, see:
- Rust 1.70 or later
- Part of the WsForge workspace
MIT License - see LICENSE for details.
- Main Crate: wsforge
- Core Library: wsforge-core
- GitHub: aarambhdevhub/wsforge