diff --git a/postgres-types/src/serde_json_1.rs b/postgres-types/src/serde_json_1.rs index 7b8cfe8f..e5183d3f 100644 --- a/postgres-types/src/serde_json_1.rs +++ b/postgres-types/src/serde_json_1.rs @@ -1,3 +1,5 @@ +use crate::{FromSql, IsNull, ToSql, Type}; +use bytes::buf::BufMutExt; use bytes::{BufMut, BytesMut}; use serde_1::{Deserialize, Serialize}; use serde_json_1::Value; @@ -5,32 +7,6 @@ use std::error::Error; use std::fmt::Debug; use std::io::Read; -use crate::{FromSql, IsNull, ToSql, Type}; - -// https://github.com/tokio-rs/bytes/issues/170 -struct B<'a>(&'a mut BytesMut); - -impl<'a> BufMut for B<'a> { - #[inline] - fn remaining_mut(&self) -> usize { - usize::max_value() - self.0.len() - } - - #[inline] - unsafe fn advance_mut(&mut self, cnt: usize) { - self.0.advance_mut(cnt); - } - - #[inline] - unsafe fn bytes_mut(&mut self) -> &mut [u8] { - if !self.0.has_remaining_mut() { - self.0.reserve(64); - } - - self.0.bytes_mut() - } -} - /// A wrapper type to allow arbitrary `Serialize`/`Deserialize` types to convert to Postgres JSON values. #[derive(Debug)] pub struct Json(pub T); @@ -66,9 +42,9 @@ where out: &mut BytesMut, ) -> Result> { if *ty == Type::JSONB { - B(out).put_u8(1); + out.put_u8(1); } - serde_json_1::ser::to_writer(B(out).writer(), &self.0)?; + serde_json_1::ser::to_writer(out.writer(), &self.0)?; Ok(IsNull::No) }