我希望有一个变量model
,它可以是Model1
或者Model2
,这取决于bytes
中所编码的实际模型。如何合并这两个模型的Result
,其中只有一个是Ok()
?
let model1 = Model1::from_reader(&mut reader, &bytes);
let model2 = Model2::from_reader(&mut reader, &bytes);
let model = /* ??? */;
write_file(model).unwrap();
他们都实现了
MessageWrite
,这是我从现在开始唯一需要的特性。以下是write_file()
的原型。fn write_file<M: MessageWrite>(msg: M) -> io::Result<()>
我正在使用quick-protobuf库进行模型构建。其中from_reader
的原型:
impl<'a> MessageRead<'a> for Model1<'a> {
fn from_reader(r: &mut BytesReader, bytes: &'a [u8]) -> Result<Self> {
// ...
}
}
还有 MessageWrite
特性。请注意,它有一个 Sized
约束。
pub trait MessageWrite: Sized {
// ...
}