【发布时间】:2016-10-26 21:03:09
【问题描述】:
我正在实现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
}
【问题讨论】:
-
Rust 是否支持泛型编程:doc.rust-lang.org/book/generics.html
-
@gbe 当然,我知道确实如此。但是,我不仅需要泛型,还需要生成具有新标识符(名称)的新函数。我目前的理解是,不幸的是,现在这是不可能的,因为 rust 的宏规则不允许生成新的 idents..