Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

WsForge Macros

Procedural macros for the WsForge WebSocket framework.

Overview

This crate provides compile-time code generation macros that reduce boilerplate and improve developer experience when building WebSocket applications with WsForge.

Available Macros

#[websocket_handler]

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())
}

#[derive(WebSocketMessage)]

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>

#[derive(WebSocketHandler)]

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
    }
}

routes!()

Create a new Router instance.

use wsforge_macros::routes;

let router = routes!()
    .default_handler(handler(my_handler));

Installation

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"

Documentation

For complete documentation, see:

Requirements

  • Rust 1.70 or later
  • Part of the WsForge workspace

License

MIT License - see LICENSE for details.

Links