Hyper présente les caractéristiques suivantes exemple d'un Handler
qui met en œuvre Sync
:
use std::sync::Mutex;
use std::sync::mpsc::{channel, Sender};
use hyper::server::{Handler, Server, Request, Response};
struct SenderHandler {
sender: Mutex<Sender<&'static str>>
}
impl Handler for SenderHandler {
fn handle(&self, req: Request, res: Response) {
self.sender.lock().unwrap().send("start").unwrap();
}
}
et précise qu'un Handler
doit mettre en œuvre Sync
puisque Handler
peuvent être appelées à partir de plusieurs fils d'exécution.
Pour moi, cela ressemble à une pénalité de performance inutile. Ce que je préférerais, c'est mettre en place un SenderHandler
par thread, chacun étant indépendant, ce qui supprimerait l'obligation d'implémenter un système de gestion de l'information. Sync
.
Ai-je mal compris Hyper, le système de type de Rust ou est-ce impossible ?