Skip to content

Commit 08e7c7d

Browse files
author
Jan Jansen
committed
Add documentation
1 parent f0fe18b commit 08e7c7d

File tree

3 files changed

+138
-8
lines changed

3 files changed

+138
-8
lines changed

src/de/mod.rs

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,49 @@ mod map;
1515
mod seq;
1616
mod var;
1717

18-
pub struct Deserializer<R: Read> {
19-
depth: usize,
20-
reader: EventReader<R>,
21-
peeked: Option<XmlEvent>,
22-
is_map_value: bool,
23-
}
24-
18+
/// A convenience method for deserialize some object from a string.
19+
///
20+
/// ```rust
21+
/// # #[macro_use]
22+
/// # extern crate serde_derive;
23+
/// # extern crate serde;
24+
/// # extern crate serde_xml_rs;
25+
/// # use serde_xml_rs::from_str;
26+
/// #[derive(Debug, Deserialize, PartialEq)]
27+
/// struct Item {
28+
/// name: String,
29+
/// source: String,
30+
/// }
31+
/// # fn main() {
32+
/// let s = r##"<item name="hello" source="world.rs" />"##;
33+
/// let item: Item = from_str(s).unwrap();
34+
/// assert_eq!(item, Item { name: "hello".to_string(),source: "world.rs".to_string()});
35+
/// # }
36+
/// ```
2537
pub fn from_str<'de, T: de::Deserialize<'de>>(s: &str) -> Result<T> {
26-
deserialize(s.as_bytes())
38+
from_reader(s.as_bytes())
2739
}
2840

41+
42+
/// A convenience method for deserialize some object from a reader.
43+
///
44+
/// ```rust
45+
/// # #[macro_use]
46+
/// # extern crate serde_derive;
47+
/// # extern crate serde;
48+
/// # extern crate serde_xml_rs;
49+
/// # use serde_xml_rs::from_reader;
50+
/// #[derive(Debug, Deserialize, PartialEq)]
51+
/// struct Item {
52+
/// name: String,
53+
/// source: String,
54+
/// }
55+
/// # fn main() {
56+
/// let s = r##"<item name="hello" source="world.rs" />"##;
57+
/// let item: Item = from_reader(s.as_bytes()).unwrap();
58+
/// assert_eq!(item, Item { name: "hello".to_string(),source: "world.rs".to_string()});
59+
/// # }
60+
/// ```
2961
pub fn from_reader<'de, R: Read, T: Deserialize<'de>>(reader: R) -> Result<T> {
3062
T::deserialize(&mut Deserializer::new_from_reader(reader))
3163
}
@@ -34,6 +66,13 @@ pub fn deserialize<'de, R: Read, T: Deserialize<'de>>(reader: R) -> Result<T> {
3466
from_reader(reader)
3567
}
3668

69+
pub struct Deserializer<R: Read> {
70+
depth: usize,
71+
reader: EventReader<R>,
72+
peeked: Option<XmlEvent>,
73+
is_map_value: bool,
74+
}
75+
3776
impl<'de, R: Read> Deserializer<R> {
3877
pub fn new(reader: EventReader<R>) -> Self {
3978
Deserializer {

src/lib.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
//!
2+
//! ```rust
3+
//! extern crate serde;
4+
//! extern crate serde_xml_rs;
5+
//!
6+
//! #[macro_use]
7+
//! extern crate serde_derive;
8+
//!
9+
//! use serde_xml_rs::{from_str, to_string};
10+
//!
11+
//! #[derive(Debug, Serialize, Deserialize, PartialEq)]
12+
//! struct Item {
13+
//! name: String,
14+
//! source: String,
15+
//! }
16+
//!
17+
//! fn main() {
18+
//! let src = r#"<Item><name>Banana</name><source>Store</source></Item>"#;
19+
//! let should_be = Item {
20+
//! name: "Banana".to_string(),
21+
//! source: "Store".to_string(),
22+
//! };
23+
//!
24+
//! let item: Item = from_str(src).unwrap();
25+
//! assert_eq!(item, should_be);
26+
//!
27+
//! let reserialized_item = to_string(&item).unwrap();
28+
//! assert_eq!(src, reserialized_item);
29+
//! }
30+
//! ```
31+
32+
133
#[macro_use]
234
extern crate error_chain;
335
#[macro_use]

src/ser/mod.rs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,70 @@ pub fn serialize<W: Write, S: Serialize>(value: S, writer: W) -> Result<()> {
4444
to_writer(writer, &value)
4545
}
4646

47+
48+
/// A convenience method for serializing some object to a buffer.
49+
///
50+
/// You'll almost always want to use this over any of the other things in the
51+
/// `serde_xml_rs::to_writer` module.
52+
///
53+
///
54+
/// # Examples
55+
///
56+
/// ```rust
57+
/// # #[macro_use]
58+
/// # extern crate serde_derive;
59+
/// # extern crate serde;
60+
/// # extern crate serde_xml_rs;
61+
/// # use serde_xml_rs::to_writer;
62+
/// #[derive(Serialize)]
63+
/// struct Person {
64+
/// name: String,
65+
/// age: u32,
66+
/// }
67+
///
68+
/// # fn main() {
69+
/// let mut buffer = Vec::new();
70+
/// let joe = Person {name: "Joe".to_string(), age: 42};
71+
///
72+
/// to_writer(&mut buffer, &joe).unwrap();
73+
///
74+
/// let serialized = String::from_utf8(buffer).unwrap();
75+
/// println!("{}", serialized);
76+
/// # }
77+
/// ```
4778
pub fn to_writer<W: Write, S: Serialize>(writer: W, value: &S) -> Result<()> {
4879
let mut ser = Serializer::new(writer);
4980
value.serialize(&mut ser)
5081
}
5182

83+
84+
/// A convenience method for serializing some object to a string.
85+
///
86+
/// You'll almost always want to use this over any of the other things in the
87+
/// `serde_xml_rs::to_string` module.
88+
///
89+
///
90+
/// # Examples
91+
///
92+
/// ```rust
93+
/// # #[macro_use]
94+
/// # extern crate serde_derive;
95+
/// # extern crate serde;
96+
/// # extern crate serde_xml_rs;
97+
/// # use serde_xml_rs::to_string;
98+
/// #[derive(Serialize)]
99+
/// struct Person {
100+
/// name: String,
101+
/// age: u32,
102+
/// }
103+
///
104+
/// # fn main() {
105+
///
106+
/// let joe = Person {name: "Joe".to_string(), age: 42};
107+
/// let serialized = to_string(&joe).unwrap();
108+
/// println!("{}", serialized);
109+
/// # }
110+
/// ```
52111
pub fn to_string<S: Serialize>(value: &S) -> Result<String> {
53112
// Create a buffer and serialize our nodes into it
54113
let mut writer = Vec::with_capacity(128);

0 commit comments

Comments
 (0)