use ::serde::{Deserialize, Deserializer, Serialize, Serializer};
use crate::{Currency, Money};
use super::base;
impl<C: Currency> Serialize for Money<C> {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
base::serialize_as_number::<C, Money<C>, S>(self, serializer)
}
}
impl<'de, C: Currency> Deserialize<'de> for Money<C> {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
base::deserialize_as_number::<C, Money<C>, D>(deserializer)
}
}
pub mod comma_str_code {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Money<C>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::comma_str_code::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Money<C>, D::Error> {
base::comma_str_code::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod option_comma_str_code {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Option<Money<C>>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::option_comma_str_code::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Option<Money<C>>, D::Error> {
base::option_comma_str_code::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod comma_str_symbol {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Money<C>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::comma_str_symbol::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Money<C>, D::Error> {
base::comma_str_symbol::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod option_comma_str_symbol {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Option<Money<C>>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::option_comma_str_symbol::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Option<Money<C>>, D::Error> {
base::option_comma_str_symbol::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod dot_str_code {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Money<C>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::dot_str_code::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Money<C>, D::Error> {
base::dot_str_code::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod option_dot_str_code {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Option<Money<C>>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::option_dot_str_code::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Option<Money<C>>, D::Error> {
base::option_dot_str_code::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod dot_str_symbol {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Money<C>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::dot_str_symbol::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Money<C>, D::Error> {
base::dot_str_symbol::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod option_dot_str_symbol {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Option<Money<C>>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::option_dot_str_symbol::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Option<Money<C>>, D::Error> {
base::option_dot_str_symbol::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod str_code {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Money<C>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::str_code::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Money<C>, D::Error> {
base::str_code::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod option_str_code {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Option<Money<C>>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::option_str_code::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Option<Money<C>>, D::Error> {
base::option_str_code::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod str_symbol {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Money<C>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::str_symbol::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Money<C>, D::Error> {
base::str_symbol::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod option_str_symbol {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Option<Money<C>>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::option_str_symbol::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Option<Money<C>>, D::Error> {
base::option_str_symbol::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod minor {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Money<C>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::minor::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Money<C>, D::Error> {
base::minor::deserialize::<C, Money<C>, D>(deserializer)
}
}
pub mod option_minor {
use ::serde::{Deserializer, Serializer};
use crate::{Currency, Money};
use crate::serde::base;
pub fn serialize<C: Currency, S: Serializer>(
value: &Option<Money<C>>,
serializer: S,
) -> Result<S::Ok, S::Error> {
base::option_minor::serialize::<C, Money<C>, S>(value, serializer)
}
pub fn deserialize<'de, C: Currency, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Option<Money<C>>, D::Error> {
base::option_minor::deserialize::<C, Money<C>, D>(deserializer)
}
}