]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass-fulldeps/issue-11881.rs
Rollup merge of #56425 - scottmcm:redo-vec-set_len-docs, r=Centril
[rust.git] / src / test / run-pass-fulldeps / issue-11881.rs
1 #![allow(unused_must_use)]
2 #![allow(dead_code)]
3 #![allow(unused_imports)]
4
5 #![feature(rustc_private)]
6
7 extern crate serialize;
8 use serialize as rustc_serialize;
9
10 use std::io::Cursor;
11 use std::io::prelude::*;
12 use std::fmt;
13 use std::slice;
14
15 use serialize::{Encodable, Encoder};
16 use serialize::json;
17 use serialize::opaque;
18
19 #[derive(RustcEncodable)]
20 struct Foo {
21     baz: bool,
22 }
23
24 #[derive(RustcEncodable)]
25 struct Bar {
26     froboz: usize,
27 }
28
29 enum WireProtocol {
30     JSON,
31     Opaque,
32     // ...
33 }
34
35 fn encode_json<T: Encodable>(val: &T, wr: &mut Cursor<Vec<u8>>) {
36     write!(wr, "{}", json::as_json(val));
37 }
38 fn encode_opaque<T: Encodable>(val: &T, wr: Vec<u8>) {
39     let mut encoder = opaque::Encoder::new(wr);
40     val.encode(&mut encoder);
41 }
42
43 pub fn main() {
44     let target = Foo{baz: false,};
45     let proto = WireProtocol::JSON;
46     match proto {
47         WireProtocol::JSON => encode_json(&target, &mut Cursor::new(Vec::new())),
48         WireProtocol::Opaque => encode_opaque(&target, Vec::new())
49     }
50 }