diff --git a/Cargo.toml b/Cargo.toml
index dff93da4..77a958de 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -10,6 +10,7 @@ keywords = ["zip", "archive"]
description = """
Library to support the reading and writing of zip files.
"""
+edition = "2018"
[dependencies]
flate2 = { version = "1.0", default-features = false, optional = true }
diff --git a/benches/read_entry.rs b/benches/read_entry.rs
index 104e97c1..7b345240 100644
--- a/benches/read_entry.rs
+++ b/benches/read_entry.rs
@@ -1,7 +1,4 @@
-#[macro_use]
-extern crate bencher;
-extern crate rand;
-extern crate zip;
+use bencher::{benchmark_group, benchmark_main};
use std::io::{Cursor, Read, Write};
diff --git a/examples/extract.rs b/examples/extract.rs
index 3d3a0939..1ec429d3 100644
--- a/examples/extract.rs
+++ b/examples/extract.rs
@@ -1,5 +1,3 @@
-extern crate zip;
-
use std::io;
use std::fs;
diff --git a/examples/extract_lorem.rs b/examples/extract_lorem.rs
index eb49bbe3..207fd530 100644
--- a/examples/extract_lorem.rs
+++ b/examples/extract_lorem.rs
@@ -1,7 +1,5 @@
use std::io::prelude::*;
-extern crate zip;
-
fn main()
{
std::process::exit(real_main());
diff --git a/examples/file_info.rs b/examples/file_info.rs
index 63f7d87e..af7abdd4 100644
--- a/examples/file_info.rs
+++ b/examples/file_info.rs
@@ -1,5 +1,3 @@
-extern crate zip;
-
use std::fs;
use std::io::BufReader;
diff --git a/examples/stdin_info.rs b/examples/stdin_info.rs
index 910ba8e8..8d3f7c43 100644
--- a/examples/stdin_info.rs
+++ b/examples/stdin_info.rs
@@ -1,5 +1,3 @@
-extern crate zip;
-
use std::io::{self, Read};
fn main() {
diff --git a/examples/write_dir.rs b/examples/write_dir.rs
index fb957742..6b2bac0a 100644
--- a/examples/write_dir.rs
+++ b/examples/write_dir.rs
@@ -1,5 +1,3 @@
-extern crate zip;
-extern crate walkdir;
use std::io::prelude::*;
use std::io::{Write, Seek};
diff --git a/examples/write_sample.rs b/examples/write_sample.rs
index 6ff12f0b..ab0ef1a2 100644
--- a/examples/write_sample.rs
+++ b/examples/write_sample.rs
@@ -1,8 +1,6 @@
use std::io::prelude::*;
use zip::write::FileOptions;
-extern crate zip;
-
fn main()
{
std::process::exit(real_main());
diff --git a/src/compression.rs b/src/compression.rs
index 9585ef3b..3ec9dbf3 100644
--- a/src/compression.rs
+++ b/src/compression.rs
@@ -45,7 +45,7 @@ impl CompressionMethod {
}
impl fmt::Display for CompressionMethod {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
// Just duplicate what the Debug format looks like, i.e, the enum key:
write!(f, "{:?}", self)
}
diff --git a/src/lib.rs b/src/lib.rs
index 3de71965..4685e18a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -2,15 +2,6 @@
#![warn(missing_docs)]
-#[cfg(feature = "bzip2")]
-extern crate bzip2;
-extern crate crc32fast;
-#[cfg(feature = "deflate")]
-extern crate flate2;
-extern crate podio;
-#[cfg(feature = "time")]
-extern crate time;
-
pub use crate::read::ZipArchive;
pub use crate::write::ZipWriter;
pub use crate::compression::CompressionMethod;
diff --git a/src/read.rs b/src/read.rs
index a55e2eb6..9b4bad43 100644
--- a/src/read.rs
+++ b/src/read.rs
@@ -13,8 +13,6 @@ use podio::{ReadPodExt, LittleEndian};
use crate::types::{ZipFileData, System, DateTime};
use crate::cp437::FromCp437;
-#[cfg(feature = "deflate")]
-use flate2;
#[cfg(feature = "deflate")]
use flate2::read::DeflateDecoder;
@@ -414,7 +412,7 @@ fn parse_extra_field(file: &mut ZipFileData, data: &[u8]) -> ZipResult<()>
Ok(())
}
-fn get_reader<'a>(reader: &'a mut ZipFileReader) -> &'a mut dyn Read {
+fn get_reader<'a>(reader: &'a mut ZipFileReader<'_>) -> &'a mut dyn Read {
match *reader {
ZipFileReader::NoReader => panic!("ZipFileReader was in an invalid state"),
ZipFileReader::Stored(ref mut r) => r as &mut dyn Read,
@@ -563,7 +561,7 @@ impl<'a> Drop for ZipFile<'a> {
/// * `comment`: set to an empty string
/// * `data_start`: set to 0
/// * `external_attributes`: `unix_mode()`: will return None
-pub fn read_zipfile_from_stream<'a, R: io::Read>(reader: &'a mut R) -> ZipResult