transparent entry serde

This commit is contained in:
Robin Appelman 2023-12-18 20:54:49 +01:00
commit 3d0ca31840
8 changed files with 132 additions and 128 deletions

View file

@ -1,9 +1,10 @@
use super::Entry;
use serde::Serialize;
use serde::{Deserialize, Serialize};
use std::ops::{Deref, DerefMut};
/// An array of entries (items that have the same key).
#[derive(Clone, PartialEq, Eq, Debug, Serialize)]
#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
#[serde(transparent)]
pub struct Array(Vec<Entry>);
impl From<Entry> for Array {

View file

@ -13,7 +13,8 @@ pub use table::Table;
pub use value::Value;
/// The kinds of entry.
#[derive(Clone, PartialEq, Eq, Debug, Serialize)]
#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
#[serde(untagged)]
pub enum Entry {
/// A table.
Table(Table),
@ -174,7 +175,7 @@ macro_rules! from_str {
);
}
use serde::Serialize;
use serde::{Deserialize, Serialize};
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6};
from_str!(for IpAddr Ipv4Addr Ipv6Addr SocketAddr SocketAddrV4 SocketAddrV6);
from_str!(for i8 i16 i32 i64 isize u8 u16 u32 u64 usize f32 f64);

View file

@ -1,10 +1,11 @@
use super::Entry;
use serde::Serialize;
use serde::{Deserialize, Serialize};
use std::borrow::Cow;
use std::ops::Deref;
/// A statement.
#[derive(Clone, PartialEq, Eq, Debug, Serialize)]
#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
#[serde(transparent)]
pub struct Statement(String);
impl From<Cow<'_, str>> for Statement {

View file

@ -2,13 +2,14 @@ use super::{Array, Entry};
use crate::entry::{Statement, Value};
use crate::event::{EntryEvent, GroupStartEvent};
use crate::{Event, Item, Reader, Result};
use serde::{Serialize, Serializer};
use serde::{Deserialize, Serialize, Serializer};
use std::collections::hash_map;
use std::collections::HashMap;
use std::ops::Deref;
/// A table of entries.
#[derive(Clone, PartialEq, Eq, Debug, Serialize)]
#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
#[serde(transparent)]
pub struct Table(#[serde(serialize_with = "ordered_map")] HashMap<String, Entry>);
fn ordered_map<S, K: Ord + Serialize, V: Serialize>(

View file

@ -1,9 +1,9 @@
use super::Entry;
use serde::Serialize;
use serde::{Deserialize, Serialize};
use std::borrow::Cow;
use std::ops::Deref;
#[derive(Clone, PartialEq, Eq, Debug, Serialize)]
#[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
pub struct Value(String);
impl From<Cow<'_, str>> for Value {