mirror of
https://codeberg.org/icewind/vdf-reader.git
synced 2026-06-04 02:24:08 +02:00
transparent entry serde
This commit is contained in:
parent
7d79e1e7bd
commit
3d0ca31840
8 changed files with 132 additions and 128 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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>(
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue