From ccca6ee49ea328c6df17bf53650f885af228dd49 Mon Sep 17 00:00:00 2001 From: Victor Koenders Date: Sun, 19 Sep 2021 10:52:21 +0200 Subject: [PATCH] Split Error into EncodeError and DecodeError --- derive/src/derive_struct.rs | 2 +- src/de/impls.rs | 4 +- src/de/mod.rs | 8 +-- src/de/read.rs | 16 ++--- src/enc/encoder.rs | 52 ++++++++-------- src/enc/impls.rs | 62 +++++++++---------- src/enc/mod.rs | 34 +++++----- src/enc/write.rs | 8 +-- src/error.rs | 25 +++++++- src/lib.rs | 6 +- .../signed.rs => varint/encode_signed.rs} | 24 +++++-- .../unsigned.rs => varint/encode_unsigned.rs} | 24 +++++-- src/{varint_encoding => varint}/mod.rs | 8 +-- 13 files changed, 160 insertions(+), 113 deletions(-) rename src/{varint_encoding/signed.rs => varint/encode_signed.rs} (79%) rename src/{varint_encoding/unsigned.rs => varint/encode_unsigned.rs} (96%) rename src/{varint_encoding => varint}/mod.rs (79%) diff --git a/derive/src/derive_struct.rs b/derive/src/derive_struct.rs index 0bb7de3..7f922e9 100644 --- a/derive/src/derive_struct.rs +++ b/derive/src/derive_struct.rs @@ -41,7 +41,7 @@ impl DeriveStruct { let result = quote! { impl bincode::enc::Encodeable for #name { - fn encode(&self, mut encoder: E) -> Result<(), bincode::error::Error> { + fn encode(&self, mut encoder: E) -> Result<(), bincode::error::EncodeError> { #(#fields)* Ok(()) } diff --git a/src/de/impls.rs b/src/de/impls.rs index 265b664..da515f3 100644 --- a/src/de/impls.rs +++ b/src/de/impls.rs @@ -1,8 +1,8 @@ use super::{Decodable, Decode}; -use crate::error::Error; +use crate::error::DecodeError; impl Decodable for u32 { - fn decode(mut decoder: D) -> Result { + fn decode(mut decoder: D) -> Result { decoder.decode_u32() } } diff --git a/src/de/mod.rs b/src/de/mod.rs index b97152c..0295e58 100644 --- a/src/de/mod.rs +++ b/src/de/mod.rs @@ -2,7 +2,7 @@ use core::marker::PhantomData; use crate::{ config::{Config, Endian}, - error::Error, + error::DecodeError, }; use read::Reader; @@ -10,11 +10,11 @@ mod impls; pub mod read; pub trait Decodable: Sized { - fn decode(decoder: D) -> Result; + fn decode(decoder: D) -> Result; } pub trait Decode { - fn decode_u32(&mut self) -> Result; + fn decode_u32(&mut self) -> Result; } pub struct Decoder { @@ -32,7 +32,7 @@ impl<'de, R: Reader<'de>, C: Config> Decoder { } impl<'a, 'de, R: Reader<'de>, C: Config> Decode for &'a mut Decoder { - fn decode_u32(&mut self) -> Result { + fn decode_u32(&mut self) -> Result { let mut bytes = [0u8; 4]; self.reader.read(bytes.as_mut())?; diff --git a/src/de/read.rs b/src/de/read.rs index f9cd893..f78fcf0 100644 --- a/src/de/read.rs +++ b/src/de/read.rs @@ -1,8 +1,8 @@ -use crate::error::Error; +use crate::error::DecodeError; pub trait Reader<'storage> { - fn read(&mut self, bytes: &mut [u8]) -> Result<(), Error>; - fn forward_read(&mut self, length: usize, visitor: F) -> Result + fn read(&mut self, bytes: &mut [u8]) -> Result<(), DecodeError>; + fn forward_read(&mut self, length: usize, visitor: F) -> Result where F: Fn(&'storage [u8]) -> R; } @@ -18,9 +18,9 @@ impl<'storage> SliceReader<'storage> { } #[inline(always)] - fn get_byte_slice(&mut self, length: usize) -> Result<&'storage [u8], Error> { + fn get_byte_slice(&mut self, length: usize) -> Result<&'storage [u8], DecodeError> { if length > self.slice.len() { - return Err(Error::UnexpectedEnd); + return Err(DecodeError::UnexpectedEnd); } let (read_slice, remaining) = self.slice.split_at(length); self.slice = remaining; @@ -30,9 +30,9 @@ impl<'storage> SliceReader<'storage> { impl<'storage> Reader<'storage> for SliceReader<'storage> { #[inline(always)] - fn read(&mut self, bytes: &mut [u8]) -> Result<(), Error> { + fn read(&mut self, bytes: &mut [u8]) -> Result<(), DecodeError> { if bytes.len() > self.slice.len() { - return Err(Error::UnexpectedEnd); + return Err(DecodeError::UnexpectedEnd); } let (read_slice, remaining) = self.slice.split_at(bytes.len()); bytes.copy_from_slice(read_slice); @@ -42,7 +42,7 @@ impl<'storage> Reader<'storage> for SliceReader<'storage> { } #[inline(always)] - fn forward_read(&mut self, length: usize, visitor: F) -> Result + fn forward_read(&mut self, length: usize, visitor: F) -> Result where F: Fn(&'storage [u8]) -> R, { diff --git a/src/enc/encoder.rs b/src/enc/encoder.rs index 0fede26..524c58f 100644 --- a/src/enc/encoder.rs +++ b/src/enc/encoder.rs @@ -2,7 +2,7 @@ use super::write::Writer; use super::Encode; use crate::{ config::{Config, Endian, IntEncoding}, - error::Error, + error::EncodeError, }; use core::marker::PhantomData; @@ -25,14 +25,14 @@ impl Encoder { } impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { - fn encode_u8(&mut self, val: u8) -> Result<(), Error> { + fn encode_u8(&mut self, val: u8) -> Result<(), EncodeError> { self.writer.write(&[val]) } - fn encode_u16(&mut self, val: u16) -> Result<(), Error> { + fn encode_u16(&mut self, val: u16) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_u16(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_u16(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -41,10 +41,10 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_u32(&mut self, val: u32) -> Result<(), Error> { + fn encode_u32(&mut self, val: u32) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_u32(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_u32(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -53,10 +53,10 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_u64(&mut self, val: u64) -> Result<(), Error> { + fn encode_u64(&mut self, val: u64) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_u64(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_u64(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -65,10 +65,10 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_u128(&mut self, val: u128) -> Result<(), Error> { + fn encode_u128(&mut self, val: u128) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_u128(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_u128(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -77,10 +77,10 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_usize(&mut self, val: usize) -> Result<(), Error> { + fn encode_usize(&mut self, val: usize) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_usize(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_usize(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -89,14 +89,14 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_i8(&mut self, val: i8) -> Result<(), Error> { + fn encode_i8(&mut self, val: i8) -> Result<(), EncodeError> { self.writer.write(&[val as u8]) } - fn encode_i16(&mut self, val: i16) -> Result<(), Error> { + fn encode_i16(&mut self, val: i16) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_i16(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_i16(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -105,10 +105,10 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_i32(&mut self, val: i32) -> Result<(), Error> { + fn encode_i32(&mut self, val: i32) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_i32(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_i32(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -117,10 +117,10 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_i64(&mut self, val: i64) -> Result<(), Error> { + fn encode_i64(&mut self, val: i64) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_i64(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_i64(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -129,10 +129,10 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_i128(&mut self, val: i128) -> Result<(), Error> { + fn encode_i128(&mut self, val: i128) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_i128(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_i128(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -141,10 +141,10 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_isize(&mut self, val: isize) -> Result<(), Error> { + fn encode_isize(&mut self, val: isize) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => { - crate::varint_encoding::varint_encode_isize(&mut self.writer, C::ENDIAN, val) + crate::varint::varint_encode_isize(&mut self.writer, C::ENDIAN, val) } IntEncoding::Fixed => match C::ENDIAN { Endian::Big => self.writer.write(&val.to_be_bytes()), @@ -153,7 +153,7 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_f32(&mut self, val: f32) -> Result<(), Error> { + fn encode_f32(&mut self, val: f32) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => unimplemented!(), // crate::int_encoding::varint_encode_f32(&mut self.writer, C::ENDIAN, val), IntEncoding::Fixed => match C::ENDIAN { @@ -163,7 +163,7 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_f64(&mut self, val: f64) -> Result<(), Error> { + fn encode_f64(&mut self, val: f64) -> Result<(), EncodeError> { match C::INT_ENCODING { IntEncoding::Variable => unimplemented!(), // crate::int_encoding::varint_encode_f64(&mut self.writer, C::ENDIAN, val), IntEncoding::Fixed => match C::ENDIAN { @@ -173,7 +173,7 @@ impl<'a, W: Writer, C: Config> Encode for &'a mut Encoder { } } - fn encode_slice(&mut self, val: &[u8]) -> Result<(), Error> { + fn encode_slice(&mut self, val: &[u8]) -> Result<(), EncodeError> { // TODO: Should this be swapped if we're big or little endian? self.writer.write(val) } diff --git a/src/enc/impls.rs b/src/enc/impls.rs index d443fe5..35c9a69 100644 --- a/src/enc/impls.rs +++ b/src/enc/impls.rs @@ -1,92 +1,92 @@ use super::{Encode, Encodeable}; -use crate::error::Error; +use crate::error::EncodeError; impl Encodeable for u8 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_u8(*self) } } impl Encodeable for u16 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_u16(*self) } } impl Encodeable for u32 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_u32(*self) } } impl Encodeable for u64 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_u64(*self) } } impl Encodeable for u128 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_u128(*self) } } impl Encodeable for usize { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_usize(*self) } } impl Encodeable for i8 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_i8(*self) } } impl Encodeable for i16 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_i16(*self) } } impl Encodeable for i32 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_i32(*self) } } impl Encodeable for i64 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_i64(*self) } } impl Encodeable for i128 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_i128(*self) } } impl Encodeable for isize { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_isize(*self) } } impl Encodeable for f32 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_f32(*self) } } impl Encodeable for f64 { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_f64(*self) } } impl Encodeable for &'_ [u8] { - fn encode(&self, mut encoder: E) -> Result<(), Error> { + fn encode(&self, mut encoder: E) -> Result<(), EncodeError> { encoder.encode_slice(*self) } } @@ -95,51 +95,51 @@ impl<'a, T> Encode for &'a mut T where T: Encode, { - fn encode_u8(&mut self, val: u8) -> Result<(), Error> { + fn encode_u8(&mut self, val: u8) -> Result<(), EncodeError> { T::encode_u8(self, val) } - fn encode_u16(&mut self, val: u16) -> Result<(), Error> { + fn encode_u16(&mut self, val: u16) -> Result<(), EncodeError> { T::encode_u16(self, val) } - fn encode_u32(&mut self, val: u32) -> Result<(), Error> { + fn encode_u32(&mut self, val: u32) -> Result<(), EncodeError> { T::encode_u32(self, val) } - fn encode_u64(&mut self, val: u64) -> Result<(), Error> { + fn encode_u64(&mut self, val: u64) -> Result<(), EncodeError> { T::encode_u64(self, val) } - fn encode_u128(&mut self, val: u128) -> Result<(), Error> { + fn encode_u128(&mut self, val: u128) -> Result<(), EncodeError> { T::encode_u128(self, val) } - fn encode_usize(&mut self, val: usize) -> Result<(), Error> { + fn encode_usize(&mut self, val: usize) -> Result<(), EncodeError> { T::encode_usize(self, val) } - fn encode_i8(&mut self, val: i8) -> Result<(), Error> { + fn encode_i8(&mut self, val: i8) -> Result<(), EncodeError> { T::encode_i8(self, val) } - fn encode_i16(&mut self, val: i16) -> Result<(), Error> { + fn encode_i16(&mut self, val: i16) -> Result<(), EncodeError> { T::encode_i16(self, val) } - fn encode_i32(&mut self, val: i32) -> Result<(), Error> { + fn encode_i32(&mut self, val: i32) -> Result<(), EncodeError> { T::encode_i32(self, val) } - fn encode_i64(&mut self, val: i64) -> Result<(), Error> { + fn encode_i64(&mut self, val: i64) -> Result<(), EncodeError> { T::encode_i64(self, val) } - fn encode_i128(&mut self, val: i128) -> Result<(), Error> { + fn encode_i128(&mut self, val: i128) -> Result<(), EncodeError> { T::encode_i128(self, val) } - fn encode_isize(&mut self, val: isize) -> Result<(), Error> { + fn encode_isize(&mut self, val: isize) -> Result<(), EncodeError> { T::encode_isize(self, val) } - fn encode_f32(&mut self, val: f32) -> Result<(), Error> { + fn encode_f32(&mut self, val: f32) -> Result<(), EncodeError> { T::encode_f32(self, val) } - fn encode_f64(&mut self, val: f64) -> Result<(), Error> { + fn encode_f64(&mut self, val: f64) -> Result<(), EncodeError> { T::encode_f64(self, val) } - fn encode_slice(&mut self, val: &[u8]) -> Result<(), Error> { + fn encode_slice(&mut self, val: &[u8]) -> Result<(), EncodeError> { T::encode_slice(self, val) } } diff --git a/src/enc/mod.rs b/src/enc/mod.rs index 0d1906d..ca5ebfe 100644 --- a/src/enc/mod.rs +++ b/src/enc/mod.rs @@ -1,32 +1,32 @@ mod encoder; mod impls; -use crate::error::Error; +use crate::error::EncodeError; pub mod write; pub use self::encoder::Encoder; pub trait Encodeable { - fn encode(&self, encoder: E) -> Result<(), Error>; + fn encode(&self, encoder: E) -> Result<(), EncodeError>; } pub trait Encode { - fn encode_u8(&mut self, val: u8) -> Result<(), Error>; - fn encode_u16(&mut self, val: u16) -> Result<(), Error>; - fn encode_u32(&mut self, val: u32) -> Result<(), Error>; - fn encode_u64(&mut self, val: u64) -> Result<(), Error>; - fn encode_u128(&mut self, val: u128) -> Result<(), Error>; - fn encode_usize(&mut self, val: usize) -> Result<(), Error>; + fn encode_u8(&mut self, val: u8) -> Result<(), EncodeError>; + fn encode_u16(&mut self, val: u16) -> Result<(), EncodeError>; + fn encode_u32(&mut self, val: u32) -> Result<(), EncodeError>; + fn encode_u64(&mut self, val: u64) -> Result<(), EncodeError>; + fn encode_u128(&mut self, val: u128) -> Result<(), EncodeError>; + fn encode_usize(&mut self, val: usize) -> Result<(), EncodeError>; - fn encode_i8(&mut self, val: i8) -> Result<(), Error>; - fn encode_i16(&mut self, val: i16) -> Result<(), Error>; - fn encode_i32(&mut self, val: i32) -> Result<(), Error>; - fn encode_i64(&mut self, val: i64) -> Result<(), Error>; - fn encode_i128(&mut self, val: i128) -> Result<(), Error>; - fn encode_isize(&mut self, val: isize) -> Result<(), Error>; + fn encode_i8(&mut self, val: i8) -> Result<(), EncodeError>; + fn encode_i16(&mut self, val: i16) -> Result<(), EncodeError>; + fn encode_i32(&mut self, val: i32) -> Result<(), EncodeError>; + fn encode_i64(&mut self, val: i64) -> Result<(), EncodeError>; + fn encode_i128(&mut self, val: i128) -> Result<(), EncodeError>; + fn encode_isize(&mut self, val: isize) -> Result<(), EncodeError>; - fn encode_f32(&mut self, val: f32) -> Result<(), Error>; - fn encode_f64(&mut self, val: f64) -> Result<(), Error>; - fn encode_slice(&mut self, val: &[u8]) -> Result<(), Error>; + fn encode_f32(&mut self, val: f32) -> Result<(), EncodeError>; + fn encode_f64(&mut self, val: f64) -> Result<(), EncodeError>; + fn encode_slice(&mut self, val: &[u8]) -> Result<(), EncodeError>; } diff --git a/src/enc/write.rs b/src/enc/write.rs index 1f8d6e7..1b6e8f7 100644 --- a/src/enc/write.rs +++ b/src/enc/write.rs @@ -1,7 +1,7 @@ -use crate::error::Error; +use crate::error::EncodeError; pub trait Writer { - fn write(&mut self, bytes: &[u8]) -> Result<(), Error>; + fn write(&mut self, bytes: &[u8]) -> Result<(), EncodeError>; } pub struct SliceWriter<'storage> { @@ -23,10 +23,10 @@ impl<'storage> SliceWriter<'storage> { } impl<'storage> Writer for SliceWriter<'storage> { - fn write(&mut self, bytes: &[u8]) -> Result<(), Error> { + fn write(&mut self, bytes: &[u8]) -> Result<(), EncodeError> { let remaining = &mut self.slice[self.idx..]; if bytes.len() > remaining.len() { - return Err(Error::UnexpectedEnd); + return Err(EncodeError::UnexpectedEnd); } self.idx += bytes.len(); let write_slice = &mut remaining[..bytes.len()]; diff --git a/src/error.rs b/src/error.rs index 2e3cc60..7ade7fc 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,6 +1,29 @@ #[non_exhaustive] #[derive(Debug)] -pub enum Error { +pub enum EncodeError { InvalidIntEncoding, UnexpectedEnd, } + +#[non_exhaustive] +#[derive(Debug)] +pub enum DecodeError { + UnexpectedEnd, + /// Invalid type was found. The decoder tried to read type `expected`, but found type `found` instead. + InvalidIntegerType { + /// The type that was being read from the reader + expected: IntegerType, + /// The type that was encoded in the data + found: IntegerType, + }, +} + +#[non_exhaustive] +#[derive(Debug)] +pub enum IntegerType { + U16, + U32, + U64, + U128, + USize, +} diff --git a/src/lib.rs b/src/lib.rs index 912f3ae..522f73c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,19 +22,19 @@ pub mod error; pub use bincode_derive::{Decodable, Encodable}; -pub(crate) mod varint_encoding; +pub(crate) mod varint; pub fn encode_into_slice( val: E, dst: &mut [u8], -) -> Result { +) -> Result { let writer = enc::write::SliceWriter::new(dst); let mut encoder = enc::Encoder::<_, config::Default>::new(writer); val.encode(&mut encoder)?; Ok(encoder.into_writer().bytes_written()) } -pub fn decode(src: &mut [u8]) -> Result { +pub fn decode(src: &mut [u8]) -> Result { let reader = de::read::SliceReader::new(src); let mut decoder = de::Decoder::<_, config::Default>::new(reader); D::decode(&mut decoder) diff --git a/src/varint_encoding/signed.rs b/src/varint/encode_signed.rs similarity index 79% rename from src/varint_encoding/signed.rs rename to src/varint/encode_signed.rs index b41f190..1f01bd3 100644 --- a/src/varint_encoding/signed.rs +++ b/src/varint/encode_signed.rs @@ -1,7 +1,11 @@ use super::{varint_encode_u128, varint_encode_u16, varint_encode_u32, varint_encode_u64}; -use crate::{config::Endian, enc::write::Writer, error::Error}; +use crate::{config::Endian, enc::write::Writer, error::EncodeError}; -pub fn varint_encode_i16(writer: &mut W, endian: Endian, val: i16) -> Result<(), Error> { +pub fn varint_encode_i16( + writer: &mut W, + endian: Endian, + val: i16, +) -> Result<(), EncodeError> { varint_encode_u16( writer, endian, @@ -16,7 +20,11 @@ pub fn varint_encode_i16(writer: &mut W, endian: Endian, val: i16) -> ) } -pub fn varint_encode_i32(writer: &mut W, endian: Endian, val: i32) -> Result<(), Error> { +pub fn varint_encode_i32( + writer: &mut W, + endian: Endian, + val: i32, +) -> Result<(), EncodeError> { varint_encode_u32( writer, endian, @@ -31,7 +39,11 @@ pub fn varint_encode_i32(writer: &mut W, endian: Endian, val: i32) -> ) } -pub fn varint_encode_i64(writer: &mut W, endian: Endian, val: i64) -> Result<(), Error> { +pub fn varint_encode_i64( + writer: &mut W, + endian: Endian, + val: i64, +) -> Result<(), EncodeError> { varint_encode_u64( writer, endian, @@ -50,7 +62,7 @@ pub fn varint_encode_i128( writer: &mut W, endian: Endian, val: i128, -) -> Result<(), Error> { +) -> Result<(), EncodeError> { varint_encode_u128( writer, endian, @@ -69,7 +81,7 @@ pub fn varint_encode_isize( writer: &mut W, endian: Endian, val: isize, -) -> Result<(), Error> { +) -> Result<(), EncodeError> { // isize is being encoded as a i64 varint_encode_i64(writer, endian, val as i64) } diff --git a/src/varint_encoding/unsigned.rs b/src/varint/encode_unsigned.rs similarity index 96% rename from src/varint_encoding/unsigned.rs rename to src/varint/encode_unsigned.rs index 99ba53f..6c1138d 100644 --- a/src/varint_encoding/unsigned.rs +++ b/src/varint/encode_unsigned.rs @@ -1,7 +1,11 @@ use super::{SINGLE_BYTE_MAX, U128_BYTE, U16_BYTE, U32_BYTE, U64_BYTE}; -use crate::{config::Endian, enc::write::Writer, error::Error}; +use crate::{config::Endian, enc::write::Writer, error::EncodeError}; -pub fn varint_encode_u16(writer: &mut W, endian: Endian, val: u16) -> Result<(), Error> { +pub fn varint_encode_u16( + writer: &mut W, + endian: Endian, + val: u16, +) -> Result<(), EncodeError> { if val <= SINGLE_BYTE_MAX as _ { writer.write(&[val as u8]) } else { @@ -13,7 +17,11 @@ pub fn varint_encode_u16(writer: &mut W, endian: Endian, val: u16) -> } } -pub fn varint_encode_u32(writer: &mut W, endian: Endian, val: u32) -> Result<(), Error> { +pub fn varint_encode_u32( + writer: &mut W, + endian: Endian, + val: u32, +) -> Result<(), EncodeError> { if val <= SINGLE_BYTE_MAX as _ { writer.write(&[val as u8]) } else if val <= u16::MAX as _ { @@ -31,7 +39,11 @@ pub fn varint_encode_u32(writer: &mut W, endian: Endian, val: u32) -> } } -pub fn varint_encode_u64(writer: &mut W, endian: Endian, val: u64) -> Result<(), Error> { +pub fn varint_encode_u64( + writer: &mut W, + endian: Endian, + val: u64, +) -> Result<(), EncodeError> { if val <= SINGLE_BYTE_MAX as _ { writer.write(&[val as u8]) } else if val <= u16::MAX as _ { @@ -59,7 +71,7 @@ pub fn varint_encode_u128( writer: &mut W, endian: Endian, val: u128, -) -> Result<(), Error> { +) -> Result<(), EncodeError> { if val <= SINGLE_BYTE_MAX as _ { writer.write(&[val as u8]) } else if val <= u16::MAX as _ { @@ -93,7 +105,7 @@ pub fn varint_encode_usize( writer: &mut W, endian: Endian, val: usize, -) -> Result<(), Error> { +) -> Result<(), EncodeError> { // usize is being encoded as a u64 varint_encode_u64(writer, endian, val as u64) } diff --git a/src/varint_encoding/mod.rs b/src/varint/mod.rs similarity index 79% rename from src/varint_encoding/mod.rs rename to src/varint/mod.rs index d25f3a0..f6e761f 100644 --- a/src/varint_encoding/mod.rs +++ b/src/varint/mod.rs @@ -1,11 +1,11 @@ -mod signed; -mod unsigned; +mod encode_signed; +mod encode_unsigned; -pub use self::signed::{ +pub use self::encode_signed::{ varint_encode_i128, varint_encode_i16, varint_encode_i32, varint_encode_i64, varint_encode_isize, }; -pub use self::unsigned::{ +pub use self::encode_unsigned::{ varint_encode_u128, varint_encode_u16, varint_encode_u32, varint_encode_u64, varint_encode_usize, };