From ae7d88458251616bfc4c8e576b1df8e3d1f0be48 Mon Sep 17 00:00:00 2001
From: Taiki Endo <te316e89@gmail.com>
Date: Fri, 26 Jul 2019 05:01:22 +0900
Subject: [PATCH] Update Bytes to Rust 2018 (#274)

---
 Cargo.toml             |  1 +
 README.md              |  2 --
 benches/buf.rs         |  8 ++++----
 benches/bytes.rs       | 10 +++++-----
 src/buf/buf.rs         |  4 ++--
 src/buf/buf_mut.rs     |  6 +++---
 src/buf/chain.rs       |  4 ++--
 src/buf/from_buf.rs    |  2 +-
 src/buf/into_buf.rs    |  2 +-
 src/buf/iter.rs        |  2 +-
 src/buf/reader.rs      |  2 +-
 src/buf/take.rs        |  2 +-
 src/buf/writer.rs      |  2 +-
 src/bytes.rs           | 36 ++++++++++++++++++------------------
 src/debug.rs           |  4 ++--
 src/either.rs          |  8 +++-----
 src/lib.rs             |  8 +++-----
 src/serde.rs           |  6 ++----
 tests/test_buf.rs      |  3 +--
 tests/test_buf_mut.rs  |  3 +--
 tests/test_bytes.rs    |  2 +-
 tests/test_chain.rs    |  2 +-
 tests/test_debug.rs    |  2 +-
 tests/test_from_buf.rs |  2 +-
 tests/test_iter.rs     |  4 ++--
 tests/test_reader.rs   |  2 +-
 tests/test_serde.rs    |  3 +--
 tests/test_take.rs     |  2 +-
 28 files changed, 62 insertions(+), 72 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index b20130b..e375eb0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -22,6 +22,7 @@ exclude       = [
     "test/**/*"
 ]
 categories = ["network-programming", "data-structures"]
+edition = "2018"
 
 publish = false
 
diff --git a/README.md b/README.md
index 09ebfe9..1dd8d5d 100644
--- a/README.md
+++ b/README.md
@@ -19,8 +19,6 @@ bytes = "0.4.12"
 Next, add this to your crate:
 
 ```rust
-extern crate bytes;
-
 use bytes::{Bytes, BytesMut, Buf, BufMut};
 ```
 
diff --git a/benches/buf.rs b/benches/buf.rs
index 99e559b..0c9a1d9 100644
--- a/benches/buf.rs
+++ b/benches/buf.rs
@@ -1,6 +1,6 @@
 #![feature(test)]
+#![deny(warnings, rust_2018_idioms)]
 
-extern crate bytes;
 extern crate test;
 
 use test::Bencher;
@@ -109,7 +109,7 @@ macro_rules! bench {
             b.iter(|| {
                 for i in 0..8 {
                     bufs[i].reset();
-                    let buf: &mut Buf =  &mut bufs[i]; // type erasure
+                    let buf: &mut dyn Buf =  &mut bufs[i]; // type erasure
                     test::black_box(buf.$method($($arg,)*));
                 }
             })
@@ -123,7 +123,7 @@ macro_rules! bench {
             b.iter(|| {
                 for i in 0..8 {
                     let mut buf = &arr[i..];
-                    let buf = &mut buf as &mut Buf; // type erasure
+                    let buf = &mut buf as &mut dyn Buf; // type erasure
                     test::black_box(buf.$method($($arg,)*));
                 }
             })
@@ -136,7 +136,7 @@ macro_rules! bench {
             b.iter(|| {
                 for _ in 0..8 {
                     let mut buf = Some(data);
-                    let buf = &mut buf as &mut Buf; // type erasure
+                    let buf = &mut buf as &mut dyn Buf; // type erasure
                     test::black_box(buf.get_u8());
                 }
             })
diff --git a/benches/bytes.rs b/benches/bytes.rs
index 7a33874..5885a1b 100644
--- a/benches/bytes.rs
+++ b/benches/bytes.rs
@@ -1,6 +1,6 @@
 #![feature(test)]
+#![deny(warnings, rust_2018_idioms)]
 
-extern crate bytes;
 extern crate test;
 
 use test::Bencher;
@@ -201,7 +201,7 @@ fn slice_empty(b: &mut Bencher) {
     b.iter(|| {
         let b = Bytes::from(vec![17; 1024]).clone();
         for i in 0..1000 {
-            test::black_box(b.slice(i % 100, i % 100));
+            test::black_box(b.slice(i % 100..i % 100));
         }
     })
 }
@@ -212,7 +212,7 @@ fn slice_short_from_arc(b: &mut Bencher) {
         // `clone` is to convert to ARC
         let b = Bytes::from(vec![17; 1024]).clone();
         for i in 0..1000 {
-            test::black_box(b.slice(1, 2 + i % 10));
+            test::black_box(b.slice(1..2 + i % 10));
         }
     })
 }
@@ -231,7 +231,7 @@ fn slice_avg_le_inline_from_arc(b: &mut Bencher) {
         for i in 0..1000 {
             // [1, INLINE_CAP]
             let len = 1 + i % (INLINE_CAP - 1);
-            test::black_box(b.slice(i % 10, i % 10 + len));
+            test::black_box(b.slice(i % 10..i % 10 + len));
         }
     })
 }
@@ -244,7 +244,7 @@ fn slice_large_le_inline_from_arc(b: &mut Bencher) {
         for i in 0..1000 {
             // [INLINE_CAP - 10, INLINE_CAP]
             let len = INLINE_CAP - 9 + i % 10;
-            test::black_box(b.slice(i % 10, i % 10 + len));
+            test::black_box(b.slice(i % 10..i % 10 + len));
         }
     })
 }
diff --git a/src/buf/buf.rs b/src/buf/buf.rs
index bd468d9..26ab661 100644
--- a/src/buf/buf.rs
+++ b/src/buf/buf.rs
@@ -916,7 +916,7 @@ pub trait Buf {
     }
 }
 
-impl<'a, T: Buf + ?Sized> Buf for &'a mut T {
+impl<T: Buf + ?Sized> Buf for &mut T {
     fn remaining(&self) -> usize {
         (**self).remaining()
     }
@@ -952,7 +952,7 @@ impl<T: Buf + ?Sized> Buf for Box<T> {
     }
 }
 
-impl<'a> Buf for &'a [u8] {
+impl Buf for &[u8] {
     #[inline]
     fn remaining(&self) -> usize {
         self.len()
diff --git a/src/buf/buf_mut.rs b/src/buf/buf_mut.rs
index e7935d9..235e8f0 100644
--- a/src/buf/buf_mut.rs
+++ b/src/buf/buf_mut.rs
@@ -979,7 +979,7 @@ pub trait BufMut {
     }
 }
 
-impl<'a, T: BufMut + ?Sized> BufMut for &'a mut T {
+impl<T: BufMut + ?Sized> BufMut for &mut T {
     fn remaining_mut(&self) -> usize {
         (**self).remaining_mut()
     }
@@ -1015,7 +1015,7 @@ impl<T: BufMut + ?Sized> BufMut for Box<T> {
     }
 }
 
-impl<'a> BufMut for &'a mut [u8] {
+impl BufMut for &mut [u8] {
     #[inline]
     fn remaining_mut(&self) -> usize {
         self.len()
@@ -1029,7 +1029,7 @@ impl<'a> BufMut for &'a mut [u8] {
     #[inline]
     unsafe fn advance_mut(&mut self, cnt: usize) {
         // Lifetime dance taken from `impl Write for &mut [u8]`.
-        let (_, b) = ::std::mem::replace(self, &mut []).split_at_mut(cnt);
+        let (_, b) = std::mem::replace(self, &mut []).split_at_mut(cnt);
         *self = b;
     }
 }
diff --git a/src/buf/chain.rs b/src/buf/chain.rs
index b6f1c76..936a086 100644
--- a/src/buf/chain.rs
+++ b/src/buf/chain.rs
@@ -1,5 +1,5 @@
-use {Buf, BufMut};
-use buf::IntoIter;
+use crate::{Buf, BufMut};
+use crate::buf::IntoIter;
 use std::io::{IoSlice, IoSliceMut};
 
 /// A `Chain` sequences two buffers.
diff --git a/src/buf/from_buf.rs b/src/buf/from_buf.rs
index 55f5cef..db91a95 100644
--- a/src/buf/from_buf.rs
+++ b/src/buf/from_buf.rs
@@ -1,4 +1,4 @@
-use {Buf, BufMut, IntoBuf, Bytes, BytesMut};
+use crate::{Buf, BufMut, IntoBuf, Bytes, BytesMut};
 
 /// Conversion from a [`Buf`]
 ///
diff --git a/src/buf/into_buf.rs b/src/buf/into_buf.rs
index ea1d36a..559021a 100644
--- a/src/buf/into_buf.rs
+++ b/src/buf/into_buf.rs
@@ -1,5 +1,5 @@
 use super::{Buf};
-use ::BytesMut;
+use crate::BytesMut;
 
 /// Conversion into a `Buf`
 ///
diff --git a/src/buf/iter.rs b/src/buf/iter.rs
index a6fe729..a1bf89b 100644
--- a/src/buf/iter.rs
+++ b/src/buf/iter.rs
@@ -1,4 +1,4 @@
-use Buf;
+use crate::Buf;
 
 /// Iterator over the bytes contained by the buffer.
 ///
diff --git a/src/buf/reader.rs b/src/buf/reader.rs
index 15419c0..361fdf7 100644
--- a/src/buf/reader.rs
+++ b/src/buf/reader.rs
@@ -1,4 +1,4 @@
-use {Buf};
+use crate::{Buf};
 
 use std::{cmp, io};
 
diff --git a/src/buf/take.rs b/src/buf/take.rs
index 9ab652b..559640b 100644
--- a/src/buf/take.rs
+++ b/src/buf/take.rs
@@ -1,4 +1,4 @@
-use {Buf};
+use crate::Buf;
 
 use std::cmp;
 
diff --git a/src/buf/writer.rs b/src/buf/writer.rs
index a192fe7..c946234 100644
--- a/src/buf/writer.rs
+++ b/src/buf/writer.rs
@@ -1,4 +1,4 @@
-use BufMut;
+use crate::BufMut;
 
 use std::{cmp, io};
 
diff --git a/src/bytes.rs b/src/bytes.rs
index 3312371..9db6362 100644
--- a/src/bytes.rs
+++ b/src/bytes.rs
@@ -1,6 +1,6 @@
-use {Buf, BufMut, IntoBuf};
-use buf::IntoIter;
-use debug;
+use crate::{Buf, BufMut, IntoBuf};
+use crate::buf::IntoIter;
+use crate::debug;
 
 use std::{cmp, fmt, mem, hash, slice, ptr, usize};
 use std::borrow::{Borrow, BorrowMut};
@@ -852,7 +852,7 @@ impl Bytes {
     /// assert_eq!(iter.next().map(|b| *b), Some(b'c'));
     /// assert_eq!(iter.next(), None);
     /// ```
-    pub fn iter<'a>(&'a self) -> ::std::slice::Iter<'a, u8> {
+    pub fn iter<'a>(&'a self) -> std::slice::Iter<'a, u8> {
         self.bytes().iter()
     }
 }
@@ -997,7 +997,7 @@ impl Default for Bytes {
 }
 
 impl fmt::Debug for Bytes {
-    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
         fmt::Debug::fmt(&debug::BsDebug(&self.inner.as_ref()), fmt)
     }
 }
@@ -1026,7 +1026,7 @@ impl IntoIterator for Bytes {
 
 impl<'a> IntoIterator for &'a Bytes {
     type Item = &'a u8;
-    type IntoIter = ::std::slice::Iter<'a, u8>;
+    type IntoIter = std::slice::Iter<'a, u8>;
 
     fn into_iter(self) -> Self::IntoIter {
         self.as_ref().into_iter()
@@ -1534,7 +1534,7 @@ impl BytesMut {
     /// assert_eq!(iter.next().map(|b| *b), Some(b'c'));
     /// assert_eq!(iter.next(), None);
     /// ```
-    pub fn iter<'a>(&'a self) -> ::std::slice::Iter<'a, u8> {
+    pub fn iter<'a>(&'a self) -> std::slice::Iter<'a, u8> {
         self.bytes().iter()
     }
 }
@@ -1725,7 +1725,7 @@ impl Default for BytesMut {
 }
 
 impl fmt::Debug for BytesMut {
-    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
         fmt::Debug::fmt(&debug::BsDebug(&self.inner.as_ref()), fmt)
     }
 }
@@ -1761,7 +1761,7 @@ impl fmt::Write for BytesMut {
     }
 
     #[inline]
-    fn write_fmt(&mut self, args: fmt::Arguments) -> fmt::Result {
+    fn write_fmt(&mut self, args: fmt::Arguments<'_>) -> fmt::Result {
         fmt::write(self, args)
     }
 }
@@ -1783,7 +1783,7 @@ impl IntoIterator for BytesMut {
 
 impl<'a> IntoIterator for &'a BytesMut {
     type Item = &'a u8;
-    type IntoIter = ::std::slice::Iter<'a, u8>;
+    type IntoIter = std::slice::Iter<'a, u8>;
 
     fn into_iter(self) -> Self::IntoIter {
         self.as_ref().into_iter()
@@ -2818,25 +2818,25 @@ impl<'a, T: ?Sized> PartialOrd<&'a T> for BytesMut
     }
 }
 
-impl<'a> PartialEq<BytesMut> for &'a [u8] {
+impl PartialEq<BytesMut> for &[u8] {
     fn eq(&self, other: &BytesMut) -> bool {
         *other == *self
     }
 }
 
-impl<'a> PartialOrd<BytesMut> for &'a [u8] {
+impl PartialOrd<BytesMut> for &[u8] {
     fn partial_cmp(&self, other: &BytesMut) -> Option<cmp::Ordering> {
         other.partial_cmp(self)
     }
 }
 
-impl<'a> PartialEq<BytesMut> for &'a str {
+impl PartialEq<BytesMut> for &str {
     fn eq(&self, other: &BytesMut) -> bool {
         *other == *self
     }
 }
 
-impl<'a> PartialOrd<BytesMut> for &'a str {
+impl PartialOrd<BytesMut> for &str {
     fn partial_cmp(&self, other: &BytesMut) -> Option<cmp::Ordering> {
         other.partial_cmp(self)
     }
@@ -2938,25 +2938,25 @@ impl PartialOrd<Bytes> for String {
     }
 }
 
-impl<'a> PartialEq<Bytes> for &'a [u8] {
+impl PartialEq<Bytes> for &[u8] {
     fn eq(&self, other: &Bytes) -> bool {
         *other == *self
     }
 }
 
-impl<'a> PartialOrd<Bytes> for &'a [u8] {
+impl PartialOrd<Bytes> for &[u8] {
     fn partial_cmp(&self, other: &Bytes) -> Option<cmp::Ordering> {
         other.partial_cmp(self)
     }
 }
 
-impl<'a> PartialEq<Bytes> for &'a str {
+impl PartialEq<Bytes> for &str {
     fn eq(&self, other: &Bytes) -> bool {
         *other == *self
     }
 }
 
-impl<'a> PartialOrd<Bytes> for &'a str {
+impl PartialOrd<Bytes> for &str {
     fn partial_cmp(&self, other: &Bytes) -> Option<cmp::Ordering> {
         other.partial_cmp(self)
     }
diff --git a/src/debug.rs b/src/debug.rs
index 0677bc3..32d8868 100644
--- a/src/debug.rs
+++ b/src/debug.rs
@@ -12,8 +12,8 @@ use std::fmt;
 /// `BsDebug` is not a part of public API of bytes crate.
 pub struct BsDebug<'a>(pub &'a [u8]);
 
-impl<'a> fmt::Debug for BsDebug<'a> {
-    fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
+impl fmt::Debug for BsDebug<'_> {
+    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
         write!(fmt, "b\"")?;
         for &c in self.0 {
             // https://doc.rust-lang.org/reference.html#byte-escapes
diff --git a/src/either.rs b/src/either.rs
index dba5d52..954dfff 100644
--- a/src/either.rs
+++ b/src/either.rs
@@ -1,9 +1,7 @@
-extern crate either;
+use crate::{Buf, BufMut};
 
-use {Buf, BufMut};
-
-use self::either::Either;
-use self::either::Either::*;
+use either::Either;
+use either::Either::*;
 use std::io::{IoSlice, IoSliceMut};
 
 impl<L, R> Buf for Either<L, R>
diff --git a/src/lib.rs b/src/lib.rs
index 9dd1492..031a24c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -68,13 +68,11 @@
 //! perform a syscall, which has the potential of failing. Operations on `Buf`
 //! and `BufMut` are infallible.
 
-#![deny(warnings, missing_docs, missing_debug_implementations)]
+#![deny(warnings, missing_docs, missing_debug_implementations, rust_2018_idioms)]
 #![doc(html_root_url = "https://docs.rs/bytes/0.5.0")]
 
-extern crate byteorder;
-
 pub mod buf;
-pub use buf::{
+pub use crate::buf::{
     Buf,
     BufMut,
     IntoBuf,
@@ -82,7 +80,7 @@ pub use buf::{
 
 mod bytes;
 mod debug;
-pub use bytes::{Bytes, BytesMut};
+pub use crate::bytes::{Bytes, BytesMut};
 
 // Optional Serde support
 #[cfg(feature = "serde")]
diff --git a/src/serde.rs b/src/serde.rs
index ff98921..7ade4d9 100644
--- a/src/serde.rs
+++ b/src/serde.rs
@@ -1,7 +1,5 @@
-extern crate serde;
-
 use std::{cmp, fmt};
-use self::serde::{Serialize, Serializer, Deserialize, Deserializer, de};
+use serde::{Serialize, Serializer, Deserialize, Deserializer, de};
 use super::{Bytes, BytesMut};
 
 macro_rules! serde_impl {
@@ -20,7 +18,7 @@ macro_rules! serde_impl {
         impl<'de> de::Visitor<'de> for $visitor_ty {
             type Value = $ty;
 
-            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+            fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
                 formatter.write_str("byte array")
             }
 
diff --git a/tests/test_buf.rs b/tests/test_buf.rs
index da0efe7..4d60ab5 100644
--- a/tests/test_buf.rs
+++ b/tests/test_buf.rs
@@ -1,5 +1,4 @@
-extern crate bytes;
-extern crate byteorder;
+#![deny(warnings, rust_2018_idioms)]
 
 use bytes::Buf;
 use std::io::IoSlice;
diff --git a/tests/test_buf_mut.rs b/tests/test_buf_mut.rs
index b0af550..2c9f1f2 100644
--- a/tests/test_buf_mut.rs
+++ b/tests/test_buf_mut.rs
@@ -1,5 +1,4 @@
-extern crate bytes;
-extern crate byteorder;
+#![deny(warnings, rust_2018_idioms)]
 
 use bytes::{BufMut, BytesMut};
 use std::usize;
diff --git a/tests/test_bytes.rs b/tests/test_bytes.rs
index e4ceb3d..70a8205 100644
--- a/tests/test_bytes.rs
+++ b/tests/test_bytes.rs
@@ -1,4 +1,4 @@
-extern crate bytes;
+#![deny(warnings, rust_2018_idioms)]
 
 use bytes::{Bytes, BytesMut, Buf, BufMut};
 
diff --git a/tests/test_chain.rs b/tests/test_chain.rs
index 582c657..6708028 100644
--- a/tests/test_chain.rs
+++ b/tests/test_chain.rs
@@ -1,4 +1,4 @@
-extern crate bytes;
+#![deny(warnings, rust_2018_idioms)]
 
 use bytes::{Buf, BufMut, Bytes, BytesMut};
 use bytes::buf::Chain;
diff --git a/tests/test_debug.rs b/tests/test_debug.rs
index 9945a28..7528bac 100644
--- a/tests/test_debug.rs
+++ b/tests/test_debug.rs
@@ -1,4 +1,4 @@
-extern crate bytes;
+#![deny(warnings, rust_2018_idioms)]
 
 use bytes::Bytes;
 
diff --git a/tests/test_from_buf.rs b/tests/test_from_buf.rs
index efa043c..5f644e1 100644
--- a/tests/test_from_buf.rs
+++ b/tests/test_from_buf.rs
@@ -1,4 +1,4 @@
-extern crate bytes;
+#![deny(warnings, rust_2018_idioms)]
 
 use bytes::{Buf, Bytes, BytesMut};
 
diff --git a/tests/test_iter.rs b/tests/test_iter.rs
index 2d2f495..13b86cd 100644
--- a/tests/test_iter.rs
+++ b/tests/test_iter.rs
@@ -1,6 +1,6 @@
-extern crate bytes;
+#![deny(warnings, rust_2018_idioms)]
 
-use bytes::{Bytes};
+use bytes::Bytes;
 
 #[test]
 fn iter_len() {
diff --git a/tests/test_reader.rs b/tests/test_reader.rs
index a10d70b..89a7849 100644
--- a/tests/test_reader.rs
+++ b/tests/test_reader.rs
@@ -1,4 +1,4 @@
-extern crate bytes;
+#![deny(warnings, rust_2018_idioms)]
 
 use std::io::{BufRead, Read};
 
diff --git a/tests/test_serde.rs b/tests/test_serde.rs
index ff44024..18b1356 100644
--- a/tests/test_serde.rs
+++ b/tests/test_serde.rs
@@ -1,7 +1,6 @@
 #![cfg(feature = "serde")]
+#![deny(warnings, rust_2018_idioms)]
 
-extern crate bytes;
-extern crate serde_test;
 use serde_test::{Token, assert_tokens};
 
 #[test]
diff --git a/tests/test_take.rs b/tests/test_take.rs
index ebc91dd..7d04318 100644
--- a/tests/test_take.rs
+++ b/tests/test_take.rs
@@ -1,4 +1,4 @@
-extern crate bytes;
+#![deny(warnings, rust_2018_idioms)]
 
 use bytes::Buf;
 
-- 
GitLab