Box<[u8]> instead of Vec<u8> for ByteBufOwned

This commit is contained in:
Igor Katson 2024-03-29 11:00:58 +00:00
parent d9ec702f59
commit deee41cd93
No known key found for this signature in database
GPG key ID: B4EC22B66D61A3F5
23 changed files with 106 additions and 124 deletions

View file

@ -1,6 +1,6 @@
use std::{collections::HashMap, marker::PhantomData};
use buffers::{ByteBuf, ByteString};
use buffers::{ByteBuf, ByteBufOwned};
use clone_to_owned::CloneToOwned;
use serde::Deserializer;
@ -133,7 +133,7 @@ where
}
pub type BencodeValueBorrowed<'a> = BencodeValue<ByteBuf<'a>>;
pub type BencodeValueOwned = BencodeValue<ByteString>;
pub type BencodeValueOwned = BencodeValue<ByteBufOwned>;
#[cfg(test)]
mod tests {

View file

@ -6,4 +6,4 @@ pub use bencode_value::*;
pub use serde_bencode_de::*;
pub use serde_bencode_ser::*;
pub use buffers::{ByteBuf, ByteString};
pub use buffers::{ByteBuf, ByteBufOwned};

View file

@ -2,7 +2,7 @@ use std::collections::BTreeMap;
use serde::{ser::Impossible, Serialize, Serializer};
use buffers::ByteString;
use buffers::ByteBufOwned;
#[derive(Debug)]
pub enum SerErrorKind {
@ -136,8 +136,8 @@ impl<'ser, W: std::io::Write> serde::ser::SerializeTuple for SerializeTuple<'ser
struct SerializeMap<'ser, W: std::io::Write> {
ser: &'ser mut BencodeSerializer<W>,
tmp: BTreeMap<ByteString, ByteString>,
last_key: Option<ByteString>,
tmp: BTreeMap<ByteBufOwned, ByteBufOwned>,
last_key: Option<ByteBufOwned>,
}
impl<'ser, W: std::io::Write> serde::ser::SerializeMap for SerializeMap<'ser, W> {
type Ok = ();
@ -152,7 +152,7 @@ impl<'ser, W: std::io::Write> serde::ser::SerializeMap for SerializeMap<'ser, W>
let mut ser = BencodeSerializer::new(&mut buf);
ser.hack_no_bytestring_prefix = true;
key.serialize(&mut ser)?;
self.last_key.replace(ByteString::from(buf));
self.last_key.replace(ByteBufOwned::from(buf));
Ok(())
// key.serialize(&mut *self.ser);
}
@ -165,7 +165,7 @@ impl<'ser, W: std::io::Write> serde::ser::SerializeMap for SerializeMap<'ser, W>
let mut ser = BencodeSerializer::new(&mut buf);
value.serialize(&mut ser)?;
self.tmp
.insert(self.last_key.take().unwrap(), ByteString::from(buf));
.insert(self.last_key.take().unwrap(), ByteBufOwned::from(buf));
Ok(())
}
@ -180,7 +180,7 @@ impl<'ser, W: std::io::Write> serde::ser::SerializeMap for SerializeMap<'ser, W>
struct SerializeStruct<'ser, W: std::io::Write> {
ser: &'ser mut BencodeSerializer<W>,
tmp: BTreeMap<&'static str, ByteString>,
tmp: BTreeMap<&'static str, ByteBufOwned>,
}
impl<'ser, W: std::io::Write> serde::ser::SerializeStruct for SerializeStruct<'ser, W> {
type Ok = ();
@ -198,7 +198,7 @@ impl<'ser, W: std::io::Write> serde::ser::SerializeStruct for SerializeStruct<'s
let mut buf = Vec::new();
let mut ser = BencodeSerializer::new(&mut buf);
value.serialize(&mut ser)?;
self.tmp.insert(key, ByteString::from(buf));
self.tmp.insert(key, ByteBufOwned::from(buf));
Ok(())
}