"序列化"和"rustc-serialize"板条箱之间有什么区别?

con*_*com 12 rust

这是serialize箱子,这是rustc-serialize箱子.

当我从包装箱中使用EncodableDecodable特征时,我会收到编译器的弃用警告serialize.编译器告诉我使用RustcEncodableRustcDecodablerustc-serialize箱子中使用.

看起来这只会使相同功能的可读性降低(除了base64提供的编码rustc-serialize).这些板条箱有什么区别?

Bur*_*hi5 19

所述serialize箱是一个内部标准锈病分布的一部分.它不会在Rust 1.0 stable/beta频道中提供.

rustc-serialize以前的箱子serialize,但它被移出到一个单独的存储库并上传到crates.io,以便它可以自己发展.

之所以这样做是因为实用性rustc-serialize很大,但为了使Rust 1.0及时稳定下来是不现实的.由于Rust分发将禁止稳定通道上的不稳定功能,因此继续使用序列化基础结构的唯一方法是:1)稳定我们所拥有的或2)将其移动到crates.io,其中不稳定的限制不适用.

rustc-serialize有许多已知的缺点,它正在努力,所以稳定真正的东西不是一个选择.

但这些Decodable/Encodable功能需要编译器支持(因为对于Rust 1.0,编译器插件也不稳定).作为一种权宜之计,它RustcDecodable/RustcEncodable被发明作为rustc-serialize箱子明确使用的临时措施.这有点奇怪,但它留下的Decodable/Encodable名称可用于未来的向后兼容版本的serialize箱子,比我们现在更好(也许这serde2将是前面提到的链接).

所以暂时坚持使用rustc-serializeRustcDecodable/RustcEncodable.

(我道歉,我无法想出一个引用所有这一切的链接.这是我从GitHub问题中产生的知识.也许有一个RFC可以解决所有这些问题.我不记得了. )