From adc4f10d4c86c8919e46d0469258e5084fde68e1 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 13 Jul 2022 14:09:21 +0200 Subject: [PATCH] Small win for writing large integers --- .../rust/preserves/src/value/packed/writer.rs | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/implementations/rust/preserves/src/value/packed/writer.rs b/implementations/rust/preserves/src/value/packed/writer.rs index 7d46659..b6fae48 100644 --- a/implementations/rust/preserves/src/value/packed/writer.rs +++ b/implementations/rust/preserves/src/value/packed/writer.rs @@ -66,13 +66,13 @@ impl PackedWriter { } #[inline(always)] - pub fn write_all(&mut self, bs: &[u8]) { - self.buffer.write_all(Cow::Borrowed(bs)) + pub fn write_all(&mut self, bs: Cow<'_, [u8]>) { + self.buffer.write_all(bs) } #[inline(always)] pub fn write_integer(&mut self, bs: &[u8]) -> io::Result<()> { - self.write_atom(Tag::SignedInteger, bs) + self.write_atom(Tag::SignedInteger, Cow::Borrowed(bs)) } #[inline(always)] @@ -81,7 +81,7 @@ impl PackedWriter { } #[inline(always)] - pub fn write_atom(&mut self, tag: Tag, bs: &[u8]) -> io::Result<()> { + pub fn write_atom(&mut self, tag: Tag, bs: Cow<'_, [u8]>) -> io::Result<()> { self.write_tag(tag); self.write_all(bs); self.finish_item_if_toplevel() @@ -182,14 +182,14 @@ impl Writer for PackedWriter #[inline(always)] fn write_f32(&mut self, v: f32) -> io::Result<()> { self.write_tag(Tag::Float); - self.write_all(&u32::to_be_bytes(f32::to_bits(v))); + self.write_all(Cow::Borrowed(&u32::to_be_bytes(f32::to_bits(v)))); self.finish_item_if_toplevel() } #[inline(always)] fn write_f64(&mut self, v: f64) -> io::Result<()> { self.write_tag(Tag::Float); - self.write_all(&u64::to_be_bytes(f64::to_bits(v))); + self.write_all(Cow::Borrowed(&u64::to_be_bytes(f64::to_bits(v)))); self.finish_item_if_toplevel() } @@ -315,7 +315,7 @@ impl Writer for PackedWriter let bs: [u8; 16] = v.to_be_bytes(); self.write_tag(Tag::SignedInteger); self.write_byte(0); - self.write_all(&bs); + self.write_all(Cow::Borrowed(&bs)); Ok(()) } @@ -326,7 +326,7 @@ impl Writer for PackedWriter None => { match v.to_i128() { Some(n) => self.write_i128(n), - None => self.write_atom(Tag::SignedInteger, &v.to_signed_bytes_be()), + None => self.write_atom(Tag::SignedInteger, Cow::Owned(v.to_signed_bytes_be())), } } } @@ -335,19 +335,19 @@ impl Writer for PackedWriter #[inline(always)] fn write_string(&mut self, v: &str) -> io::Result<()> { self.write_tag(Tag::String); - self.write_all(v.as_bytes()); + self.write_all(Cow::Borrowed(v.as_bytes())); self.write_byte(0); self.finish_item_if_toplevel() } #[inline(always)] fn write_bytes(&mut self, v: &[u8]) -> io::Result<()> { - self.write_atom(Tag::ByteString, v) + self.write_atom(Tag::ByteString, Cow::Borrowed(v)) } #[inline(always)] fn write_symbol(&mut self, v: &str) -> io::Result<()> { - self.write_atom(Tag::Symbol, v.as_bytes()) + self.write_atom(Tag::Symbol, Cow::Borrowed(v.as_bytes())) } #[inline(always)]