Неиспользуемый параметр шаблона в структуре Rust - PullRequest
0 голосов
/ 10 октября 2019

У меня есть этот код (упрощенно):

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.

Это то, что нужно сделать здесь? И зачем это нужно? Кажется немного раздражающим, потому что тогда я должен инициализировать этот маркер везде, где я создаю одну из этих структур.

...