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
#[derive(Debug, Serialize, Deserialize, Clone)] #[serde(tag = "type", rename_all = "camelCase")] pub enum LineSourceType { User { #[serde(rename = "userId")] user_id: String }, Room { #[serde(rename = "roomId")] room_id: String, #[serde(rename = "userId")] user_id: String, }, Group { #[serde(rename = "groupId")] group_id: String, #[serde(rename = "userId", default)] user_id: String }, } #[derive(Serialize, Deserialize, Clone)] pub struct LineSource { #[serde(flatten, rename = "type")] pub kind: LineSourceType, } impl LineSource { pub fn new (kind: LineSourceType) -> LineSource { LineSource { kind } } }