[INFO] updating cached repository https://github.com/pavel-mukhanov/noise
[INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"`
[INFO] running `"git" "rev-parse" "HEAD"`
[INFO] [stdout] 814a491b85cffaf91b1f64f04ed3484eb940cabb
[INFO] checking pavel-mukhanov/noise against master#209b2be09fcaff937480d1fbbe8b31646e361c7a for pr-70917
[INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpavel-mukhanov%2Fnoise" "/workspace/builds/worker-6/source"`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/pavel-mukhanov/noise on toolchain 209b2be09fcaff937480d1fbbe8b31646e361c7a
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "read-manifest" "--manifest-path" "Cargo.toml"`
[INFO] started tweaking git repo https://github.com/pavel-mukhanov/noise
[INFO] removed path dependency snow from git repo https://github.com/pavel-mukhanov/noise
[INFO] finished tweaking git repo https://github.com/pavel-mukhanov/noise
[INFO] tweaked toml for git repo https://github.com/pavel-mukhanov/noise written to /workspace/builds/worker-6/source/Cargo.toml
[INFO] crate git repo https://github.com/pavel-mukhanov/noise already has a lockfile, it will not be regenerated
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr] error: the lock file /workspace/builds/worker-6/source/Cargo.lock needs to be updated but --locked was passed to prevent this
[INFO] [stderr] If you want to try to generate the lock file without accessing the network, use the --offline flag.
[INFO] the lockfile is outdated, regenerating it
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stdout] c997c0d13890c405a448ee679cb03b8c85e03e21155eb48a77bd6f56829d6085
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `"docker" "start" "-a" "c997c0d13890c405a448ee679cb03b8c85e03e21155eb48a77bd6f56829d6085"`
[INFO] [stderr]     Checking unwrap v1.2.1
[INFO] [stderr]    Compiling miniz_oxide v0.3.6
[INFO] [stderr]     Checking chacha20-poly1305-aead v0.1.2
[INFO] [stderr]     Checking arrayvec v0.4.12
[INFO] [stderr]    Compiling xattr v0.2.2
[INFO] [stderr]    Compiling filetime v0.2.9
[INFO] [stderr]    Compiling parking_lot_core v0.6.2
[INFO] [stderr]    Compiling parking_lot v0.9.0
[INFO] [stderr]    Compiling snow v0.1.9
[INFO] [stderr]    Compiling msdos_time v0.1.6
[INFO] [stderr]    Compiling bzip2-sys v0.1.8+1.0.8
[INFO] [stderr]    Compiling miniz-sys v0.1.12
[INFO] [stderr]     Checking rust-crypto v0.2.36
[INFO] [stderr]     Checking tokio-executor v0.1.10
[INFO] [stderr]     Checking crossbeam-queue v0.2.1
[INFO] [stderr]    Compiling serde_derive v1.0.106
[INFO] [stderr]     Checking error-chain v0.11.0
[INFO] [stderr]     Checking failure v0.1.7
[INFO] [stderr]     Checking tokio-threadpool v0.1.18
[INFO] [stderr]     Checking tokio-timer v0.2.13
[INFO] [stderr]     Checking tokio-current-thread v0.1.7
[INFO] [stderr]    Compiling tar v0.4.26
[INFO] [stderr]     Checking blake2-rfc v0.2.18
[INFO] [stderr]    Compiling flate2 v1.0.14
[INFO] [stderr]    Compiling bzip2 v0.3.3
[INFO] [stderr]    Compiling flate2 v0.2.20
[INFO] [stderr]     Checking tokio-fs v0.1.7
[INFO] [stderr]     Checking tokio-reactor v0.1.12
[INFO] [stderr]    Compiling zip v0.2.8
[INFO] [stderr]     Checking tokio-uds v0.2.6
[INFO] [stderr]     Checking tokio-tcp v0.1.4
[INFO] [stderr]     Checking tokio-udp v0.1.6
[INFO] [stderr]    Compiling exonum_libsodium-sys v0.0.17
[INFO] [stderr]     Checking tokio v0.1.22
[INFO] [stderr]     Checking exonum_sodiumoxide v0.0.17
[INFO] [stderr]     Checking tokio-core v0.1.17
[INFO] [stderr]     Checking noise v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused `#[macro_use]` import
[INFO] [stderr]  --> src/lib.rs:5:1
[INFO] [stderr]   |
[INFO] [stderr] 5 | #[macro_use]
[INFO] [stderr]   | ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused `#[macro_use]` import
[INFO] [stderr]   --> src/lib.rs:16:1
[INFO] [stderr]    |
[INFO] [stderr] 16 | #[macro_use]
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::future::Future`
[INFO] [stderr]   --> src/lib.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use futures::future::Future;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::Sink`
[INFO] [stderr]   --> src/lib.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use futures::Sink;
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::Stream`
[INFO] [stderr]   --> src/lib.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 | use futures::Stream;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::NoiseBuilder`
[INFO] [stderr]   --> src/lib.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | use snow::NoiseBuilder;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::params::NoiseParams`
[INFO] [stderr]   --> src/lib.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 | use snow::params::NoiseParams;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::error::Error as StdError`
[INFO] [stderr]   --> src/lib.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | use std::error::Error as StdError;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io`
[INFO] [stderr]   --> src/lib.rs:30:5
[INFO] [stderr]    |
[INFO] [stderr] 30 | use std::io;
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio_core::net::TcpStream`
[INFO] [stderr]   --> src/lib.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 | use tokio_core::net::TcpStream;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio_io::AsyncRead`
[INFO] [stderr]   --> src/lib.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 | use tokio_io::AsyncRead;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::SystemTime`
[INFO] [stderr]   --> src/lib.rs:33:5
[INFO] [stderr]    |
[INFO] [stderr] 33 | use std::time::SystemTime;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `noise_codec::MessagesCodec`
[INFO] [stderr]   --> src/lib.rs:34:5
[INFO] [stderr]    |
[INFO] [stderr] 34 | use noise_codec::MessagesCodec;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::executor::current_thread`
[INFO] [stderr]   --> src/lib.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 35 | use tokio::executor::current_thread;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio_io::codec::Framed`
[INFO] [stderr]   --> src/lib.rs:36:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | use tokio_io::codec::Framed;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/noise_main.rs:25:32
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub type HandshakeResult = Box<Future<Item=Framed<TcpStream, MessagesCodec>, Error=io::Error>>;
[INFO] [stderr]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=Framed<TcpStream, MessagesCodec>, Error=io::Error>`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/noise_main.rs:83:37
[INFO] [stderr]    |
[INFO] [stderr] 83 | pub fn read(sock: TcpStream) -> Box<Future<Item=(TcpStream, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(TcpStream, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/noise_main.rs:95:10
[INFO] [stderr]    |
[INFO] [stderr] 95 | ) -> Box<Future<Item=(TcpStream, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(TcpStream, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/noise_main.rs:105:10
[INFO] [stderr]     |
[INFO] [stderr] 105 | ) -> Box<Future<Item=(usize, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(usize, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/noise_main.rs:112:10
[INFO] [stderr]     |
[INFO] [stderr] 112 | ) -> Box<Future<Item=(usize, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(usize, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ByteOrder`, `LittleEndian`
[INFO] [stderr]    --> src/noise_main.rs:118:21
[INFO] [stderr]     |
[INFO] [stderr] 118 |     use byteorder::{ByteOrder, LittleEndian};
[INFO] [stderr]     |                     ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `env_logger`
[INFO] [stderr]    --> src/noise_main.rs:119:9
[INFO] [stderr]     |
[INFO] [stderr] 119 |     use env_logger;
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `noise_main::write_handshake_msg`
[INFO] [stderr]    --> src/noise_main.rs:127:9
[INFO] [stderr]     |
[INFO] [stderr] 127 |     use noise_main::write_handshake_msg;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::NoiseBuilder`
[INFO] [stderr]    --> src/noise_main.rs:128:9
[INFO] [stderr]     |
[INFO] [stderr] 128 |     use snow::NoiseBuilder;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::params::NoiseParams`
[INFO] [stderr]    --> src/noise_main.rs:129:9
[INFO] [stderr]     |
[INFO] [stderr] 129 |     use snow::params::NoiseParams;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::Session`
[INFO] [stderr]    --> src/noise_main.rs:130:9
[INFO] [stderr]     |
[INFO] [stderr] 130 |     use snow::Session;
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Read`, `Write`
[INFO] [stderr]    --> src/noise_main.rs:132:19
[INFO] [stderr]     |
[INFO] [stderr] 132 |     use std::io::{Read, Write};
[INFO] [stderr]     |                   ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TcpListener as StdTcpListener`, `TcpStream as StdTcpStream`
[INFO] [stderr]    --> src/noise_main.rs:134:20
[INFO] [stderr]     |
[INFO] [stderr] 134 |     use std::net::{TcpListener as StdTcpListener, TcpStream as StdTcpStream};
[INFO] [stderr]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ToSocketAddrs`
[INFO] [stderr]    --> src/noise_main.rs:135:32
[INFO] [stderr]     |
[INFO] [stderr] 135 |     use std::net::{SocketAddr, ToSocketAddrs};
[INFO] [stderr]     |                                ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]    --> src/noise_main.rs:136:9
[INFO] [stderr]     |
[INFO] [stderr] 136 |     use std::sync::Arc;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `wrapper::NoiseError`
[INFO] [stderr]    --> src/noise_main.rs:142:9
[INFO] [stderr]     |
[INFO] [stderr] 142 |     use wrapper::NoiseError;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio`
[INFO] [stderr]    --> src/noise_main.rs:147:9
[INFO] [stderr]     |
[INFO] [stderr] 147 |     use tokio;
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Mutex`
[INFO] [stderr]    --> src/noise_main.rs:148:9
[INFO] [stderr]     |
[INFO] [stderr] 148 |     use std::sync::Mutex;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]    --> src/noise_main.rs:150:9
[INFO] [stderr]     |
[INFO] [stderr] 150 |     use std::time::Duration;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/noise_main.rs:377:14
[INFO] [stderr]     |
[INFO] [stderr] 377 |     ) -> Box<Future<Item=(usize, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(usize, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BigEndian`
[INFO] [stderr]  --> src/noise_codec.rs:1:17
[INFO] [stderr]   |
[INFO] [stderr] 1 | use byteorder::{BigEndian,LittleEndian, ByteOrder};
[INFO] [stderr]   |                 ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::Session`
[INFO] [stderr]  --> src/noise_codec.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use snow::Session;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sodiumoxide::crypto::aead::chacha20poly1305 as sodium_chacha20poly1305`
[INFO] [stderr]  --> src/sodium_wrapper.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use sodiumoxide::crypto::aead::chacha20poly1305 as sodium_chacha20poly1305;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sodiumoxide::crypto::hash::sha256 as sodium_sha256`
[INFO] [stderr]  --> src/sodium_wrapper.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use sodiumoxide::crypto::hash::sha256 as sodium_sha256;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/sodium_wrapper.rs:62:38
[INFO] [stderr]    |
[INFO] [stderr] 62 |     fn generate(&mut self, rng: &mut Random) {
[INFO] [stderr]    |                                      ^^^^^^ help: use `dyn`: `dyn Random`
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio::executor::current_thread': use tokio-current-thread crate or functions in tokio::runtime::current_thread instead
[INFO] [stderr]   --> src/lib.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 35 | use tokio::executor::current_thread;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec
[INFO] [stderr]   --> src/lib.rs:36:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | use tokio_io::codec::Framed;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec
[INFO] [stderr]   --> src/noise_main.rs:20:27
[INFO] [stderr]    |
[INFO] [stderr] 20 | use tokio_io::{AsyncRead, codec::Framed, io::{read_exact, write_all}};
[INFO] [stderr]    |                           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec
[INFO] [stderr]   --> src/noise_main.rs:25:44
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub type HandshakeResult = Box<Future<Item=Framed<TcpStream, MessagesCodec>, Error=io::Error>>;
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead
[INFO] [stderr]   --> src/noise_main.rs:52:45
[INFO] [stderr]    |
[INFO] [stderr] 52 |                         let framed = stream.framed(MessagesCodec::new(noise));
[INFO] [stderr]    |                                             ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead
[INFO] [stderr]   --> src/noise_main.rs:74:49
[INFO] [stderr]    |
[INFO] [stderr] 74 | ...                   let framed = stream.framed(MessagesCodec::new(noise));
[INFO] [stderr]    |                                           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead
[INFO] [stderr]    --> src/noise_main.rs:343:53
[INFO] [stderr]     |
[INFO] [stderr] 343 | ...                   let framed = stream.framed(MessagesCodec::new(noise));
[INFO] [stderr]     |                                           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead
[INFO] [stderr]    --> src/noise_main.rs:364:49
[INFO] [stderr]     |
[INFO] [stderr] 364 | ...                   let framed = stream.framed(MessagesCodec::new(noise));
[INFO] [stderr]     |                                           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string()
[INFO] [stderr]    --> src/noise_main.rs:397:59
[INFO] [stderr]     |
[INFO] [stderr] 397 |         other_error(&format!("An error occurred, {}", err.description()))
[INFO] [stderr]     |                                                           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'rand::Rng::gen_iter': use Rng::sample_iter(&Standard) instead
[INFO] [stderr]   --> src/sodium_wrapper.rs:22:43
[INFO] [stderr]    |
[INFO] [stderr] 22 |         let bytes: Vec<u8> = thread_rng().gen_iter::<u8>().take(out.len()).collect();
[INFO] [stderr]    |                                           ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::Sink`
[INFO] [stderr]    --> src/noise_main.rs:146:9
[INFO] [stderr]     |
[INFO] [stderr] 146 |     use futures::Sink;
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `params`
[INFO] [stderr]    --> src/wrapper.rs:169:22
[INFO] [stderr]     |
[INFO] [stderr] 169 |     fn noise_builder(params: &HandshakeParams) -> NoiseBuilder {
[INFO] [stderr]     |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `max_message_len`
[INFO] [stderr]   --> src/noise_main.rs:41:9
[INFO] [stderr]    |
[INFO] [stderr] 41 |     let max_message_len = params.max_message_len;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_message_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `max_message_len`
[INFO] [stderr]   --> src/noise_main.rs:62:9
[INFO] [stderr]    |
[INFO] [stderr] 62 |     let max_message_len = params.max_message_len;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_message_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `framed`
[INFO] [stderr]    --> src/noise_main.rs:292:50
[INFO] [stderr]     |
[INFO] [stderr] 292 |                 let reader = handshake.and_then(|framed| {
[INFO] [stderr]     |                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_framed`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `max_message_len`
[INFO] [stderr]    --> src/noise_main.rs:330:13
[INFO] [stderr]     |
[INFO] [stderr] 330 |         let max_message_len = params.max_message_len;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_message_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `max_message_len`
[INFO] [stderr]    --> src/noise_main.rs:353:13
[INFO] [stderr]     |
[INFO] [stderr] 353 |         let max_message_len = params.max_message_len;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_message_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `chunk`
[INFO] [stderr]   --> src/noise_codec.rs:61:53
[INFO] [stderr]    |
[INFO] [stderr] 61 |         msg.as_bytes().chunks(65535 - 16).for_each(|chunk| {
[INFO] [stderr]    |                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/noise_codec.rs:41:17
[INFO] [stderr]    |
[INFO] [stderr] 41 |             let mut read_to = vec![0u8; chunk.len()];
[INFO] [stderr]    |                 ----^^^^^^^
[INFO] [stderr]    |                 |
[INFO] [stderr]    |                 help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/noise_codec.rs:38:13
[INFO] [stderr]    |
[INFO] [stderr] 38 |         let mut readed_len = 0usize;
[INFO] [stderr]    |             ----^^^^^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/noise_codec.rs:62:17
[INFO] [stderr]    |
[INFO] [stderr] 62 |             let mut tmp_buf = vec![0u8; 65535];
[INFO] [stderr]    |                 ----^^^^^^^
[INFO] [stderr]    |                 |
[INFO] [stderr]    |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/noise_codec.rs:57:13
[INFO] [stderr]    |
[INFO] [stderr] 57 |         let mut len = 0usize;
[INFO] [stderr]    |             ----^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Normal`
[INFO] [stderr]    --> src/noise_main.rs:154:9
[INFO] [stderr]     |
[INFO] [stderr] 154 |         Normal,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `One`
[INFO] [stderr]    --> src/noise_main.rs:155:9
[INFO] [stderr]     |
[INFO] [stderr] 155 |         One(u8, usize),
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Two`
[INFO] [stderr]    --> src/noise_main.rs:156:9
[INFO] [stderr]     |
[INFO] [stderr] 156 |         Two(u8, usize),
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant item is never used: `EMPTY_MESSAGE`
[INFO] [stderr]    --> src/noise_main.rs:159:5
[INFO] [stderr]     |
[INFO] [stderr] 159 |     const EMPTY_MESSAGE: usize = 0;
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant item is never used: `SMALL_MESSAGE`
[INFO] [stderr]    --> src/noise_main.rs:160:5
[INFO] [stderr]     |
[INFO] [stderr] 160 |     const SMALL_MESSAGE: usize = NOISE_MIN_HANDSHAKE_MESSAGE_LENGTH - 1;
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant item is never used: `BIG_MESSAGE`
[INFO] [stderr]    --> src/noise_main.rs:161:5
[INFO] [stderr]     |
[INFO] [stderr] 161 |     const BIG_MESSAGE: usize = NOISE_MAX_MESSAGE_LENGTH + 1;
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `test_noise_bad_listener`
[INFO] [stderr]    --> src/noise_main.rs:248:8
[INFO] [stderr]     |
[INFO] [stderr] 248 |     fn test_noise_bad_listener(addr: &SocketAddr, message_size: usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `connect`
[INFO] [stderr]    --> src/noise_main.rs:265:8
[INFO] [stderr]     |
[INFO] [stderr] 265 |     fn connect(addr: &SocketAddr) {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `run_handshake_listener`
[INFO] [stderr]    --> src/noise_main.rs:274:8
[INFO] [stderr]     |
[INFO] [stderr] 274 |     fn run_handshake_listener(addr: &SocketAddr, step: HandshakeStep, sender: Sender<()>) -> Result<(), io::Error> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `send_handshake`
[INFO] [stderr]    --> src/noise_main.rs:306:8
[INFO] [stderr]     |
[INFO] [stderr] 306 |     fn send_handshake(addr: &SocketAddr, step: HandshakeStep) -> Result<(), io::Error> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `send_bad_handshake`
[INFO] [stderr]    --> src/noise_main.rs:329:8
[INFO] [stderr]     |
[INFO] [stderr] 329 |     fn send_bad_handshake(params: &HandshakeParams, stream: TcpStream, step: HandshakeStep) -> HandshakeResult {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `listen_bad_handshake`
[INFO] [stderr]    --> src/noise_main.rs:352:8
[INFO] [stderr]     |
[INFO] [stderr] 352 |     fn listen_bad_handshake(stream: TcpStream, params: &HandshakeParams, step: HandshakeStep) -> HandshakeResult {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `write_bad_handshake_msg`
[INFO] [stderr]    --> src/noise_main.rs:373:12
[INFO] [stderr]     |
[INFO] [stderr] 373 |     pub fn write_bad_handshake_msg(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `log_error`
[INFO] [stderr]    --> src/noise_main.rs:388:12
[INFO] [stderr]     |
[INFO] [stderr] 388 |     pub fn log_error<E: StdError>(err: E) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `other_error`
[INFO] [stderr]    --> src/noise_main.rs:392:12
[INFO] [stderr]     |
[INFO] [stderr] 392 |     pub fn other_error<S: AsRef<str>>(s: S) -> io::Error {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `into_other`
[INFO] [stderr]    --> src/noise_main.rs:396:12
[INFO] [stderr]     |
[INFO] [stderr] 396 |     pub fn into_other<E: StdError>(err: E) -> io::Error {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `name`
[INFO] [stderr]   --> src/sodium_wrapper.rs:44:5
[INFO] [stderr]    |
[INFO] [stderr] 44 |     fn name(&self) -> &'static str {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `pub_len`
[INFO] [stderr]   --> src/sodium_wrapper.rs:48:5
[INFO] [stderr]    |
[INFO] [stderr] 48 |     fn pub_len(&self) -> usize {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `priv_len`
[INFO] [stderr]   --> src/sodium_wrapper.rs:52:5
[INFO] [stderr]    |
[INFO] [stderr] 52 |     fn priv_len(&self) -> usize {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `set`
[INFO] [stderr]   --> src/sodium_wrapper.rs:56:5
[INFO] [stderr]    |
[INFO] [stderr] 56 |     fn set(&mut self, privkey: &[u8]) {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `generate`
[INFO] [stderr]   --> src/sodium_wrapper.rs:62:5
[INFO] [stderr]    |
[INFO] [stderr] 62 |     fn generate(&mut self, rng: &mut Random) {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `pubkey`
[INFO] [stderr]   --> src/sodium_wrapper.rs:73:5
[INFO] [stderr]    |
[INFO] [stderr] 73 |     fn pubkey(&self) -> &[u8] {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `privkey`
[INFO] [stderr]   --> src/sodium_wrapper.rs:77:5
[INFO] [stderr]    |
[INFO] [stderr] 77 |     fn privkey(&self) -> &[u8] {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `dh`
[INFO] [stderr]   --> src/sodium_wrapper.rs:81:5
[INFO] [stderr]    |
[INFO] [stderr] 81 |     fn dh(&self, pubkey: &[u8], out: &mut [u8]) {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> src/noise_main.rs:271:9
[INFO] [stderr]     |
[INFO] [stderr] 271 |         core.run(stream);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> src/noise_main.rs:285:17
[INFO] [stderr]     |
[INFO] [stderr] 285 |                 sender.send(());
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: unused `#[macro_use]` import
[INFO] [stderr]  --> src/lib.rs:5:1
[INFO] [stderr]   |
[INFO] [stderr] 5 | #[macro_use]
[INFO] [stderr]   | ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused `#[macro_use]` import
[INFO] [stderr]   --> src/lib.rs:16:1
[INFO] [stderr]    |
[INFO] [stderr] 16 | #[macro_use]
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::future::Future`
[INFO] [stderr]   --> src/lib.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 24 | use futures::future::Future;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::Sink`
[INFO] [stderr]   --> src/lib.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | use futures::Sink;
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::Stream`
[INFO] [stderr]   --> src/lib.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 | use futures::Stream;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::NoiseBuilder`
[INFO] [stderr]   --> src/lib.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | use snow::NoiseBuilder;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::params::NoiseParams`
[INFO] [stderr]   --> src/lib.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 | use snow::params::NoiseParams;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::error::Error as StdError`
[INFO] [stderr]   --> src/lib.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | use std::error::Error as StdError;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io`
[INFO] [stderr]   --> src/lib.rs:30:5
[INFO] [stderr]    |
[INFO] [stderr] 30 | use std::io;
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio_core::net::TcpStream`
[INFO] [stderr]   --> src/lib.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 | use tokio_core::net::TcpStream;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio_io::AsyncRead`
[INFO] [stderr]   --> src/lib.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 | use tokio_io::AsyncRead;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::SystemTime`
[INFO] [stderr]   --> src/lib.rs:33:5
[INFO] [stderr]    |
[INFO] [stderr] 33 | use std::time::SystemTime;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `noise_codec::MessagesCodec`
[INFO] [stderr]   --> src/lib.rs:34:5
[INFO] [stderr]    |
[INFO] [stderr] 34 | use noise_codec::MessagesCodec;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::executor::current_thread`
[INFO] [stderr]   --> src/lib.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 35 | use tokio::executor::current_thread;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio_io::codec::Framed`
[INFO] [stderr]   --> src/lib.rs:36:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | use tokio_io::codec::Framed;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/noise_main.rs:25:32
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub type HandshakeResult = Box<Future<Item=Framed<TcpStream, MessagesCodec>, Error=io::Error>>;
[INFO] [stderr]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=Framed<TcpStream, MessagesCodec>, Error=io::Error>`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/noise_main.rs:83:37
[INFO] [stderr]    |
[INFO] [stderr] 83 | pub fn read(sock: TcpStream) -> Box<Future<Item=(TcpStream, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(TcpStream, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/noise_main.rs:95:10
[INFO] [stderr]    |
[INFO] [stderr] 95 | ) -> Box<Future<Item=(TcpStream, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(TcpStream, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/noise_main.rs:105:10
[INFO] [stderr]     |
[INFO] [stderr] 105 | ) -> Box<Future<Item=(usize, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(usize, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/noise_main.rs:112:10
[INFO] [stderr]     |
[INFO] [stderr] 112 | ) -> Box<Future<Item=(usize, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(usize, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ByteOrder`, `LittleEndian`
[INFO] [stderr]    --> src/noise_main.rs:118:21
[INFO] [stderr]     |
[INFO] [stderr] 118 |     use byteorder::{ByteOrder, LittleEndian};
[INFO] [stderr]     |                     ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `noise_main::write_handshake_msg`
[INFO] [stderr]    --> src/noise_main.rs:127:9
[INFO] [stderr]     |
[INFO] [stderr] 127 |     use noise_main::write_handshake_msg;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::NoiseBuilder`
[INFO] [stderr]    --> src/noise_main.rs:128:9
[INFO] [stderr]     |
[INFO] [stderr] 128 |     use snow::NoiseBuilder;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::params::NoiseParams`
[INFO] [stderr]    --> src/noise_main.rs:129:9
[INFO] [stderr]     |
[INFO] [stderr] 129 |     use snow::params::NoiseParams;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::Session`
[INFO] [stderr]    --> src/noise_main.rs:130:9
[INFO] [stderr]     |
[INFO] [stderr] 130 |     use snow::Session;
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Read`, `Write`
[INFO] [stderr]    --> src/noise_main.rs:132:19
[INFO] [stderr]     |
[INFO] [stderr] 132 |     use std::io::{Read, Write};
[INFO] [stderr]     |                   ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TcpListener as StdTcpListener`, `TcpStream as StdTcpStream`
[INFO] [stderr]    --> src/noise_main.rs:134:20
[INFO] [stderr]     |
[INFO] [stderr] 134 |     use std::net::{TcpListener as StdTcpListener, TcpStream as StdTcpStream};
[INFO] [stderr]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ToSocketAddrs`
[INFO] [stderr]    --> src/noise_main.rs:135:32
[INFO] [stderr]     |
[INFO] [stderr] 135 |     use std::net::{SocketAddr, ToSocketAddrs};
[INFO] [stderr]     |                                ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]    --> src/noise_main.rs:136:9
[INFO] [stderr]     |
[INFO] [stderr] 136 |     use std::sync::Arc;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `wrapper::NoiseError`
[INFO] [stderr]    --> src/noise_main.rs:142:9
[INFO] [stderr]     |
[INFO] [stderr] 142 |     use wrapper::NoiseError;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio`
[INFO] [stderr]    --> src/noise_main.rs:147:9
[INFO] [stderr]     |
[INFO] [stderr] 147 |     use tokio;
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Mutex`
[INFO] [stderr]    --> src/noise_main.rs:148:9
[INFO] [stderr]     |
[INFO] [stderr] 148 |     use std::sync::Mutex;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]    --> src/noise_main.rs:150:9
[INFO] [stderr]     |
[INFO] [stderr] 150 |     use std::time::Duration;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/noise_main.rs:377:14
[INFO] [stderr]     |
[INFO] [stderr] 377 |     ) -> Box<Future<Item=(usize, Vec<u8>), Error=io::Error>> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Future<Item=(usize, Vec<u8>), Error=io::Error>`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BigEndian`
[INFO] [stderr]  --> src/noise_codec.rs:1:17
[INFO] [stderr]   |
[INFO] [stderr] 1 | use byteorder::{BigEndian,LittleEndian, ByteOrder};
[INFO] [stderr]   |                 ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `snow::Session`
[INFO] [stderr]  --> src/noise_codec.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use snow::Session;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sodiumoxide::crypto::aead::chacha20poly1305 as sodium_chacha20poly1305`
[INFO] [stderr]  --> src/sodium_wrapper.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use sodiumoxide::crypto::aead::chacha20poly1305 as sodium_chacha20poly1305;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sodiumoxide::crypto::hash::sha256 as sodium_sha256`
[INFO] [stderr]  --> src/sodium_wrapper.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use sodiumoxide::crypto::hash::sha256 as sodium_sha256;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/sodium_wrapper.rs:62:38
[INFO] [stderr]    |
[INFO] [stderr] 62 |     fn generate(&mut self, rng: &mut Random) {
[INFO] [stderr]    |                                      ^^^^^^ help: use `dyn`: `dyn Random`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::os::raw::c_uchar`
[INFO] [stderr]   --> src/sodium_wrapper.rs:99:9
[INFO] [stderr]    |
[INFO] [stderr] 99 |     use std::os::raw::c_uchar;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::os::raw::c_int`
[INFO] [stderr]    --> src/sodium_wrapper.rs:100:9
[INFO] [stderr]     |
[INFO] [stderr] 100 |     use std::os::raw::c_int;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio::executor::current_thread': use tokio-current-thread crate or functions in tokio::runtime::current_thread instead
[INFO] [stderr]   --> src/lib.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 35 | use tokio::executor::current_thread;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec
[INFO] [stderr]   --> src/lib.rs:36:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | use tokio_io::codec::Framed;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec
[INFO] [stderr]   --> src/noise_main.rs:20:27
[INFO] [stderr]    |
[INFO] [stderr] 20 | use tokio_io::{AsyncRead, codec::Framed, io::{read_exact, write_all}};
[INFO] [stderr]    |                           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec
[INFO] [stderr]   --> src/noise_main.rs:25:44
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub type HandshakeResult = Box<Future<Item=Framed<TcpStream, MessagesCodec>, Error=io::Error>>;
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead
[INFO] [stderr]   --> src/noise_main.rs:52:45
[INFO] [stderr]    |
[INFO] [stderr] 52 |                         let framed = stream.framed(MessagesCodec::new(noise));
[INFO] [stderr]    |                                             ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead
[INFO] [stderr]   --> src/noise_main.rs:74:49
[INFO] [stderr]    |
[INFO] [stderr] 74 | ...                   let framed = stream.framed(MessagesCodec::new(noise));
[INFO] [stderr]    |                                           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `stream`
[INFO] [stderr]   --> tests/client_server.rs:21:26
[INFO] [stderr]    |
[INFO] [stderr] 21 |         .for_each(move |(stream, _)| {
[INFO] [stderr]    |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]   --> tests/client_server.rs:25:19
[INFO] [stderr]    |
[INFO] [stderr] 25 |         .map_err(|e| {
[INFO] [stderr]    |                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `res`
[INFO] [stderr]   --> tests/client_server.rs:36:9
[INFO] [stderr]    |
[INFO] [stderr] 36 |     let res =  core.run(rx_done.then(|_| Ok::<_, ()>(())));
[INFO] [stderr]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead
[INFO] [stderr]    --> src/noise_main.rs:343:53
[INFO] [stderr]     |
[INFO] [stderr] 343 | ...                   let framed = stream.framed(MessagesCodec::new(noise));
[INFO] [stderr]     |                                           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead
[INFO] [stderr]    --> src/noise_main.rs:364:49
[INFO] [stderr]     |
[INFO] [stderr] 364 | ...                   let framed = stream.framed(MessagesCodec::new(noise));
[INFO] [stderr]     |                                           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string()
[INFO] [stderr]    --> src/noise_main.rs:397:59
[INFO] [stderr]     |
[INFO] [stderr] 397 |         other_error(&format!("An error occurred, {}", err.description()))
[INFO] [stderr]     |                                                           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated item 'rand::Rng::gen_iter': use Rng::sample_iter(&Standard) instead
[INFO] [stderr]   --> src/sodium_wrapper.rs:22:43
[INFO] [stderr]    |
[INFO] [stderr] 22 |         let bytes: Vec<u8> = thread_rng().gen_iter::<u8>().take(out.len()).collect();
[INFO] [stderr]    |                                           ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures::Sink`
[INFO] [stderr]    --> src/noise_main.rs:146:9
[INFO] [stderr]     |
[INFO] [stderr] 146 |     use futures::Sink;
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `params`
[INFO] [stderr]    --> src/wrapper.rs:169:22
[INFO] [stderr]     |
[INFO] [stderr] 169 |     fn noise_builder(params: &HandshakeParams) -> NoiseBuilder {
[INFO] [stderr]     |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `max_message_len`
[INFO] [stderr]   --> src/noise_main.rs:41:9
[INFO] [stderr]    |
[INFO] [stderr] 41 |     let max_message_len = params.max_message_len;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_message_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `max_message_len`
[INFO] [stderr]   --> src/noise_main.rs:62:9
[INFO] [stderr]    |
[INFO] [stderr] 62 |     let max_message_len = params.max_message_len;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_message_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `framed`
[INFO] [stderr]    --> src/noise_main.rs:292:50
[INFO] [stderr]     |
[INFO] [stderr] 292 |                 let reader = handshake.and_then(|framed| {
[INFO] [stderr]     |                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_framed`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `max_message_len`
[INFO] [stderr]    --> src/noise_main.rs:330:13
[INFO] [stderr]     |
[INFO] [stderr] 330 |         let max_message_len = params.max_message_len;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_message_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `max_message_len`
[INFO] [stderr]    --> src/noise_main.rs:353:13
[INFO] [stderr]     |
[INFO] [stderr] 353 |         let max_message_len = params.max_message_len;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_message_len`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `receiver`
[INFO] [stderr]    --> src/noise_main.rs:168:22
[INFO] [stderr]     |
[INFO] [stderr] 168 |         let (sender, receiver) = mpsc::channel();
[INFO] [stderr]     |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `stream`
[INFO] [stderr]    --> src/noise_main.rs:196:30
[INFO] [stderr]     |
[INFO] [stderr] 196 |             .for_each(move |(stream, _)| {
[INFO] [stderr]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `params`
[INFO] [stderr]    --> src/noise_main.rs:183:13
[INFO] [stderr]     |
[INFO] [stderr] 183 |         let params = HandshakeParams {
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `res`
[INFO] [stderr]    --> src/noise_main.rs:204:13
[INFO] [stderr]     |
[INFO] [stderr] 204 |         let res =  core.run(stream);
[INFO] [stderr]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `receiver`
[INFO] [stderr]    --> src/noise_main.rs:212:22
[INFO] [stderr]     |
[INFO] [stderr] 212 |         let (sender, receiver) = mpsc::channel();
[INFO] [stderr]     |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `chunk`
[INFO] [stderr]   --> src/noise_codec.rs:61:53
[INFO] [stderr]    |
[INFO] [stderr] 61 |         msg.as_bytes().chunks(65535 - 16).for_each(|chunk| {
[INFO] [stderr]    |                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `secret_key_i`
[INFO] [stderr]    --> src/sodium_wrapper.rs:147:28
[INFO] [stderr]     |
[INFO] [stderr] 147 |         let (public_key_i, secret_key_i) = (dh_cloned_i.pubkey(), dh_cloned_i.privkey());
[INFO] [stderr]     |                            ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret_key_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `secret_key_r`
[INFO] [stderr]    --> src/sodium_wrapper.rs:153:28
[INFO] [stderr]     |
[INFO] [stderr] 153 |         let (public_key_r, secret_key_r) = (dh_cloned_r.pubkey(), dh_cloned_r.privkey());
[INFO] [stderr]     |                            ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret_key_r`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `public_key_i`
[INFO] [stderr]    --> src/sodium_wrapper.rs:210:14
[INFO] [stderr]     |
[INFO] [stderr] 210 |         let (public_key_i, secret_key_i) = convert_keys_to_curve25519(public_key_i, secret_key_i);
[INFO] [stderr]     |              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_public_key_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `h_i`
[INFO] [stderr]    --> src/sodium_wrapper.rs:238:13
[INFO] [stderr]     |
[INFO] [stderr] 238 |         let h_i = h_i.into_transport_mode().unwrap();
[INFO] [stderr]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_h_i`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/noise_codec.rs:41:17
[INFO] [stderr]    |
[INFO] [stderr] 41 |             let mut read_to = vec![0u8; chunk.len()];
[INFO] [stderr]    |                 ----^^^^^^^
[INFO] [stderr]    |                 |
[INFO] [stderr]    |                 help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/noise_codec.rs:38:13
[INFO] [stderr]    |
[INFO] [stderr] 38 |         let mut readed_len = 0usize;
[INFO] [stderr]    |             ----^^^^^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/noise_codec.rs:62:17
[INFO] [stderr]    |
[INFO] [stderr] 62 |             let mut tmp_buf = vec![0u8; 65535];
[INFO] [stderr]    |                 ----^^^^^^^
[INFO] [stderr]    |                 |
[INFO] [stderr]    |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/noise_codec.rs:57:13
[INFO] [stderr]    |
[INFO] [stderr] 57 |         let mut len = 0usize;
[INFO] [stderr]    |             ----^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `name`
[INFO] [stderr]   --> src/sodium_wrapper.rs:44:5
[INFO] [stderr]    |
[INFO] [stderr] 44 |     fn name(&self) -> &'static str {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `pub_len`
[INFO] [stderr]   --> src/sodium_wrapper.rs:48:5
[INFO] [stderr]    |
[INFO] [stderr] 48 |     fn pub_len(&self) -> usize {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method is never used: `priv_len`
[INFO] [stderr]   --> src/sodium_wrapper.rs:52:5
[INFO] [stderr]    |
[INFO] [stderr] 52 |     fn priv_len(&self) -> usize {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant item is never used: `crypto_sign_ed25519_SECRETKEYBYTES`
[INFO] [stderr]    --> src/sodium_wrapper.rs:105:5
[INFO] [stderr]     |
[INFO] [stderr] 105 |     pub const crypto_sign_ed25519_SECRETKEYBYTES: usize = 64;
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> src/noise_main.rs:171:13
[INFO] [stderr]     |
[INFO] [stderr] 171 |             run_handshake_listener(&addr2, HandshakeStep::Normal, sender.clone());
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> src/noise_main.rs:271:9
[INFO] [stderr]     |
[INFO] [stderr] 271 |         core.run(stream);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]    --> src/noise_main.rs:285:17
[INFO] [stderr]     |
[INFO] [stderr] 285 |                 sender.send(());
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: constant `crypto_sign_ed25519_PUBLICKEYBYTES` should have an upper case name
[INFO] [stderr]    --> src/sodium_wrapper.rs:104:15
[INFO] [stderr]     |
[INFO] [stderr] 104 |     pub const crypto_sign_ed25519_PUBLICKEYBYTES: usize = 32;
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `CRYPTO_SIGN_ED25519_PUBLICKEYBYTES`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `crypto_sign_ed25519_SECRETKEYBYTES` should have an upper case name
[INFO] [stderr]    --> src/sodium_wrapper.rs:105:15
[INFO] [stderr]     |
[INFO] [stderr] 105 |     pub const crypto_sign_ed25519_SECRETKEYBYTES: usize = 64;
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `CRYPTO_SIGN_ED25519_SECRETKEYBYTES`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sock`
[INFO] [stderr]   --> src/bin/main.rs:39:20
[INFO] [stderr]    |
[INFO] [stderr] 39 |         .for_each(|sock| {
[INFO] [stderr]    |                    ^^^^ help: if this is intentional, prefix it with an underscore: `_sock`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sock`
[INFO] [stderr]   --> src/bin/main.rs:56:20
[INFO] [stderr]    |
[INFO] [stderr] 56 |         .and_then(|sock| {
[INFO] [stderr]    |                    ^^^^ help: if this is intentional, prefix it with an underscore: `_sock`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sock`
[INFO] [stderr]   --> src/bin/main.rs:39:20
[INFO] [stderr]    |
[INFO] [stderr] 39 |         .for_each(|sock| {
[INFO] [stderr]    |                    ^^^^ help: if this is intentional, prefix it with an underscore: `_sock`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sock`
[INFO] [stderr]   --> src/bin/main.rs:56:20
[INFO] [stderr]    |
[INFO] [stderr] 56 |         .and_then(|sock| {
[INFO] [stderr]    |                    ^^^^ help: if this is intentional, prefix it with an underscore: `_sock`
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `BufMut`, `BytesMut`
[INFO] [stderr]  --> tests/tests.rs:7:13
[INFO] [stderr]   |
[INFO] [stderr] 7 | use bytes::{BufMut, BytesMut};
[INFO] [stderr]   |             ^^^^^^  ^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `noise::noise_codec::MessagesCodec`
[INFO] [stderr]  --> tests/tests.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use noise::noise_codec::MessagesCodec;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Decoder`, `Encoder`
[INFO] [stderr]   --> tests/tests.rs:13:23
[INFO] [stderr]    |
[INFO] [stderr] 13 | use tokio_io::codec::{Decoder, Encoder};
[INFO] [stderr]    |                       ^^^^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> tests/tests.rs:83:41
[INFO] [stderr]    |
[INFO] [stderr] 83 |     fn resolve_rng(&self) -> Option<Box<Random>> {
[INFO] [stderr]    |                                         ^^^^^^ help: use `dyn`: `dyn Random`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> tests/tests.rs:87:59
[INFO] [stderr]    |
[INFO] [stderr] 87 |     fn resolve_dh(&self, choice: &DHChoice) -> Option<Box<Dh>> {
[INFO] [stderr]    |                                                           ^^ help: use `dyn`: `dyn Dh`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> tests/tests.rs:94:63
[INFO] [stderr]    |
[INFO] [stderr] 94 |     fn resolve_hash(&self, choice: &HashChoice) -> Option<Box<Hash>> {
[INFO] [stderr]    |                                                               ^^^^ help: use `dyn`: `dyn Hash`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> tests/tests.rs:98:67
[INFO] [stderr]    |
[INFO] [stderr] 98 |     fn resolve_cipher(&self, choice: &CipherChoice) -> Option<Box<Cipher>> {
[INFO] [stderr]    |                                                                   ^^^^^^ help: use `dyn`: `dyn Cipher`
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> tests/tests.rs:132:38
[INFO] [stderr]     |
[INFO] [stderr] 132 |     fn generate(&mut self, rng: &mut Random) {
[INFO] [stderr]     |                                      ^^^^^^ help: use `dyn`: `dyn Random`
[INFO] [stderr] 
[INFO] [stderr] error[E0053]: method `resolve_rng` has an incompatible type for trait
[INFO] [stderr]   --> tests/tests.rs:83:5
[INFO] [stderr]    |
[INFO] [stderr] 83 |     fn resolve_rng(&self) -> Option<Box<Random>> {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait `snow::types::Random + std::marker::Send`, found trait `snow::types::Random`
[INFO] [stderr]    |
[INFO] [stderr]    = note: expected fn pointer `fn(&TestResolver) -> std::option::Option<std::boxed::Box<(dyn snow::types::Random + std::marker::Send + 'static)>>`
[INFO] [stderr]               found fn pointer `fn(&TestResolver) -> std::option::Option<std::boxed::Box<(dyn snow::types::Random + 'static)>>`
[INFO] [stderr] 
[INFO] [stderr] error[E0053]: method `resolve_dh` has an incompatible type for trait
[INFO] [stderr]   --> tests/tests.rs:87:5
[INFO] [stderr]    |
[INFO] [stderr] 87 |     fn resolve_dh(&self, choice: &DHChoice) -> Option<Box<Dh>> {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait `snow::types::Dh + std::marker::Send`, found trait `snow::types::Dh`
[INFO] [stderr]    |
[INFO] [stderr]    = note: expected fn pointer `fn(&TestResolver, &snow::params::DHChoice) -> std::option::Option<std::boxed::Box<(dyn snow::types::Dh + std::marker::Send + 'static)>>`
[INFO] [stderr]               found fn pointer `fn(&TestResolver, &snow::params::DHChoice) -> std::option::Option<std::boxed::Box<(dyn snow::types::Dh + 'static)>>`
[INFO] [stderr] 
[INFO] [stderr] error[E0053]: method `resolve_hash` has an incompatible type for trait
[INFO] [stderr]   --> tests/tests.rs:94:5
[INFO] [stderr]    |
[INFO] [stderr] 94 |     fn resolve_hash(&self, choice: &HashChoice) -> Option<Box<Hash>> {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait `snow::types::Hash + std::marker::Send`, found trait `snow::types::Hash`
[INFO] [stderr]    |
[INFO] [stderr]    = note: expected fn pointer `fn(&TestResolver, &snow::params::HashChoice) -> std::option::Option<std::boxed::Box<(dyn snow::types::Hash + std::marker::Send + 'static)>>`
[INFO] [stderr]               found fn pointer `fn(&TestResolver, &snow::params::HashChoice) -> std::option::Option<std::boxed::Box<(dyn snow::types::Hash + 'static)>>`
[INFO] [stderr] 
[INFO] [stderr] error[E0053]: method `resolve_cipher` has an incompatible type for trait
[INFO] [stderr]   --> tests/tests.rs:98:5
[INFO] [stderr]    |
[INFO] [stderr] 98 |     fn resolve_cipher(&self, choice: &CipherChoice) -> Option<Box<Cipher>> {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait `snow::types::Cipher + std::marker::Send`, found trait `snow::types::Cipher`
[INFO] [stderr]    |
[INFO] [stderr]    = note: expected fn pointer `fn(&TestResolver, &snow::params::CipherChoice) -> std::option::Option<std::boxed::Box<(dyn snow::types::Cipher + std::marker::Send + 'static)>>`
[INFO] [stderr]               found fn pointer `fn(&TestResolver, &snow::params::CipherChoice) -> std::option::Option<std::boxed::Box<(dyn snow::types::Cipher + 'static)>>`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> tests/tests.rs:84:9
[INFO] [stderr]    |
[INFO] [stderr] 83 |     fn resolve_rng(&self) -> Option<Box<Random>> {
[INFO] [stderr]    |                              ------------------- expected `std::option::Option<std::boxed::Box<(dyn snow::types::Random + 'static)>>` because of return type
[INFO] [stderr] 84 |         self.parent.resolve_rng()
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait `snow::types::Random`, found trait `snow::types::Random + std::marker::Send`
[INFO] [stderr]    |
[INFO] [stderr]    = note: expected enum `std::option::Option<std::boxed::Box<(dyn snow::types::Random + 'static)>>`
[INFO] [stderr]               found enum `std::option::Option<std::boxed::Box<(dyn snow::types::Random + std::marker::Send + 'static)>>`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> tests/tests.rs:95:9
[INFO] [stderr]    |
[INFO] [stderr] 94 |     fn resolve_hash(&self, choice: &HashChoice) -> Option<Box<Hash>> {
[INFO] [stderr]    |                                                    ----------------- expected `std::option::Option<std::boxed::Box<(dyn snow::types::Hash + 'static)>>` because of return type
[INFO] [stderr] 95 |         self.parent.resolve_hash(choice)
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait `snow::types::Hash`, found trait `snow::types::Hash + std::marker::Send`
[INFO] [stderr]    |
[INFO] [stderr]    = note: expected enum `std::option::Option<std::boxed::Box<(dyn snow::types::Hash + 'static)>>`
[INFO] [stderr]               found enum `std::option::Option<std::boxed::Box<(dyn snow::types::Hash + std::marker::Send + 'static)>>`
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> tests/tests.rs:99:9
[INFO] [stderr]    |
[INFO] [stderr] 98 |     fn resolve_cipher(&self, choice: &CipherChoice) -> Option<Box<Cipher>> {
[INFO] [stderr]    |                                                        ------------------- expected `std::option::Option<std::boxed::Box<(dyn snow::types::Cipher + 'static)>>` because of return type
[INFO] [stderr] 99 |         self.parent.resolve_cipher(choice)
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait `snow::types::Cipher`, found trait `snow::types::Cipher + std::marker::Send`
[INFO] [stderr]    |
[INFO] [stderr]    = note: expected enum `std::option::Option<std::boxed::Box<(dyn snow::types::Cipher + 'static)>>`
[INFO] [stderr]               found enum `std::option::Option<std::boxed::Box<(dyn snow::types::Cipher + std::marker::Send + 'static)>>`
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 7 previous errors
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0053, E0308.
[INFO] [stderr] For more information about an error, try `rustc --explain E0053`.
[INFO] [stderr] error: could not compile `noise`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `"docker" "inspect" "c997c0d13890c405a448ee679cb03b8c85e03e21155eb48a77bd6f56829d6085"`
[INFO] running `"docker" "rm" "-f" "c997c0d13890c405a448ee679cb03b8c85e03e21155eb48a77bd6f56829d6085"`
[INFO] [stdout] c997c0d13890c405a448ee679cb03b8c85e03e21155eb48a77bd6f56829d6085
