From 236bf7fdca35888635123d4f6a85220d8a0917d4 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Wed, 30 Aug 2023 01:44:52 +0300 Subject: [PATCH] Tag now uses streamed read/write --- src/fot/tag.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/fot/tag.rs b/src/fot/tag.rs index 7c787ef..1e4bd61 100644 --- a/src/fot/tag.rs +++ b/src/fot/tag.rs @@ -1,3 +1,4 @@ +use super::stream::{ReadStream, WriteStream}; use super::decoder::Decoder; use super::raw::Raw; use anyhow::Result; @@ -10,17 +11,17 @@ pub struct Tag { impl Decoder for Tag { fn decode(raw: &Raw, offset: usize, size: usize) -> Result { - let name = String::decode(raw, offset, size)?; - let version = String::decode(raw, offset + name.len() + 1, 0)?; + let mut rd = ReadStream::new(raw, offset); + let name: String = rd.read(0)?; + let version: String = rd.read(0)?; Ok(Tag { name, version }) } fn encode(&self) -> Result { - Ok(Raw::join( - 0, - self.get_enc_size(), - &mut [self.name.encode()?, self.version.encode()?], - )) + let mut wd = WriteStream::new(self.get_enc_size()); + wd.write(&self.name)?; + wd.write(&self.version)?; + Ok(wd.into_raw(0, self.get_enc_size())) } fn get_enc_size(&self) -> usize {