如何要求两个特征的关联类型相同?

时间:2019-03-13 06:24:27

标签: rust associated-types

我具有以下两个特征:

VERBS_PATH = resource_filename('uncertainty.uncertainty.lib.nlp', 'verbs.txt')

我希望trait Filter { type Message; fn is_valid(&self, message: &Self::Message) -> bool; } trait Client { type Message; fn send(&self, message: &Self::Message) -> Result<(), Error>; } Filter的实现使用相同的Client类型。

Message

无法编译:

struct ClientWithFilter<C: Client, F: Filter> {
    filter: F,
    client: C,
}

impl<C: Client, F: Filter> ClientWithFilter<C, F> {
    /// C::Message or F::Message???
    fn check_and_send(&self, message: &C::Message) -> Result<(), Error> {
        if self.filter.is_valid(message) {
            self.client.send(message)
        } else {
            Err(Error::MessageInvalid)
        }
    }
}

编译器会看到2种不同的类型,我想只用一种。 如何以正确的方式在Rust中编写此代码?

0 个答案:

没有答案