Skip to content

Commit

Permalink
Merge pull request #524 from Mingun/serde
Browse files Browse the repository at this point in the history
Fix #473: add explicit serde feature that is independent from dependency
  • Loading branch information
Mingun committed Dec 21, 2022
2 parents e877f4f + c205f1d commit 44a4c69
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 6 deletions.
17 changes: 15 additions & 2 deletions Cargo.toml
Expand Up @@ -164,8 +164,21 @@ escape-html = []
## [`Deserializer`]: crate::de::Deserializer
overlapped-lists = []

## Enables support for [`serde`] serialization and deserialization
serialize = ["serde"]
## Enables serialization of some types using [`serde`]. Probably your rarely will
## need this feature enabled.
##
## This feature does NOT provide XML serializer or deserializer. You should use
## the `serialize` feature for that instead.
# Cannot name "serde" to avoid clash with dependency.
# "dep:" prefix only avalible from Rust 1.60
serde-types = ["serde/derive"]

## Enables support for [`serde`] serialization and deserialization. When this
## feature is enabled, quick-xml provides serializer and deserializer for XML.
##
## This feature does NOT enables serializaton of the types inside quick-xml.
## If you need that, use the `serde-types` feature.
serialize = ["serde"] # "dep:" prefix only avalible from Rust 1.60

[package.metadata.docs.rs]
# document all features
Expand Down
4 changes: 4 additions & 0 deletions Changelog.md
Expand Up @@ -40,6 +40,8 @@
```
- [#523]: Fix incorrect handling of `xs:list`s with encoded spaces: they still
act as delimiters, which is confirmed also by mature XmlBeans Java library
- [#473]: Fix a hidden requirement to enable serde's `derive` feature to get
quick-xml's `serialize` feature for `edition = 2021` or `resolver = 2` crates

### Misc Changes

Expand All @@ -65,7 +67,9 @@

Refer to [documentation] for details.
- [#521]: MSRV bumped to 1.52.
- [#473]: `serde` feature that used to make some types serializable, renamed to `serde-types`

[#473]: https://github.com/tafia/quick-xml/issues/473
[#490]: https://github.com/tafia/quick-xml/pull/490
[#500]: https://github.com/tafia/quick-xml/issues/500
[#514]: https://github.com/tafia/quick-xml/issues/514
Expand Down
8 changes: 4 additions & 4 deletions src/name.rs
Expand Up @@ -16,7 +16,7 @@ use std::fmt::{self, Debug, Formatter};
///
/// [qualified name]: https://www.w3.org/TR/xml-names11/#dt-qualname
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[cfg_attr(feature = "serde-types", derive(serde::Deserialize, serde::Serialize))]
pub struct QName<'a>(pub &'a [u8]);
impl<'a> QName<'a> {
/// Converts this name to an internal slice representation.
Expand Down Expand Up @@ -133,7 +133,7 @@ impl<'a> AsRef<[u8]> for QName<'a> {
///
/// [local (unqualified) name]: https://www.w3.org/TR/xml-names11/#dt-localname
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[cfg_attr(feature = "serde-types", derive(serde::Deserialize, serde::Serialize))]
pub struct LocalName<'a>(&'a [u8]);
impl<'a> LocalName<'a> {
/// Converts this name to an internal slice representation.
Expand Down Expand Up @@ -183,7 +183,7 @@ impl<'a> From<QName<'a>> for LocalName<'a> {
///
/// [namespace prefix]: https://www.w3.org/TR/xml-names11/#dt-prefix
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[cfg_attr(feature = "serde-types", derive(serde::Deserialize, serde::Serialize))]
pub struct Prefix<'a>(&'a [u8]);
impl<'a> Prefix<'a> {
/// Extracts internal slice
Expand Down Expand Up @@ -225,7 +225,7 @@ pub enum PrefixDeclaration<'a> {
///
/// [namespace name]: https://www.w3.org/TR/xml-names11/#dt-NSName
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[cfg_attr(feature = "serde-types", derive(serde::Deserialize, serde::Serialize))]
pub struct Namespace<'a>(pub &'a [u8]);
impl<'a> Namespace<'a> {
/// Converts this namespace to an internal slice representation.
Expand Down

0 comments on commit 44a4c69

Please sign in to comment.