rustc_metadata: replace RBML with a simple and type-safe scheme.

This commit is contained in:
Eduard Burtescu 2016-09-16 17:25:54 +03:00
parent 24aef24e1a
commit a96abca2a4
21 changed files with 1828 additions and 2472 deletions

View file

@ -34,14 +34,14 @@ struct Bar {
enum WireProtocol {
JSON,
RBML,
Opaque,
// ...
}
fn encode_json<T: Encodable>(val: &T, wr: &mut Cursor<Vec<u8>>) {
write!(wr, "{}", json::as_json(val));
}
fn encode_rbml<T: Encodable>(val: &T, wr: &mut Cursor<Vec<u8>>) {
fn encode_opaque<T: Encodable>(val: &T, wr: &mut Cursor<Vec<u8>>) {
let mut encoder = opaque::Encoder::new(wr);
val.encode(&mut encoder);
}
@ -52,6 +52,6 @@ pub fn main() {
let proto = WireProtocol::JSON;
match proto {
WireProtocol::JSON => encode_json(&target, &mut wr),
WireProtocol::RBML => encode_rbml(&target, &mut wr)
WireProtocol::Opaque => encode_opaque(&target, &mut wr)
}
}