1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
use std::fmt; use serde_json; #[derive(Serialize, Deserialize, Debug)] #[serde(untagged)] pub enum Event { Defined(PhoenixEvent), Custom(String), } #[derive(Serialize, Deserialize, Debug)] pub enum PhoenixEvent { #[serde(rename="phx_join")] Join, #[serde(rename="phx_close")] Close, #[serde(rename="phx_reply")] Reply, #[serde(rename="heartbeat")] Heartbeat } #[derive(Serialize, Deserialize)] pub struct Test { event: Event } #[test] fn test_event_serialization() { let t = Test{event: Event::Custom("blablabla".to_string())}; let val = serde_json::to_string(&t).unwrap(); println!("{}", val); assert_eq!(val, "{\"event\":\"blablabla\"}"); }