entrez_rs/parser/
esearch.rs1extern crate serde;
37extern crate quick_xml;
38use serde::{Deserialize};
39use quick_xml::de::{from_str, DeError};
40
41
42#[derive(Debug, Deserialize, PartialEq)]
43pub struct IdList {
44 #[serde(rename = "Id", default)]
45 pub ids: Vec<String>
46}
47
48#[derive(Debug, Deserialize, PartialEq)]
49pub struct Translation {
50 #[serde(rename = "From", default)]
51 pub from: String,
52 #[serde(rename = "To", default)]
53 pub to: String,
54}
55
56#[derive(Debug, Deserialize, PartialEq)]
57pub struct TranslationSet {
58 #[serde(rename = "Translation")]
59 pub translation: Vec<Translation>
60}
61
62#[derive(Debug, Deserialize, PartialEq)]
63pub struct TranslationStack {
64 #[serde(rename = "TermSet")]
65 pub term_set: Vec<TermSet>,
66 #[serde(rename = "OP")]
67 pub op: Vec<String>,
68}
69
70#[derive(Debug, Deserialize, PartialEq)]
71pub struct TermSet {
72 #[serde(rename = "Term", default)]
73 pub term: String,
74 #[serde(rename = "Field", default)]
75 pub field: String,
76 #[serde(rename = "Count", default)]
77 pub count: u64,
78 #[serde(rename = "Explode", default)]
79 pub explode: String,
80}
81
82
83#[derive(Debug, Deserialize, PartialEq)]
84pub struct ESearchResult {
85 #[serde(rename = "Count", default)]
86 pub count: u64,
87 #[serde(rename = "RetMax", default)]
88 pub ret_max: u64,
89 #[serde(rename = "RetStart", default)]
90 pub ret_start: u64,
91 #[serde(rename = "QueryKey", default)]
92 pub query_key: u64,
93 #[serde(rename = "WebEnv", default)]
94 pub web_env: String,
95 #[serde(rename = "IdList")]
96 pub id_list: IdList,
97 #[serde(rename = "QueryTranslation", default)]
102 pub query_translation: String,
103}
104
105impl ESearchResult {
106 pub fn read(xml: &str) -> Result<ESearchResult, DeError> {
107 from_str(xml)
108 }
109}