From 7e9b550fc192eb0b7897c58b31cfea3aee357e4a Mon Sep 17 00:00:00 2001 From: Darius Clark Date: Wed, 17 Jul 2019 23:42:38 -0400 Subject: [PATCH] Remove error_chain crate Remove the use of `unwrap` Updated to 2018 edition --- protocol/Cargo.toml | 2 +- protocol/src/enum_ty.rs | 2 +- protocol/src/errors.rs | 72 ++++++++++++++------ protocol/src/high_level.rs | 8 +-- protocol/src/lib.rs | 18 ++--- protocol/src/logic/aligned.rs | 6 +- protocol/src/logic/mod.rs | 2 +- protocol/src/parcel.rs | 4 +- protocol/src/settings.rs | 4 +- protocol/src/types/array.rs | 6 +- protocol/src/types/char.rs | 4 +- protocol/src/types/collections/list.rs | 14 ++-- protocol/src/types/collections/map.rs | 4 +- protocol/src/types/marker.rs | 4 +- protocol/src/types/mod.rs | 8 +-- protocol/src/types/numerics.rs | 4 +- protocol/src/types/option.rs | 4 +- protocol/src/types/smart_ptr.rs | 4 +- protocol/src/types/string.rs | 2 +- protocol/src/types/tuple.rs | 4 +- protocol/src/types/unimplemented.rs | 6 +- protocol/src/types/uuid.rs | 4 +- protocol/src/types/vec.rs | 8 +-- protocol/src/util.rs | 10 +-- protocol/src/wire/dgram/mod.rs | 4 +- protocol/src/wire/middleware/compression.rs | 4 +- protocol/src/wire/middleware/mod.rs | 4 +- protocol/src/wire/middleware/pipeline.rs | 9 ++- protocol/src/wire/middleware/rotate_bytes.rs | 6 +- protocol/src/wire/mod.rs | 4 +- protocol/src/wire/reader.rs | 8 +-- protocol/src/wire/stream/connection.rs | 6 +- protocol/src/wire/stream/mod.rs | 4 +- protocol/src/wire/stream/transport/mod.rs | 4 +- protocol/src/wire/stream/transport/simple.rs | 14 ++-- 35 files changed, 145 insertions(+), 126 deletions(-) diff --git a/protocol/Cargo.toml b/protocol/Cargo.toml index 955b856..9670490 100644 --- a/protocol/Cargo.toml +++ b/protocol/Cargo.toml @@ -2,6 +2,7 @@ name = "protocol" version = "3.1.2" authors = ["Dylan McKay "] +edition = "2018" description = "Easy protocol definitions" license = "MIT" @@ -17,7 +18,6 @@ default = ["uuid"] byteorder = "1.3" flate2 = { version = "1.0", features = ["zlib"], default-features = false } uuid = { version = "0.7", optional = true } -error-chain = "0.12" num-traits = "0.2" [dev-dependencies] diff --git a/protocol/src/enum_ty.rs b/protocol/src/enum_ty.rs index 87b611a..8518d44 100644 --- a/protocol/src/enum_ty.rs +++ b/protocol/src/enum_ty.rs @@ -1,4 +1,4 @@ -use Parcel; +use crate::Parcel; /// An `enum` type. pub trait Enum : Parcel { diff --git a/protocol/src/errors.rs b/protocol/src/errors.rs index f1fc60a..21444ed 100644 --- a/protocol/src/errors.rs +++ b/protocol/src/errors.rs @@ -1,5 +1,14 @@ use std::{self, fmt, error}; +macro_rules! from_error { + ($f: ty, $e: expr) => { + impl From<$f> for Error { + fn from(f: $f) -> Error { + $e(f) + } + } + }; +} #[derive(Debug, Copy, Clone, PartialEq, Eq)] /// Copy of [TryFromIntError](https://doc.rust-lang.org/std/num/struct.TryFromIntError.html) @@ -47,31 +56,50 @@ impl error::Error for CharTryFromError { } } -error_chain! { - types { - Error, ErrorKind, ResultExt; - } - - foreign_links { - Io(std::io::Error); - FromUtf8(std::string::FromUtf8Error); - TryFromIntError(TryFromIntError); - CharTryFromError(CharTryFromError); +#[derive(Debug)] +pub enum Error { + Io(std::io::Error), + FromUtf8(std::string::FromUtf8Error), + TryFromIntError(TryFromIntError), + CharTryFromError(CharTryFromError), + #[cfg(feature = "uuid")] + UuidParseError(::uuid::parser::ParseError), + UnknownPacketId, + UnimplementedParcel(&'static str), +} - UuidParseError(::uuid::parser::ParseError) #[cfg(feature = "uuid")]; +impl fmt::Display for Error { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + match *self { + Error::Io(ref err) => writeln!(fmt, "{}", err), + Error::FromUtf8(ref err) => writeln!(fmt, "{}", err), + Error::TryFromIntError(ref err) => writeln!(fmt, "{}", err), + Error::CharTryFromError(ref err) => writeln!(fmt, "{}", err), + #[cfg(feature = "uuid")] + Error::UuidParseError(ref err) => writeln!(fmt, "{}", err), + Error::UnknownPacketId => writeln!(fmt, "unknown packet identifier"), + Error::UnimplementedParcel(ref err) => writeln!(fmt, "unimplemented parcel type: {}", err), + } } +} - errors { - UnknownPacketId { - description("unknown packet identifier") - display("unknown packet identifier") - } +from_error!(std::io::Error, Error::Io); +from_error!(std::string::FromUtf8Error, Error::FromUtf8); +from_error!(TryFromIntError, Error::TryFromIntError); +from_error!(CharTryFromError, Error::CharTryFromError); +#[cfg(feature = "uuid")] +from_error!(::uuid::parser::ParseError, Error::UuidParseError); - /// A parcel type was read that has not been implemented yet. - UnimplementedParcel(type_name: &'static str) { - description("unimplemented parcel") - display("unimplemented parcel type '{}", type_name) +impl error::Error for Error { + fn source(&self) -> Option<&(dyn error::Error + 'static)> { + match *self { + Error::Io(ref err) => Some(err), + Error::FromUtf8(ref err) => Some(err), + Error::TryFromIntError(ref err) => Some(err), + Error::CharTryFromError(ref err) => Some(err), + #[cfg(feature = "uuid")] + Error::UuidParseError(ref err) => Some(err), + _ => None, } } -} - +} \ No newline at end of file diff --git a/protocol/src/high_level.rs b/protocol/src/high_level.rs index b947455..dd54208 100644 --- a/protocol/src/high_level.rs +++ b/protocol/src/high_level.rs @@ -1,5 +1,5 @@ -use {Error, Parcel, Settings}; -use hint; +use crate::{Error, Parcel, Settings}; +use crate::hint; use std::io::prelude::*; use std::fmt; @@ -58,10 +58,10 @@ use std::fmt; /// _: &mut protocol::hint::Hints) /// -> Result { /// match low_level.opcode { -/// 0 => Ok(Login::Success { message: String::from_utf8(low_level.payload).unwrap() }), +/// 0 => Ok(Login::Success { message: String::from_utf8(low_level.payload)? }), /// 1 => Ok(Login::Failure { /// code: FailureCode::MyDogAteMyHomework, -/// response: String::from_utf8(low_level.payload[1..].to_owned()).unwrap() }), +/// response: String::from_utf8(low_level.payload[1..].to_owned())? }), /// _ => unreachable!(), /// } /// } diff --git a/protocol/src/lib.rs b/protocol/src/lib.rs index 0c9b3ea..2259f52 100644 --- a/protocol/src/lib.rs +++ b/protocol/src/lib.rs @@ -160,11 +160,11 @@ //! //! ``` -pub use self::enum_ty::Enum; -pub use self::parcel::Parcel; -pub use self::errors::{Error, ErrorKind, ResultExt, CharTryFromError, TryFromIntError}; -pub use self::high_level::HighLevel; -pub use self::settings::*; +pub use crate::enum_ty::Enum; +pub use crate::parcel::Parcel; +pub use crate::errors::{Error, CharTryFromError, TryFromIntError}; +pub use crate::high_level::HighLevel; +pub use crate::settings::*; mod settings; #[macro_use] @@ -181,15 +181,9 @@ pub mod logic; mod parcel; pub mod util; - -extern crate byteorder; -extern crate flate2; -#[macro_use] -extern crate error_chain; - #[cfg(feature = "uuid")] extern crate uuid; -extern crate num_traits; + /// The default byte ordering. pub type DefaultByteOrder = ::byteorder::BigEndian; diff --git a/protocol/src/logic/aligned.rs b/protocol/src/logic/aligned.rs index 077c2b0..d71280b 100644 --- a/protocol/src/logic/aligned.rs +++ b/protocol/src/logic/aligned.rs @@ -1,5 +1,5 @@ -use {Error, Parcel, Settings}; -use hint; +use crate::{Error, Parcel, Settings}; +use crate::hint; use std::io::prelude::*; use std::{marker, mem}; @@ -87,7 +87,7 @@ impl Parcel for Aligned settings: &Settings, hints: &mut hint::Hints) -> Result { let inner_value = T::read_field(read, settings, hints)?; - let value_size = inner_value.raw_bytes_field(settings, hints).unwrap().len(); + let value_size = inner_value.raw_bytes_field(settings, hints)?.len(); let padding_size = calculate_padding(Self::align_to_bytes(), value_size); for _ in 0..padding_size { diff --git a/protocol/src/logic/mod.rs b/protocol/src/logic/mod.rs index cbb1c95..84b2dd9 100644 --- a/protocol/src/logic/mod.rs +++ b/protocol/src/logic/mod.rs @@ -1,6 +1,6 @@ //! `Parcel` type wrappers that implement complex logic. -pub use self::aligned::Aligned; +pub use crate::logic::aligned::Aligned; mod aligned; diff --git a/protocol/src/parcel.rs b/protocol/src/parcel.rs index f5670a8..300383d 100644 --- a/protocol/src/parcel.rs +++ b/protocol/src/parcel.rs @@ -1,5 +1,5 @@ -use {Error, Settings}; -use hint; +use crate::{Error, Settings}; +use crate::hint; use std::io::prelude::*; use std::io; diff --git a/protocol/src/settings.rs b/protocol/src/settings.rs index 375ec5e..c23a51a 100644 --- a/protocol/src/settings.rs +++ b/protocol/src/settings.rs @@ -67,7 +67,7 @@ macro_rules! impl_byte_order_helpers { ( $( $ty:ty => [ $read_name:ident : $write_name:ident ] )* ) => { impl ByteOrder { $( - pub fn $read_name(&self, read: &mut Read) -> Result<$ty, ::Error> { + pub fn $read_name(&self, read: &mut Read) -> Result<$ty, crate::Error> { use byteorder as bo; Ok(match *self { @@ -78,7 +78,7 @@ macro_rules! impl_byte_order_helpers { } pub fn $write_name(&self, value: $ty, - write: &mut Write) -> Result<(), ::Error> { + write: &mut Write) -> Result<(), crate::Error> { use byteorder as bo; Ok(match *self { diff --git a/protocol/src/types/array.rs b/protocol/src/types/array.rs index 2d4f73c..792aee4 100644 --- a/protocol/src/types/array.rs +++ b/protocol/src/types/array.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use {hint, util}; +use crate::{Parcel, Error, Settings}; +use crate::{hint, util}; use std::io::prelude::*; macro_rules! impl_parcel_for_array { @@ -78,7 +78,7 @@ impl_parcel_for_array!(0xffff); #[cfg(test)] mod test { - use {Parcel, Settings}; + use crate::{Parcel, Settings}; use std::io::Cursor; #[test] diff --git a/protocol/src/types/char.rs b/protocol/src/types/char.rs index 8947675..244ad3e 100644 --- a/protocol/src/types/char.rs +++ b/protocol/src/types/char.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, CharTryFromError, Settings}; -use hint; +use crate::{Parcel, Error, CharTryFromError, Settings}; +use crate::hint; use std::char; use std::io::prelude::*; diff --git a/protocol/src/types/collections/list.rs b/protocol/src/types/collections/list.rs index 582d64d..a3b67e2 100644 --- a/protocol/src/types/collections/list.rs +++ b/protocol/src/types/collections/list.rs @@ -6,24 +6,24 @@ macro_rules! impl_list_type { const TYPE_NAME: &'static str = stringify!($ty); fn read_field(read: &mut ::std::io::Read, - settings: &::Settings, - hints: &mut ::hint::Hints) -> Result { - let elements = ::util::read_list(read, settings, hints)?; + settings: &crate::Settings, + hints: &mut crate::hint::Hints) -> Result { + let elements = crate::util::read_list(read, settings, hints)?; Ok(elements.into_iter().collect()) } fn write_field(&self, write: &mut ::std::io::Write, - settings: &::Settings, - hints: &mut ::hint::Hints) + settings: &crate::Settings, + hints: &mut crate::hint::Hints) -> Result<(), $crate::Error> { - ::util::write_list(self.iter(), write, settings, hints) + crate::util::write_list(self.iter(), write, settings, hints) } } #[cfg(test)] mod test { - pub use {Parcel, Settings}; + pub use crate::{Parcel, Settings}; pub use std::collections::$ty; #[test] diff --git a/protocol/src/types/collections/map.rs b/protocol/src/types/collections/map.rs index 30606ab..cec8b48 100644 --- a/protocol/src/types/collections/map.rs +++ b/protocol/src/types/collections/map.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use hint; +use crate::{Parcel, Error, Settings}; +use crate::hint; use std::collections::{HashMap, BTreeMap}; use std::hash::Hash; diff --git a/protocol/src/types/marker.rs b/protocol/src/types/marker.rs index cd9e56d..9e13a5b 100644 --- a/protocol/src/types/marker.rs +++ b/protocol/src/types/marker.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use hint; +use crate::{Parcel, Error, Settings}; +use crate::hint; use std::marker::PhantomData; use std::io::prelude::*; diff --git a/protocol/src/types/mod.rs b/protocol/src/types/mod.rs index c5f786a..c516a6f 100644 --- a/protocol/src/types/mod.rs +++ b/protocol/src/types/mod.rs @@ -1,11 +1,9 @@ //! Contains newtypes over the standard library types //! that support finer-grained serialization settings. -pub use self::numerics::Integer; -pub use self::string::String; -pub use self::unimplemented::Unimplemented; -pub use self::vec::Vec; - +pub use crate::types::{ + numerics::Integer, string::String, unimplemented::Unimplemented, vec::Vec +}; mod array; mod char; /// Definitions for the `std::collections` module. diff --git a/protocol/src/types/numerics.rs b/protocol/src/types/numerics.rs index 848c22d..8d23702 100644 --- a/protocol/src/types/numerics.rs +++ b/protocol/src/types/numerics.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use hint; +use crate::{Parcel, Error, Settings}; +use crate::hint; use std::io::prelude::*; diff --git a/protocol/src/types/option.rs b/protocol/src/types/option.rs index 5833dc4..5bbecb7 100644 --- a/protocol/src/types/option.rs +++ b/protocol/src/types/option.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use hint; +use crate::{Parcel, Error, Settings}; +use crate::hint; use std::io::prelude::*; diff --git a/protocol/src/types/smart_ptr.rs b/protocol/src/types/smart_ptr.rs index 2b55fd3..5ef360b 100644 --- a/protocol/src/types/smart_ptr.rs +++ b/protocol/src/types/smart_ptr.rs @@ -1,5 +1,5 @@ -use {Parcel, Settings, Error}; -use hint; +use crate::{Parcel, Settings, Error}; +use crate::hint; use std::rc::Rc; use std::sync::Arc; diff --git a/protocol/src/types/string.rs b/protocol/src/types/string.rs index 65cab69..03e0799 100644 --- a/protocol/src/types/string.rs +++ b/protocol/src/types/string.rs @@ -1,4 +1,4 @@ -use {hint, types, util, Parcel, Error, Settings}; +use crate::{hint, types, util, Parcel, Error, Settings}; use std::io::prelude::*; use std; diff --git a/protocol/src/types/tuple.rs b/protocol/src/types/tuple.rs index b4eb5f4..d79ee54 100644 --- a/protocol/src/types/tuple.rs +++ b/protocol/src/types/tuple.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use hint; +use crate::{Parcel, Error, Settings}; +use crate::hint; use std::io::prelude::*; diff --git a/protocol/src/types/unimplemented.rs b/protocol/src/types/unimplemented.rs index db3c761..efa6a53 100644 --- a/protocol/src/types/unimplemented.rs +++ b/protocol/src/types/unimplemented.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, ErrorKind, Settings}; -use hint; +use crate::{Parcel, Error, Settings}; +use crate::hint; use std::io::prelude::*; @@ -25,7 +25,7 @@ impl Parcel for Unimplemented fn read_field(_: &mut Read, _: &Settings, _: &mut hint::Hints) -> Result { - Err(ErrorKind::UnimplementedParcel(Self::TYPE_NAME).into()) + Err(Error::UnimplementedParcel(Self::TYPE_NAME).into()) } fn write_field(&self, diff --git a/protocol/src/types/uuid.rs b/protocol/src/types/uuid.rs index f7952bd..4e8a715 100644 --- a/protocol/src/types/uuid.rs +++ b/protocol/src/types/uuid.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use hint; +use crate::{Parcel, Error, Settings}; +use crate::hint; use std::io::prelude::*; use uuid::Uuid; diff --git a/protocol/src/types/vec.rs b/protocol/src/types/vec.rs index 8dacfb8..43c84fa 100644 --- a/protocol/src/types/vec.rs +++ b/protocol/src/types/vec.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use {hint, types, util}; +use crate::{Parcel, Error, Settings}; +use crate::{hint, types, util}; use std::io::prelude::*; use std; @@ -40,8 +40,8 @@ impl Parcel for Vec /// Stuff relating to `std::vec::Vec`. mod std_vec { - use {Error, Parcel, Settings}; - use {hint, util}; + use crate::{Error, Parcel, Settings}; + use crate::{hint, util}; use std::io::prelude::*; impl Parcel for Vec diff --git a/protocol/src/util.rs b/protocol/src/util.rs index 6f1a11a..9863cb1 100644 --- a/protocol/src/util.rs +++ b/protocol/src/util.rs @@ -1,8 +1,8 @@ //! Helper functions for dealing with sets or lists of parcels. -use {Parcel, Error, ErrorKind, TryFromIntError, Settings}; -use hint; -use types::Integer; +use crate::{Parcel, Error, TryFromIntError, Settings}; +use crate::hint; +use crate::types::Integer; use std::io::prelude::*; use std::io; @@ -89,9 +89,9 @@ pub fn read_list_ext(read: &mut Read, let mut items = Vec::new(); // FIXME: potential DoS vector, should timeout. while read_back_bytes.position() < byte_count as u64 { - let item = match T::read(&mut read_back_bytes, settings).map_err(|e| e.0) { + let item = match T::read(&mut read_back_bytes, settings) { Ok(item) => item, - Err(ErrorKind::Io(ref io)) if io.kind() == io::ErrorKind::UnexpectedEof => { + Err(Error::Io(ref io)) if io.kind() == io::ErrorKind::UnexpectedEof => { // FIXME: make this a client error. panic!("length prefix in bytes does not match actual size"); }, diff --git a/protocol/src/wire/dgram/mod.rs b/protocol/src/wire/dgram/mod.rs index 22ad684..c621d65 100644 --- a/protocol/src/wire/dgram/mod.rs +++ b/protocol/src/wire/dgram/mod.rs @@ -1,5 +1,5 @@ -use {Parcel, Error, Settings}; -use wire::middleware; +use crate::{Parcel, Error, Settings}; +use crate::wire::middleware; use std::io::prelude::*; use std::io::Cursor; diff --git a/protocol/src/wire/middleware/compression.rs b/protocol/src/wire/middleware/compression.rs index ded60e4..c2d4108 100644 --- a/protocol/src/wire/middleware/compression.rs +++ b/protocol/src/wire/middleware/compression.rs @@ -1,7 +1,7 @@ //! A middleware for compressing all transmitted data. -use Error; -use wire; +use crate::Error; +use crate::wire; use flate2; use std::io::prelude::*; diff --git a/protocol/src/wire/middleware/mod.rs b/protocol/src/wire/middleware/mod.rs index b2cb214..76391f4 100644 --- a/protocol/src/wire/middleware/mod.rs +++ b/protocol/src/wire/middleware/mod.rs @@ -1,13 +1,13 @@ //! A type safe `Parcel` data transformation pipeline. -pub use self::pipeline::Pipeline; +pub use crate::wire::middleware::pipeline::Pipeline; #[macro_use] pub mod pipeline; pub mod compression; pub mod rotate_bytes; -use Error; +use crate::Error; use std; /// A hook that sits between reading and writing packets. diff --git a/protocol/src/wire/middleware/pipeline.rs b/protocol/src/wire/middleware/pipeline.rs index 0bf8554..35899e1 100644 --- a/protocol/src/wire/middleware/pipeline.rs +++ b/protocol/src/wire/middleware/pipeline.rs @@ -1,7 +1,7 @@ //! An ordered list of middleware that performs tested transformations. -use Error; -use wire::middleware; +use crate::Error; +use crate::wire::middleware; use std; /// A middleware pipeline. @@ -78,9 +78,8 @@ impl std::default::Default for Default #[cfg(test)] mod test { - use Error; - use wire::middleware::Pipeline; - use wire; + use crate::Error; + use crate::wire::{self, middleware::Pipeline}; define_middleware_pipeline!(NullPipeline { encryption: NullMiddleware, diff --git a/protocol/src/wire/middleware/rotate_bytes.rs b/protocol/src/wire/middleware/rotate_bytes.rs index 68bb61c..39c17fe 100644 --- a/protocol/src/wire/middleware/rotate_bytes.rs +++ b/protocol/src/wire/middleware/rotate_bytes.rs @@ -1,7 +1,7 @@ //! A fixed-offset based caesar cipher middleware. -use Error; -use wire; +use crate::Error; +use crate::wire; use std::num::Wrapping; @@ -34,7 +34,7 @@ impl wire::Middleware for RotateBytes { #[cfg(test)] mod test { use super::RotateBytes; - use wire::Middleware; + use crate::wire::Middleware; #[test] fn bytes_encoded_correctly() { diff --git a/protocol/src/wire/mod.rs b/protocol/src/wire/mod.rs index cdfe414..9c83d7e 100644 --- a/protocol/src/wire/mod.rs +++ b/protocol/src/wire/mod.rs @@ -3,8 +3,8 @@ //! Also includes other utilities useful for reading and writing //! parcels. -pub use self::middleware::Middleware; -pub use self::reader::Reader; +pub use crate::wire::middleware::Middleware; +pub use crate::wire::reader::Reader; /// Datagram-based over the wire communication. pub mod dgram; diff --git a/protocol/src/wire/reader.rs b/protocol/src/wire/reader.rs index 45be215..57985f4 100644 --- a/protocol/src/wire/reader.rs +++ b/protocol/src/wire/reader.rs @@ -1,4 +1,4 @@ -use {Error, ErrorKind, Parcel, Settings}; +use crate::{Error, Parcel, Settings}; use std::io; use std::io::prelude::*; @@ -82,15 +82,15 @@ impl Reader { Ok(Some(value)) }, - Err(e) => match e.0 { - ErrorKind::Io(io) => { + Err(e) => match e { + Error::Io(io) => { // Ignore errors caused by the receive buffer // not having enough data yet. if io.kind() == io::ErrorKind::UnexpectedEof { Ok(None) } else { // An actual IO error. - Err(ErrorKind::Io(io).into()) + Err(Error::Io(io).into()) } }, _ => Err(e), diff --git a/protocol/src/wire/stream/connection.rs b/protocol/src/wire/stream/connection.rs index b0cee78..f95ca71 100644 --- a/protocol/src/wire/stream/connection.rs +++ b/protocol/src/wire/stream/connection.rs @@ -1,6 +1,6 @@ -use {Parcel, Error, Settings}; -use wire::stream::{Transport, transport}; -use wire::middleware; +use crate::{Parcel, Error, Settings}; +use crate::wire::stream::{Transport, transport}; +use crate::wire::middleware; use std::io::prelude::*; use std::io::Cursor; diff --git a/protocol/src/wire/stream/mod.rs b/protocol/src/wire/stream/mod.rs index 641c9a1..80a842f 100644 --- a/protocol/src/wire/stream/mod.rs +++ b/protocol/src/wire/stream/mod.rs @@ -1,5 +1,5 @@ -pub use self::transport::Transport; -pub use self::connection::Connection; +pub use crate::wire::stream::transport::Transport; +pub use crate::wire::stream::connection::Connection; mod transport; mod connection; diff --git a/protocol/src/wire/stream/transport/mod.rs b/protocol/src/wire/stream/transport/mod.rs index 0df1999..a7ad9e7 100644 --- a/protocol/src/wire/stream/transport/mod.rs +++ b/protocol/src/wire/stream/transport/mod.rs @@ -1,8 +1,8 @@ -pub use self::simple::Simple; +pub use crate::wire::stream::transport::simple::Simple; pub mod simple; -use {Error, Settings}; +use crate::{Error, Settings}; use std::io::prelude::*; pub trait Transport diff --git a/protocol/src/wire/stream/transport/simple.rs b/protocol/src/wire/stream/transport/simple.rs index 9c3c7ac..22d1d63 100644 --- a/protocol/src/wire/stream/transport/simple.rs +++ b/protocol/src/wire/stream/transport/simple.rs @@ -1,6 +1,6 @@ -use super::Transport; +use crate::wire::stream::transport::Transport; -use {Error, Parcel, Settings}; +use crate::{Error, Parcel, Settings}; use std::collections::VecDeque; use std::io::prelude::*; @@ -61,7 +61,7 @@ impl Simple if size_bytes.len() == mem::size_of::() { let mut size_buffer = Cursor::new(size_bytes); - let size = PacketSize::read(&mut size_buffer, settings).unwrap(); + let size = PacketSize::read(&mut size_buffer, settings)?; // We are now ready to receive packet data. self.state = State::AwaitingPacket { size: size, received_data: Vec::new() } @@ -113,7 +113,7 @@ impl Transport for Simple // Load the data into a temporary buffer before we process it. loop { let mut buffer = [0u8; BUFFER_SIZE]; - let bytes_read = read.read(&mut buffer).unwrap(); + let bytes_read = read.read(&mut buffer)?; let buffer = &buffer[0..bytes_read]; if bytes_read == 0 { @@ -149,10 +149,10 @@ impl Transport for Simple #[cfg(test)] mod test { - use Settings; - pub use super::Simple; + use crate::Settings; + pub use crate::wire::stream::transport::Simple; pub use std::io::Cursor; - pub use wire::stream::Transport; + pub use crate::wire::stream::Transport; #[test] fn serialises_the_data_with_32bit_length_prefix() {