我正在实现Serde Serializer
trait,其中有很多方法。其中许多看起来非常相似(例如那些整数类型的方法只是将字节复制到某个缓冲区),因此能够通过某种方式自动生成这些方法将是不错的选择。我是否可以编写一些通用函数或宏以一个方法(宏)实现许多方法?
我的实现如下:
use serde::Serializer;
use byteorder::{WriteBytesExt, LittleEndian};
struct MySerializer {
...
}
impl Serializer for MySerializer {
fn serialize_i32(&mut self, v:i32) -> Result<(), Error> {
try!(self.buffer.write_i32::<LittleEndian>(v));
}
fn serialize_u8(&mut self, v:u8) -> Result<(), Error> {
try!(self.buffer.write_u8::<LittleEndian>(v));
}
// many similar looking functions here
}