3 #![allow(unused_imports)]
4 #![feature(rustc_private)]
6 extern crate rustc_macros;
7 extern crate rustc_serialize;
9 // Necessary to pull in object code as the rest of the rustc crates are shipped only as rmeta
11 #[allow(unused_extern_crates)]
12 extern crate rustc_driver;
14 use rustc_macros::{Decodable, Encodable};
15 use rustc_serialize::opaque::{MemDecoder, MemEncoder};
16 use rustc_serialize::{Decodable, Encodable, Encoder};
18 #[derive(Encodable, Decodable)]
24 let obj = A { foo: Box::new([true, false]) };
26 let mut encoder = MemEncoder::new();
27 obj.encode(&mut encoder);
28 let data = encoder.finish();
30 let mut decoder = MemDecoder::new(&data, 0);
31 let obj2 = A::decode(&mut decoder);
33 assert_eq!(obj.foo, obj2.foo);