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