Skip to content

Commit

Permalink
🔧 Follow the serde data format conventions
Browse files Browse the repository at this point in the history
  • Loading branch information
Steffo99 committed Feb 15, 2022
1 parent 2558c49 commit bb110b4
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 3 deletions.
9 changes: 8 additions & 1 deletion src/de.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
use std::io::Read;
use serde::de::{DeserializeSeed, Visitor};
use serde::Deserialize;

/// `Read`-based deserializer for Terraria world files.
pub struct Deserializer<'de, R: Read> {
pub reader: &'de mut R
reader: &'de mut R
}

impl<'de, R: Read> Deserializer<'de, R> {
Expand Down Expand Up @@ -225,3 +226,9 @@ impl<'a, 'de, R: Read> serde::de::SeqAccess<'de> for ByteSized<'a, 'de, R> {
Some(self.size)
}
}

pub fn from_reader<'de, R: Read, T>(reader: &'de mut R) -> crate::Result<T> where T: Deserialize<'de> {
let mut de = Deserializer { reader };
let t = T::deserialize(&mut de)?;
Ok(t)
}
4 changes: 3 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ mod de;
mod error;

pub use ser::Serializer;
pub use ser::to_writer;
pub use de::Deserializer;
pub use de::from_reader;
pub use error::Error;
pub use error::Result;
pub use error::Result;
8 changes: 7 additions & 1 deletion src/ser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use serde::Serialize;

/// `Write`-based serializer for Terraria world files.
pub struct Serializer<W: Write> {
pub writer: W,
writer: W,
}

impl<W: Write> Serializer<W> {
Expand Down Expand Up @@ -338,3 +338,9 @@ impl<W: Write> serde::ser::SerializeStructVariant for &mut Serializer<W> {
Err(crate::Error::Unsupported)
}
}

pub fn to_writer<W: Write, T>(writer: W, value: T) -> crate::Result<W> where T: Serialize {
let mut ser = Serializer { writer };
value.serialize(&mut ser)?;
Ok(ser.writer)
}

0 comments on commit bb110b4

Please sign in to comment.