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
use serde::ser::{Serialize, SerializeStruct, Serializer}; #[derive(Serialize)] pub struct Pagination { pub max: Option<i32>, pub offset: Option<i32>, } pub enum Sort<K: Serialize> { Asc(K), Desc(K), } impl<K: Serialize> Serialize for Sort<K> { fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer, { let mut state = serializer.serialize_struct("Sort", 2)?; match *self { Sort::Asc(ref k) => { state.serialize_field("sort", k)?; state.serialize_field("order", "asc")?; } Sort::Desc(ref k) => { state.serialize_field("sort", k)?; state.serialize_field("order", "desc")?; } } state.end() } }