У меня есть этот код (упрощенно):
pub struct MessageSender<T: prost::Message> {
send_channel: crossbeam::Sender<Vec<u8>>,
}
impl<T> MessageSender<T> where T: prost::Message {
pub fn send(&self, output: &T) {
let mut buf: Vec<u8> = Vec::with_capacity(output.encoded_len());
output.encode(&mut buf).unwrap();
self.send_channel.send(buf).unwrap();
}
}
Надеюсь, цель ясна - я хочу struct
, который может отправлять конкретный struct
, который реализует prost::Message
, но я на самом деле тольконужен этот параметр шаблона для функции send()
. Я могу исправить это, добавив _marker: PhantomData<T>
к struct
.
Это то, что нужно сделать здесь? И зачем это нужно? Кажется немного раздражающим, потому что тогда я должен инициализировать этот маркер везде, где я создаю одну из этих структур.