我具有以下两个特征:
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中编写此代码?