Hyper には、次の実装例があります。HandlerSync
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();
}
}
は異なるスレッドから呼び出すことができるため、Handlerを実装する必要があると述べています。SyncHandler
私には、これは不要なパフォーマンス ペナルティのように思えます。私が好むのはSenderHandler、スレッドごとに 1 つをセットアップし、それぞれが独立していることです。これにより、実装の要件がなくなりSyncます。
Hyper、Rust の型システムを誤解していますか、それとも不可能ですか?