Skip to content

Commit eb8365b

Browse files
authored
feat(value): Make visitors of XML value types public. (#117)
* feat: Make visitors of XML value types public. * `cargo clippy`
1 parent 9cdf930 commit eb8365b

File tree

2 files changed

+91
-17
lines changed

2 files changed

+91
-17
lines changed

xmlity/src/value/deserialize.rs

Lines changed: 90 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//! This module contains the deserialization implementations for the XML value types including visitors.
12
use crate::{
23
de::{self, DeserializeContext, SeqAccess, Visitor},
34
Deserialize, Deserializer, ExpandedName, Prefix, XmlNamespace,
@@ -116,20 +117,28 @@ impl<'de> Deserialize<'de> for XmlValue {
116117

117118
// Text
118119

119-
struct XmlTextVisitor<'v> {
120+
/// A visitor for deserializing to [`XmlText`].
121+
pub struct XmlTextVisitor<'v> {
120122
marker: PhantomData<XmlText>,
121123
lifetime: PhantomData<&'v ()>,
122124
}
123125

124126
impl XmlTextVisitor<'_> {
125-
fn new() -> Self {
127+
/// Creates a new [`XmlTextVisitor`].
128+
pub fn new() -> Self {
126129
Self {
127130
marker: PhantomData,
128131
lifetime: PhantomData,
129132
}
130133
}
131134
}
132135

136+
impl Default for XmlTextVisitor<'_> {
137+
fn default() -> Self {
138+
Self::new()
139+
}
140+
}
141+
133142
impl<'v> crate::de::Visitor<'v> for XmlTextVisitor<'v> {
134143
type Value = XmlText;
135144

@@ -174,19 +183,27 @@ impl<'de> Deserialize<'de> for XmlText {
174183

175184
// CData
176185

177-
struct XmlCDataVisitor<'v> {
186+
/// A visitor for deserializing to [`XmlCData`].
187+
pub struct XmlCDataVisitor<'v> {
178188
marker: PhantomData<XmlCData>,
179189
lifetime: PhantomData<&'v ()>,
180190
}
181191
impl XmlCDataVisitor<'_> {
182-
fn new() -> Self {
192+
/// Creates a new [`XmlCDataVisitor`].
193+
pub fn new() -> Self {
183194
Self {
184195
marker: PhantomData,
185196
lifetime: PhantomData,
186197
}
187198
}
188199
}
189200

201+
impl Default for XmlCDataVisitor<'_> {
202+
fn default() -> Self {
203+
Self::new()
204+
}
205+
}
206+
190207
impl<'de> Visitor<'de> for XmlCDataVisitor<'de> {
191208
type Value = XmlCData;
192209
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -212,19 +229,27 @@ impl<'de> Deserialize<'de> for XmlCData {
212229

213230
// Child
214231

215-
struct XmlChildVisitor<'v> {
232+
/// A visitor for deserializing to [`XmlChild`].
233+
pub struct XmlChildVisitor<'v> {
216234
marker: PhantomData<XmlChild>,
217235
lifetime: PhantomData<&'v ()>,
218236
}
219237
impl XmlChildVisitor<'_> {
220-
fn new() -> Self {
238+
/// Creates a new [`XmlChildVisitor`].
239+
pub fn new() -> Self {
221240
Self {
222241
marker: PhantomData,
223242
lifetime: PhantomData,
224243
}
225244
}
226245
}
227246

247+
impl Default for XmlChildVisitor<'_> {
248+
fn default() -> Self {
249+
Self::new()
250+
}
251+
}
252+
228253
impl<'v> crate::de::Visitor<'v> for XmlChildVisitor<'v> {
229254
type Value = XmlChild;
230255
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -290,19 +315,28 @@ impl<'de> de::Deserialize<'de> for XmlChild {
290315

291316
// Element
292317

293-
struct XmlElementVisitor<'v> {
318+
/// A visitor for deserializing to [`XmlElement`].
319+
pub struct XmlElementVisitor<'v> {
294320
marker: PhantomData<XmlElement>,
295321
lifetime: PhantomData<&'v ()>,
296322
}
323+
297324
impl XmlElementVisitor<'_> {
298-
fn new() -> Self {
325+
/// Creates a new [`XmlElementVisitor`].
326+
pub fn new() -> Self {
299327
Self {
300328
marker: PhantomData,
301329
lifetime: PhantomData,
302330
}
303331
}
304332
}
305333

334+
impl Default for XmlElementVisitor<'_> {
335+
fn default() -> Self {
336+
Self::new()
337+
}
338+
}
339+
306340
impl<'v> crate::de::Visitor<'v> for XmlElementVisitor<'v> {
307341
type Value = XmlElement;
308342
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -350,20 +384,28 @@ impl<'de> crate::de::Deserialize<'de> for XmlElement {
350384

351385
// Attribute
352386

353-
struct XmlAttributeVisitor<'v> {
387+
/// A visitor for deserializing to [`XmlAttribute`].
388+
pub struct XmlAttributeVisitor<'v> {
354389
marker: PhantomData<XmlAttribute>,
355390
lifetime: PhantomData<&'v ()>,
356391
}
357392

358393
impl XmlAttributeVisitor<'_> {
359-
fn new() -> Self {
394+
/// Creates a new [`XmlAttributeVisitor`].
395+
pub fn new() -> Self {
360396
Self {
361397
marker: PhantomData,
362398
lifetime: PhantomData,
363399
}
364400
}
365401
}
366402

403+
impl Default for XmlAttributeVisitor<'_> {
404+
fn default() -> Self {
405+
Self::new()
406+
}
407+
}
408+
367409
impl<'v> crate::de::Visitor<'v> for XmlAttributeVisitor<'v> {
368410
type Value = XmlAttribute;
369411
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -418,20 +460,28 @@ impl<'de, T: Deserialize<'de>> Deserialize<'de> for XmlSeq<T> {
418460

419461
// Processing Instruction
420462

421-
struct XmlProcessingInstructionVisitor<'v> {
463+
/// A visitor for deserializing to [`XmlProcessingInstruction`].
464+
pub struct XmlProcessingInstructionVisitor<'v> {
422465
marker: PhantomData<XmlProcessingInstruction>,
423466
lifetime: PhantomData<&'v ()>,
424467
}
425468

426469
impl XmlProcessingInstructionVisitor<'_> {
427-
fn new() -> Self {
470+
/// Creates a new [`XmlProcessingInstructionVisitor`].
471+
pub fn new() -> Self {
428472
Self {
429473
marker: PhantomData,
430474
lifetime: PhantomData,
431475
}
432476
}
433477
}
434478

479+
impl Default for XmlProcessingInstructionVisitor<'_> {
480+
fn default() -> Self {
481+
Self::new()
482+
}
483+
}
484+
435485
impl<'v> crate::de::Visitor<'v> for XmlProcessingInstructionVisitor<'v> {
436486
type Value = XmlProcessingInstruction;
437487

@@ -462,20 +512,28 @@ impl<'de> Deserialize<'de> for XmlProcessingInstruction {
462512

463513
// Xml Decl
464514

465-
struct XmlDeclVisitor<'v> {
515+
/// A visitor for deserializing to [`XmlDeclVisitor`].
516+
pub struct XmlDeclVisitor<'v> {
466517
marker: PhantomData<XmlDecl>,
467518
lifetime: PhantomData<&'v ()>,
468519
}
469520

470521
impl XmlDeclVisitor<'_> {
471-
fn new() -> Self {
522+
/// Creates a new [`XmlDeclVisitor`].
523+
pub fn new() -> Self {
472524
Self {
473525
marker: PhantomData,
474526
lifetime: PhantomData,
475527
}
476528
}
477529
}
478530

531+
impl Default for XmlDeclVisitor<'_> {
532+
fn default() -> Self {
533+
Self::new()
534+
}
535+
}
536+
479537
impl<'v> crate::de::Visitor<'v> for XmlDeclVisitor<'v> {
480538
type Value = XmlDecl;
481539
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -510,12 +568,14 @@ impl<'de> Deserialize<'de> for XmlDecl {
510568

511569
// Xml Comment
512570

513-
struct XmlCommentVisitor<'v> {
571+
/// A visitor for deserializing to [`XmlComment`].
572+
pub struct XmlCommentVisitor<'v> {
514573
marker: PhantomData<XmlComment>,
515574
lifetime: PhantomData<&'v ()>,
516575
}
517576

518577
impl XmlCommentVisitor<'_> {
578+
/// Creates a new [`XmlCommentVisitor`].
519579
pub fn new() -> Self {
520580
Self {
521581
marker: PhantomData,
@@ -524,6 +584,12 @@ impl XmlCommentVisitor<'_> {
524584
}
525585
}
526586

587+
impl Default for XmlCommentVisitor<'_> {
588+
fn default() -> Self {
589+
Self::new()
590+
}
591+
}
592+
527593
impl<'v> crate::de::Visitor<'v> for XmlCommentVisitor<'v> {
528594
type Value = XmlComment;
529595

@@ -551,12 +617,14 @@ impl<'de> Deserialize<'de> for XmlComment {
551617

552618
// Xml Doctype
553619

554-
struct XmlDoctypeVisitor<'v> {
620+
/// A visitor for deserializing to [`XmlDoctype`].
621+
pub struct XmlDoctypeVisitor<'v> {
555622
marker: PhantomData<XmlDoctype>,
556623
lifetime: PhantomData<&'v ()>,
557624
}
558625

559626
impl XmlDoctypeVisitor<'_> {
627+
/// Creates a new [`XmlDoctypeVisitor`].
560628
pub fn new() -> Self {
561629
Self {
562630
marker: PhantomData,
@@ -565,6 +633,12 @@ impl XmlDoctypeVisitor<'_> {
565633
}
566634
}
567635

636+
impl Default for XmlDoctypeVisitor<'_> {
637+
fn default() -> Self {
638+
Self::new()
639+
}
640+
}
641+
568642
impl<'v> crate::de::Visitor<'v> for XmlDoctypeVisitor<'v> {
569643
type Value = XmlDoctype;
570644

xmlity/src/value/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use crate::{
1818
ExpandedName, Prefix,
1919
};
2020

21-
mod deserialize;
21+
pub mod deserialize;
2222
mod deserializer;
2323
mod serialize;
2424
mod serializer;

0 commit comments

Comments
 (0)