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 36 37 38 39 40 41 42 43 44 45 46 47 48 49
use serde::de::{Deserialize, DeserializeOwned, Deserializer}; use serde::ser::Serialize; pub mod accounts; pub mod aggregations; pub mod assets; pub mod data; pub mod effects; pub mod ledgers; pub mod offers; pub mod operations; pub mod payments; pub mod root; pub mod trades; pub mod transactions; #[derive(Debug, Clone)] pub struct Page<T> where T: DeserializeOwned + Serialize, { pub records: Vec<T>, } impl<'de, T> Deserialize<'de> for Page<T> where T: DeserializeOwned + Serialize, { fn deserialize<D>(d: D) -> std::result::Result<Self, D::Error> where D: Deserializer<'de>, { let inner: Embedded<EmbeddedRecords<T>> = Embedded::deserialize(d)?; Ok(Page { records: inner.embedded.records, }) } } #[derive(Debug, Serialize, Deserialize)] struct Embedded<T> { #[serde(rename = "_embedded")] embedded: T, } #[derive(Debug, Serialize, Deserialize)] struct EmbeddedRecords<T> { records: Vec<T>, }