]> git.lizzy.rs Git - rust.git/blob - tests/ui-fulldeps/deriving-encodable-decodable-box.rs
Rollup merge of #107596 - Kobzol:stage-build-timer, r=Mark-Simulacrum
[rust.git] / tests / ui-fulldeps / deriving-encodable-decodable-box.rs
1 // run-pass
2
3 #![allow(unused_imports)]
4 #![feature(rustc_private)]
5
6 extern crate rustc_macros;
7 extern crate rustc_serialize;
8
9 // Necessary to pull in object code as the rest of the rustc crates are shipped only as rmeta
10 // files.
11 #[allow(unused_extern_crates)]
12 extern crate rustc_driver;
13
14 use rustc_macros::{Decodable, Encodable};
15 use rustc_serialize::opaque::{MemDecoder, MemEncoder};
16 use rustc_serialize::{Decodable, Encodable, Encoder};
17
18 #[derive(Encodable, Decodable)]
19 struct A {
20     foo: Box<[bool]>,
21 }
22
23 fn main() {
24     let obj = A { foo: Box::new([true, false]) };
25
26     let mut encoder = MemEncoder::new();
27     obj.encode(&mut encoder);
28     let data = encoder.finish();
29
30     let mut decoder = MemDecoder::new(&data, 0);
31     let obj2 = A::decode(&mut decoder);
32
33     assert_eq!(obj.foo, obj2.foo);
34 }