[INFO] fetching crate bip_metainfo 0.12.0...
[INFO] testing bip_metainfo-0.12.0 against 1.90.0 for beta-1.91-3
[INFO] extracting crate bip_metainfo 0.12.0 into /workspace/builds/worker-0-tc1/source
[INFO] started tweaking crates.io crate bip_metainfo 0.12.0
[INFO] finished tweaking crates.io crate bip_metainfo 0.12.0
[INFO] tweaked toml for crates.io crate bip_metainfo 0.12.0 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate bip_metainfo 0.12.0 on toolchain 1.90.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 72 packages to latest compatible versions
[INFO] [stderr]       Adding crossbeam v0.3.2 (available: v0.8.4)
[INFO] [stderr]       Adding error-chain v0.11.0 (available: v0.12.4)
[INFO] [stderr]       Adding rand v0.3.23 (available: v0.9.2)
[INFO] [stderr]       Adding wasi v0.10.0+wasi-snapshot-preview1 (available: v0.10.2+wasi-snapshot-preview1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: `panic` setting is ignored for `bench` profile
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded pbr v1.1.1
[INFO] [stderr]   Downloaded bip_bencode v0.4.4
[INFO] [stderr]   Downloaded error-chain v0.11.0
[INFO] [stderr]   Downloaded bip_util v0.5.0
[INFO] [stderr]   Downloaded crossbeam v0.3.2
[INFO] [stderr]   Downloaded chrono v0.2.25
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 70597ace68f549e0bc64861b9fe66207ea2042796b6bd1505c1c81e58d7a1902
[INFO] running `Command { std: "docker" "start" "-a" "70597ace68f549e0bc64861b9fe66207ea2042796b6bd1505c1c81e58d7a1902", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "70597ace68f549e0bc64861b9fe66207ea2042796b6bd1505c1c81e58d7a1902", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "70597ace68f549e0bc64861b9fe66207ea2042796b6bd1505c1c81e58d7a1902", kill_on_drop: false }`
[INFO] [stdout] 70597ace68f549e0bc64861b9fe66207ea2042796b6bd1505c1c81e58d7a1902
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2cc3d53e6968f6cf1226e513dc8b7cd192160ab201ce7c203410a1abfea1cfff
[INFO] running `Command { std: "docker" "start" "-a" "2cc3d53e6968f6cf1226e513dc8b7cd192160ab201ce7c203410a1abfea1cfff", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: `panic` setting is ignored for `bench` profile
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustc-serialize v0.3.25
[INFO] [stderr]    Compiling num-bigint v0.1.45
[INFO] [stderr]    Compiling num-complex v0.1.44
[INFO] [stderr]    Compiling num-rational v0.1.43
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling gcc v0.3.55
[INFO] [stderr]    Compiling gimli v0.32.3
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling rustc-demangle v0.1.26
[INFO] [stderr]    Compiling rust-crypto v0.2.36
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling crossbeam v0.3.2
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling rand v0.4.6
[INFO] [stderr]    Compiling time v0.1.45
[INFO] [stderr]    Compiling rand v0.3.23
[INFO] [stderr]    Compiling addr2line v0.25.1
[INFO] [stderr]    Compiling num v0.1.43
[INFO] [stderr]    Compiling chrono v0.2.25
[INFO] [stderr]    Compiling bip_util v0.5.0
[INFO] [stderr]    Compiling backtrace v0.3.76
[INFO] [stderr]    Compiling error-chain v0.11.0
[INFO] [stderr]    Compiling bip_bencode v0.4.4
[INFO] [stderr]    Compiling bip_metainfo v0.12.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/accessor.rs:80:29
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let absolute_path = try!(path.as_ref().canonicalize());
[INFO] [stdout]    |                             ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:129:25
[INFO] [stdout]     |
[INFO] [stdout] 129 |             let entry = try!(res_entry);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:130:34
[INFO] [stdout]     |
[INFO] [stdout] 130 |             let entry_metadata = try!(entry.metadata());
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |             try!(callback(PieceAccess::Compute(&mut file)));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:150:25
[INFO] [stdout]     |
[INFO] [stdout] 150 |             let entry = try!(res_entry);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:151:28
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let mut file = try!(File::open(entry.path()));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/builder/buffer.rs:66:30
[INFO] [stdout]    |
[INFO] [stdout] 66 |         let new_bytes_read = try!(callback(&mut self.buffer[self.bytes_read..]));
[INFO] [stdout]    |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/builder/worker.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     try!(accessor.access_pieces(|piece_access| {
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/worker.rs:103:25
[INFO] [stdout]     |
[INFO] [stdout] 103 |                         try!(curr_piece_buffer.write_bytes(|buffer| piece_region.read(buffer))) == 0;
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:136:24
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let accessor = try!(accessor.into_accessor());
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:185:24
[INFO] [stdout]     |
[INFO] [stdout] 185 |         let accessor = try!(accessor.into_accessor());
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |         try!(accessor.access_metadata(|len, path| {
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:219:27
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let pieces_list = try!(worker::start_hasher_workers(&accessor,
[INFO] [stdout]     |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/metainfo.rs:91:24
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let root_bencode = try!(BencodeRef::decode(bytes, BDecodeOpt::default()));
[INFO] [stdout]    |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/metainfo.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let root_dict = try!(parse::parse_root_dict(&root_bencode));
[INFO] [stdout]    |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:100:24
[INFO] [stdout]     |
[INFO] [stdout] 100 |     let info_bencode = try!(parse::parse_info_bencode(root_dict));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:101:16
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let info = try!(parse_info_dictionary(info_bencode));
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:224:13
[INFO] [stdout]     |
[INFO] [stdout] 224 |             try!(callback(PieceAccess::PreComputed(ShaHash::from_hash(piece).unwrap())));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:233:24
[INFO] [stdout]     |
[INFO] [stdout] 233 |     let info_bencode = try!(BencodeRef::decode(bytes, BDecodeOpt::default()));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:242:21
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let info_dict = try!(parse::parse_root_dict(info_bencode));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:243:21
[INFO] [stdout]     |
[INFO] [stdout] 243 |     let piece_len = try!(parse::parse_piece_length(info_dict));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:246:18
[INFO] [stdout]     |
[INFO] [stdout] 246 |     let pieces = try!(parse::parse_pieces(info_dict));
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:247:25
[INFO] [stdout]     |
[INFO] [stdout] 247 |     let piece_buffers = try!(allocate_pieces(pieces));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:250:30
[INFO] [stdout]     |
[INFO] [stdout] 250 |         let file_directory = try!(parse::parse_name(info_dict));
[INFO] [stdout]     |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:254:29
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let files_bencode = try!(parse::parse_files_list(info_dict));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:258:29
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let file_dict = try!(parse::parse_file_dict(file_bencode));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:259:24
[INFO] [stdout]     |
[INFO] [stdout] 259 |             let file = try!(File::as_multi_file(file_dict));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:273:20
[INFO] [stdout]     |
[INFO] [stdout] 273 |         let file = try!(File::as_single_file(info_dict));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:327:22
[INFO] [stdout]     |
[INFO] [stdout] 327 |         let length = try!(parse::parse_length(info_dict));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:329:20
[INFO] [stdout]     |
[INFO] [stdout] 329 |         let name = try!(parse::parse_name(info_dict));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:341:22
[INFO] [stdout]     |
[INFO] [stdout] 341 |         let length = try!(parse::parse_length(file_dict));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:344:33
[INFO] [stdout]     |
[INFO] [stdout] 344 |         let path_list_bencode = try!(parse::parse_path_list(file_dict));
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:348:24
[INFO] [stdout]     |
[INFO] [stdout] 348 |             let path = try!(parse::parse_path_str(path_bencode));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/error.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | / error_chain! {
[INFO] [stdout]  9 | |     types {
[INFO] [stdout] 10 | |         ParseError, ParseErrorKind, ParseResultEx, ParseResult;
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/accessor.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 |     Compute(&'a mut Read),
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 62 |     Compute(&'a mut dyn Read),
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:287:41
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn is_multi_file_torrent<B>(info_dict: &BDictAccess<B::BKey, B>) -> bool
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn is_multi_file_torrent<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> bool
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:44:61
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn parse_root_dict<B>(root_bencode: &B) -> ParseResult<&BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]    |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn parse_root_dict<B>(root_bencode: &B) -> ParseResult<&dyn BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]    |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:50:49
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn parse_announce_url<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn parse_announce_url<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:56:43
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_creation_date<B>(root_dict: &BDictAccess<B::BKey, B>) -> Option<i64>
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_creation_date<B>(root_dict: &dyn BDictAccess<B::BKey, B>) -> Option<i64>
[INFO] [stdout]    |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:62:44
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn parse_comment<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn parse_comment<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:68:47
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn parse_created_by<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn parse_created_by<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:74:45
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn parse_encoding<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn parse_encoding<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:80:49
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:88:42
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn parse_piece_length<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn parse_piece_length<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:94:43
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn parse_pieces<'a, B>(info_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a [u8]>
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn parse_pieces<'a, B>(info_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&'a [u8]>
[INFO] [stdout]    |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:100:37
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_private<B>(info_dict: &BDictAccess<B::BKey, B>) -> Option<bool>
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_private<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> Option<bool>
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:106:41
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn parse_name<'a, B>(info_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a str>
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn parse_name<'a, B>(info_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&'a str>
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:112:40
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:112:81
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&dyn BListAccess<B>>
[INFO] [stdout]     |                                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:120:61
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub fn parse_file_dict<B>(file_bencode: &B) -> ParseResult<&BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]     |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub fn parse_file_dict<B>(file_bencode: &B) -> ParseResult<&dyn BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]     |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:126:44
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn parse_length<B>(info_or_file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn parse_length<B>(info_or_file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:132:51
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn parse_md5sum<'a, B>(info_or_file_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a [u8]>
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn parse_md5sum<'a, B>(info_or_file_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a [u8]>
[INFO] [stdout]     |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:138:39
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:138:80
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&dyn BListAccess<B>>
[INFO] [stdout]     |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:325:38
[INFO] [stdout]     |
[INFO] [stdout] 325 |     fn as_single_file<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 325 |     fn as_single_file<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:339:37
[INFO] [stdout]     |
[INFO] [stdout] 339 |     fn as_multi_file<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 339 |     fn as_multi_file<B>(file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::cause`: replaced by Error::source, which can support downcasting
[INFO] [stdout]   --> src/error.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | / error_chain! {
[INFO] [stdout]  9 | |     types {
[INFO] [stdout] 10 | |         ParseError, ParseErrorKind, ParseResultEx, ParseResult;
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: eliding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/parse.rs:80:46
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                              ^^ the lifetime is named here              -- the same lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a B>
[INFO] [stdout]    |                                                                                          ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.20s
[INFO] running `Command { std: "docker" "inspect" "2cc3d53e6968f6cf1226e513dc8b7cd192160ab201ce7c203410a1abfea1cfff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2cc3d53e6968f6cf1226e513dc8b7cd192160ab201ce7c203410a1abfea1cfff", kill_on_drop: false }`
[INFO] [stdout] 2cc3d53e6968f6cf1226e513dc8b7cd192160ab201ce7c203410a1abfea1cfff
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] aafdde39e9d0eed0ff4501ee3b3e2dfa7e5da99055bbc9b6483bfa6cd3cafdf1
[INFO] running `Command { std: "docker" "start" "-a" "aafdde39e9d0eed0ff4501ee3b3e2dfa7e5da99055bbc9b6483bfa6cd3cafdf1", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: `panic` setting is ignored for `bench` profile
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/accessor.rs:80:29
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let absolute_path = try!(path.as_ref().canonicalize());
[INFO] [stdout]    |                             ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:129:25
[INFO] [stdout]     |
[INFO] [stdout] 129 |             let entry = try!(res_entry);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:130:34
[INFO] [stdout]     |
[INFO] [stdout] 130 |             let entry_metadata = try!(entry.metadata());
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |             try!(callback(PieceAccess::Compute(&mut file)));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:150:25
[INFO] [stdout]     |
[INFO] [stdout] 150 |             let entry = try!(res_entry);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:151:28
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let mut file = try!(File::open(entry.path()));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/builder/buffer.rs:66:30
[INFO] [stdout]    |
[INFO] [stdout] 66 |         let new_bytes_read = try!(callback(&mut self.buffer[self.bytes_read..]));
[INFO] [stdout]    |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/builder/worker.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     try!(accessor.access_pieces(|piece_access| {
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/worker.rs:103:25
[INFO] [stdout]     |
[INFO] [stdout] 103 |                         try!(curr_piece_buffer.write_bytes(|buffer| piece_region.read(buffer))) == 0;
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:136:24
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let accessor = try!(accessor.into_accessor());
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:185:24
[INFO] [stdout]     |
[INFO] [stdout] 185 |         let accessor = try!(accessor.into_accessor());
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |         try!(accessor.access_metadata(|len, path| {
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:219:27
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let pieces_list = try!(worker::start_hasher_workers(&accessor,
[INFO] [stdout]     |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/metainfo.rs:91:24
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let root_bencode = try!(BencodeRef::decode(bytes, BDecodeOpt::default()));
[INFO] [stdout]    |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/metainfo.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let root_dict = try!(parse::parse_root_dict(&root_bencode));
[INFO] [stdout]    |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:100:24
[INFO] [stdout]     |
[INFO] [stdout] 100 |     let info_bencode = try!(parse::parse_info_bencode(root_dict));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:101:16
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let info = try!(parse_info_dictionary(info_bencode));
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:224:13
[INFO] [stdout]     |
[INFO] [stdout] 224 |             try!(callback(PieceAccess::PreComputed(ShaHash::from_hash(piece).unwrap())));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:233:24
[INFO] [stdout]     |
[INFO] [stdout] 233 |     let info_bencode = try!(BencodeRef::decode(bytes, BDecodeOpt::default()));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:242:21
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let info_dict = try!(parse::parse_root_dict(info_bencode));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:243:21
[INFO] [stdout]     |
[INFO] [stdout] 243 |     let piece_len = try!(parse::parse_piece_length(info_dict));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:246:18
[INFO] [stdout]     |
[INFO] [stdout] 246 |     let pieces = try!(parse::parse_pieces(info_dict));
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:247:25
[INFO] [stdout]     |
[INFO] [stdout] 247 |     let piece_buffers = try!(allocate_pieces(pieces));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:250:30
[INFO] [stdout]     |
[INFO] [stdout] 250 |         let file_directory = try!(parse::parse_name(info_dict));
[INFO] [stdout]     |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:254:29
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let files_bencode = try!(parse::parse_files_list(info_dict));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:258:29
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let file_dict = try!(parse::parse_file_dict(file_bencode));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:259:24
[INFO] [stdout]     |
[INFO] [stdout] 259 |             let file = try!(File::as_multi_file(file_dict));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:273:20
[INFO] [stdout]     |
[INFO] [stdout] 273 |         let file = try!(File::as_single_file(info_dict));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:327:22
[INFO] [stdout]     |
[INFO] [stdout] 327 |         let length = try!(parse::parse_length(info_dict));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:329:20
[INFO] [stdout]     |
[INFO] [stdout] 329 |         let name = try!(parse::parse_name(info_dict));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:341:22
[INFO] [stdout]     |
[INFO] [stdout] 341 |         let length = try!(parse::parse_length(file_dict));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:344:33
[INFO] [stdout]     |
[INFO] [stdout] 344 |         let path_list_bencode = try!(parse::parse_path_list(file_dict));
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:348:24
[INFO] [stdout]     |
[INFO] [stdout] 348 |             let path = try!(parse::parse_path_str(path_bencode));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/error.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | / error_chain! {
[INFO] [stdout]  9 | |     types {
[INFO] [stdout] 10 | |         ParseError, ParseErrorKind, ParseResultEx, ParseResult;
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/accessor.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 |     Compute(&'a mut Read),
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 62 |     Compute(&'a mut dyn Read),
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:287:41
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn is_multi_file_torrent<B>(info_dict: &BDictAccess<B::BKey, B>) -> bool
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn is_multi_file_torrent<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> bool
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:44:61
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn parse_root_dict<B>(root_bencode: &B) -> ParseResult<&BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]    |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn parse_root_dict<B>(root_bencode: &B) -> ParseResult<&dyn BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]    |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:50:49
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn parse_announce_url<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn parse_announce_url<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:56:43
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_creation_date<B>(root_dict: &BDictAccess<B::BKey, B>) -> Option<i64>
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_creation_date<B>(root_dict: &dyn BDictAccess<B::BKey, B>) -> Option<i64>
[INFO] [stdout]    |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:62:44
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn parse_comment<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn parse_comment<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:68:47
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn parse_created_by<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn parse_created_by<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:74:45
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn parse_encoding<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn parse_encoding<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:80:49
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:88:42
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn parse_piece_length<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn parse_piece_length<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:94:43
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn parse_pieces<'a, B>(info_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a [u8]>
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn parse_pieces<'a, B>(info_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&'a [u8]>
[INFO] [stdout]    |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:100:37
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_private<B>(info_dict: &BDictAccess<B::BKey, B>) -> Option<bool>
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_private<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> Option<bool>
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:106:41
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn parse_name<'a, B>(info_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a str>
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn parse_name<'a, B>(info_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&'a str>
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:112:40
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:112:81
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&dyn BListAccess<B>>
[INFO] [stdout]     |                                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:120:61
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub fn parse_file_dict<B>(file_bencode: &B) -> ParseResult<&BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]     |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub fn parse_file_dict<B>(file_bencode: &B) -> ParseResult<&dyn BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]     |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:126:44
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn parse_length<B>(info_or_file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn parse_length<B>(info_or_file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:132:51
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn parse_md5sum<'a, B>(info_or_file_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a [u8]>
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn parse_md5sum<'a, B>(info_or_file_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a [u8]>
[INFO] [stdout]     |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:138:39
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:138:80
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&dyn BListAccess<B>>
[INFO] [stdout]     |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:325:38
[INFO] [stdout]     |
[INFO] [stdout] 325 |     fn as_single_file<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 325 |     fn as_single_file<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:339:37
[INFO] [stdout]     |
[INFO] [stdout] 339 |     fn as_multi_file<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 339 |     fn as_multi_file<B>(file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::cause`: replaced by Error::source, which can support downcasting
[INFO] [stdout]   --> src/error.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | / error_chain! {
[INFO] [stdout]  9 | |     types {
[INFO] [stdout] 10 | |         ParseError, ParseErrorKind, ParseResultEx, ParseResult;
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: eliding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/parse.rs:80:46
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                              ^^ the lifetime is named here              -- the same lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a B>
[INFO] [stdout]    |                                                                                          ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling pbr v1.1.1
[INFO] [stderr]    Compiling bip_metainfo v0.12.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stdout]   --> examples/create_torrent.rs:75:13
[INFO] [stdout]    |
[INFO] [stdout] 75 |         Utc.timestamp(c, 0)
[INFO] [stdout]    |             ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/accessor.rs:80:29
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let absolute_path = try!(path.as_ref().canonicalize());
[INFO] [stdout]    |                             ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:129:25
[INFO] [stdout]     |
[INFO] [stdout] 129 |             let entry = try!(res_entry);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:130:34
[INFO] [stdout]     |
[INFO] [stdout] 130 |             let entry_metadata = try!(entry.metadata());
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |             try!(callback(PieceAccess::Compute(&mut file)));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:150:25
[INFO] [stdout]     |
[INFO] [stdout] 150 |             let entry = try!(res_entry);
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/accessor.rs:151:28
[INFO] [stdout]     |
[INFO] [stdout] 151 |             let mut file = try!(File::open(entry.path()));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/builder/buffer.rs:66:30
[INFO] [stdout]    |
[INFO] [stdout] 66 |         let new_bytes_read = try!(callback(&mut self.buffer[self.bytes_read..]));
[INFO] [stdout]    |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/builder/worker.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     try!(accessor.access_pieces(|piece_access| {
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/worker.rs:103:25
[INFO] [stdout]     |
[INFO] [stdout] 103 |                         try!(curr_piece_buffer.write_bytes(|buffer| piece_region.read(buffer))) == 0;
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/worker.rs:273:17
[INFO] [stdout]     |
[INFO] [stdout] 273 |                 try!(callback(PieceAccess::Compute(&mut next_region)));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:136:24
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let accessor = try!(accessor.into_accessor());
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:185:24
[INFO] [stdout]     |
[INFO] [stdout] 185 |         let accessor = try!(accessor.into_accessor());
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:207:9
[INFO] [stdout]     |
[INFO] [stdout] 207 |         try!(accessor.access_metadata(|len, path| {
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/builder/mod.rs:219:27
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let pieces_list = try!(worker::start_hasher_workers(&accessor,
[INFO] [stdout]     |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/metainfo.rs:91:24
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let root_bencode = try!(BencodeRef::decode(bytes, BDecodeOpt::default()));
[INFO] [stdout]    |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/metainfo.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let root_dict = try!(parse::parse_root_dict(&root_bencode));
[INFO] [stdout]    |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:100:24
[INFO] [stdout]     |
[INFO] [stdout] 100 |     let info_bencode = try!(parse::parse_info_bencode(root_dict));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:101:16
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let info = try!(parse_info_dictionary(info_bencode));
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:224:13
[INFO] [stdout]     |
[INFO] [stdout] 224 |             try!(callback(PieceAccess::PreComputed(ShaHash::from_hash(piece).unwrap())));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:233:24
[INFO] [stdout]     |
[INFO] [stdout] 233 |     let info_bencode = try!(BencodeRef::decode(bytes, BDecodeOpt::default()));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:242:21
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let info_dict = try!(parse::parse_root_dict(info_bencode));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:243:21
[INFO] [stdout]     |
[INFO] [stdout] 243 |     let piece_len = try!(parse::parse_piece_length(info_dict));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:246:18
[INFO] [stdout]     |
[INFO] [stdout] 246 |     let pieces = try!(parse::parse_pieces(info_dict));
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:247:25
[INFO] [stdout]     |
[INFO] [stdout] 247 |     let piece_buffers = try!(allocate_pieces(pieces));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:250:30
[INFO] [stdout]     |
[INFO] [stdout] 250 |         let file_directory = try!(parse::parse_name(info_dict));
[INFO] [stdout]     |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:254:29
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let files_bencode = try!(parse::parse_files_list(info_dict));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:258:29
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let file_dict = try!(parse::parse_file_dict(file_bencode));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:259:24
[INFO] [stdout]     |
[INFO] [stdout] 259 |             let file = try!(File::as_multi_file(file_dict));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:273:20
[INFO] [stdout]     |
[INFO] [stdout] 273 |         let file = try!(File::as_single_file(info_dict));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:327:22
[INFO] [stdout]     |
[INFO] [stdout] 327 |         let length = try!(parse::parse_length(info_dict));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:329:20
[INFO] [stdout]     |
[INFO] [stdout] 329 |         let name = try!(parse::parse_name(info_dict));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:341:22
[INFO] [stdout]     |
[INFO] [stdout] 341 |         let length = try!(parse::parse_length(file_dict));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:344:33
[INFO] [stdout]     |
[INFO] [stdout] 344 |         let path_list_bencode = try!(parse::parse_path_list(file_dict));
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/metainfo.rs:348:24
[INFO] [stdout]     |
[INFO] [stdout] 348 |             let path = try!(parse::parse_path_str(path_bencode));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/error.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | / error_chain! {
[INFO] [stdout]  9 | |     types {
[INFO] [stdout] 10 | |         ParseError, ParseErrorKind, ParseResultEx, ParseResult;
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/accessor.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 |     Compute(&'a mut Read),
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 62 |     Compute(&'a mut dyn Read),
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:287:41
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn is_multi_file_torrent<B>(info_dict: &BDictAccess<B::BKey, B>) -> bool
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn is_multi_file_torrent<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> bool
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:44:61
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn parse_root_dict<B>(root_bencode: &B) -> ParseResult<&BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]    |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn parse_root_dict<B>(root_bencode: &B) -> ParseResult<&dyn BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]    |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:50:49
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn parse_announce_url<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn parse_announce_url<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:56:43
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_creation_date<B>(root_dict: &BDictAccess<B::BKey, B>) -> Option<i64>
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_creation_date<B>(root_dict: &dyn BDictAccess<B::BKey, B>) -> Option<i64>
[INFO] [stdout]    |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:62:44
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn parse_comment<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn parse_comment<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:68:47
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn parse_created_by<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn parse_created_by<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:74:45
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn parse_encoding<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn parse_encoding<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:80:49
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:88:42
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn parse_piece_length<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn parse_piece_length<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/parse.rs:94:43
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn parse_pieces<'a, B>(info_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a [u8]>
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn parse_pieces<'a, B>(info_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&'a [u8]>
[INFO] [stdout]    |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:100:37
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_private<B>(info_dict: &BDictAccess<B::BKey, B>) -> Option<bool>
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn parse_private<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> Option<bool>
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:106:41
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn parse_name<'a, B>(info_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a str>
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn parse_name<'a, B>(info_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&'a str>
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:112:40
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:112:81
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&dyn BListAccess<B>>
[INFO] [stdout]     |                                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:120:61
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub fn parse_file_dict<B>(file_bencode: &B) -> ParseResult<&BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]     |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub fn parse_file_dict<B>(file_bencode: &B) -> ParseResult<&dyn BDictAccess<B::BKey, B::BType>>
[INFO] [stdout]     |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:126:44
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn parse_length<B>(info_or_file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn parse_length<B>(info_or_file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:132:51
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn parse_md5sum<'a, B>(info_or_file_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a [u8]>
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn parse_md5sum<'a, B>(info_or_file_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a [u8]>
[INFO] [stdout]     |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:138:39
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/parse.rs:138:80
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stdout]     |                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&dyn BListAccess<B>>
[INFO] [stdout]     |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:325:38
[INFO] [stdout]     |
[INFO] [stdout] 325 |     fn as_single_file<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 325 |     fn as_single_file<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/metainfo.rs:339:37
[INFO] [stdout]     |
[INFO] [stdout] 339 |     fn as_multi_file<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 339 |     fn as_multi_file<B>(file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::cause`: replaced by Error::source, which can support downcasting
[INFO] [stdout]   --> src/error.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | / error_chain! {
[INFO] [stdout]  9 | |     types {
[INFO] [stdout] 10 | |         ParseError, ParseErrorKind, ParseResultEx, ParseResult;
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]    --> src/builder/worker.rs:352:46
[INFO] [stdout]     |
[INFO] [stdout] 352 |         for &region_length in region_lengths.into_iter() {
[INFO] [stdout]     |                                              ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]     = note: `#[warn(array_into_iter)]` on by default
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]     |
[INFO] [stdout] 352 -         for &region_length in region_lengths.into_iter() {
[INFO] [stdout] 352 +         for &region_length in region_lengths.iter() {
[INFO] [stdout]     |
[INFO] [stdout] help: or remove `.into_iter()` to iterate by value
[INFO] [stdout]     |
[INFO] [stdout] 352 -         for &region_length in region_lengths.into_iter() {
[INFO] [stdout] 352 +         for &region_length in region_lengths {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]    --> src/builder/worker.rs:366:46
[INFO] [stdout]     |
[INFO] [stdout] 366 |         for &region_length in region_lengths.into_iter() {
[INFO] [stdout]     |                                              ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]     |
[INFO] [stdout] 366 -         for &region_length in region_lengths.into_iter() {
[INFO] [stdout] 366 +         for &region_length in region_lengths.iter() {
[INFO] [stdout]     |
[INFO] [stdout] help: or remove `.into_iter()` to iterate by value
[INFO] [stdout]     |
[INFO] [stdout] 366 -         for &region_length in region_lengths.into_iter() {
[INFO] [stdout] 366 +         for &region_length in region_lengths {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]    --> src/builder/worker.rs:381:46
[INFO] [stdout]     |
[INFO] [stdout] 381 |         for &region_length in region_lengths.into_iter() {
[INFO] [stdout]     |                                              ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]     |
[INFO] [stdout] 381 -         for &region_length in region_lengths.into_iter() {
[INFO] [stdout] 381 +         for &region_length in region_lengths.iter() {
[INFO] [stdout]     |
[INFO] [stdout] help: or remove `.into_iter()` to iterate by value
[INFO] [stdout]     |
[INFO] [stdout] 381 -         for &region_length in region_lengths.into_iter() {
[INFO] [stdout] 381 +         for &region_length in region_lengths {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]    --> src/builder/worker.rs:396:46
[INFO] [stdout]     |
[INFO] [stdout] 396 |         for &region_length in region_lengths.into_iter() {
[INFO] [stdout]     |                                              ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]     |
[INFO] [stdout] 396 -         for &region_length in region_lengths.into_iter() {
[INFO] [stdout] 396 +         for &region_length in region_lengths.iter() {
[INFO] [stdout]     |
[INFO] [stdout] help: or remove `.into_iter()` to iterate by value
[INFO] [stdout]     |
[INFO] [stdout] 396 -         for &region_length in region_lengths.into_iter() {
[INFO] [stdout] 396 +         for &region_length in region_lengths {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: eliding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/parse.rs:80:46
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stdout]    |                                              ^^ the lifetime is named here              -- the same lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a B>
[INFO] [stdout]    |                                                                                          ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 6.50s
[INFO] running `Command { std: "docker" "inspect" "aafdde39e9d0eed0ff4501ee3b3e2dfa7e5da99055bbc9b6483bfa6cd3cafdf1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aafdde39e9d0eed0ff4501ee3b3e2dfa7e5da99055bbc9b6483bfa6cd3cafdf1", kill_on_drop: false }`
[INFO] [stdout] aafdde39e9d0eed0ff4501ee3b3e2dfa7e5da99055bbc9b6483bfa6cd3cafdf1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 91038b9bdff95d14744b2973ff04b036c8cd937b914d045e908fd8e641af2015
[INFO] running `Command { std: "docker" "start" "-a" "91038b9bdff95d14744b2973ff04b036c8cd937b914d045e908fd8e641af2015", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: `panic` setting is ignored for `bench` profile
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]   --> src/accessor.rs:80:29
[INFO] [stderr]    |
[INFO] [stderr] 80 |         let absolute_path = try!(path.as_ref().canonicalize());
[INFO] [stderr]    |                             ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/accessor.rs:129:25
[INFO] [stderr]     |
[INFO] [stderr] 129 |             let entry = try!(res_entry);
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/accessor.rs:130:34
[INFO] [stderr]     |
[INFO] [stderr] 130 |             let entry_metadata = try!(entry.metadata());
[INFO] [stderr]     |                                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/accessor.rs:153:13
[INFO] [stderr]     |
[INFO] [stderr] 153 |             try!(callback(PieceAccess::Compute(&mut file)));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/accessor.rs:150:25
[INFO] [stderr]     |
[INFO] [stderr] 150 |             let entry = try!(res_entry);
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/accessor.rs:151:28
[INFO] [stderr]     |
[INFO] [stderr] 151 |             let mut file = try!(File::open(entry.path()));
[INFO] [stderr]     |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]   --> src/builder/buffer.rs:66:30
[INFO] [stderr]    |
[INFO] [stderr] 66 |         let new_bytes_read = try!(callback(&mut self.buffer[self.bytes_read..]));
[INFO] [stderr]    |                              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]   --> src/builder/worker.rs:91:5
[INFO] [stderr]    |
[INFO] [stderr] 91 |     try!(accessor.access_pieces(|piece_access| {
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/builder/worker.rs:103:25
[INFO] [stderr]     |
[INFO] [stderr] 103 |                         try!(curr_piece_buffer.write_bytes(|buffer| piece_region.read(buffer))) == 0;
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/builder/mod.rs:136:24
[INFO] [stderr]     |
[INFO] [stderr] 136 |         let accessor = try!(accessor.into_accessor());
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/builder/mod.rs:185:24
[INFO] [stderr]     |
[INFO] [stderr] 185 |         let accessor = try!(accessor.into_accessor());
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/builder/mod.rs:207:9
[INFO] [stderr]     |
[INFO] [stderr] 207 |         try!(accessor.access_metadata(|len, path| {
[INFO] [stderr]     |         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/builder/mod.rs:219:27
[INFO] [stderr]     |
[INFO] [stderr] 219 |         let pieces_list = try!(worker::start_hasher_workers(&accessor,
[INFO] [stderr]     |                           ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]   --> src/metainfo.rs:91:24
[INFO] [stderr]    |
[INFO] [stderr] 91 |     let root_bencode = try!(BencodeRef::decode(bytes, BDecodeOpt::default()));
[INFO] [stderr]    |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]   --> src/metainfo.rs:92:21
[INFO] [stderr]    |
[INFO] [stderr] 92 |     let root_dict = try!(parse::parse_root_dict(&root_bencode));
[INFO] [stderr]    |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:100:24
[INFO] [stderr]     |
[INFO] [stderr] 100 |     let info_bencode = try!(parse::parse_info_bencode(root_dict));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:101:16
[INFO] [stderr]     |
[INFO] [stderr] 101 |     let info = try!(parse_info_dictionary(info_bencode));
[INFO] [stderr]     |                ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:224:13
[INFO] [stderr]     |
[INFO] [stderr] 224 |             try!(callback(PieceAccess::PreComputed(ShaHash::from_hash(piece).unwrap())));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:233:24
[INFO] [stderr]     |
[INFO] [stderr] 233 |     let info_bencode = try!(BencodeRef::decode(bytes, BDecodeOpt::default()));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:242:21
[INFO] [stderr]     |
[INFO] [stderr] 242 |     let info_dict = try!(parse::parse_root_dict(info_bencode));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:243:21
[INFO] [stderr]     |
[INFO] [stderr] 243 |     let piece_len = try!(parse::parse_piece_length(info_dict));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:246:18
[INFO] [stderr]     |
[INFO] [stderr] 246 |     let pieces = try!(parse::parse_pieces(info_dict));
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:247:25
[INFO] [stderr]     |
[INFO] [stderr] 247 |     let piece_buffers = try!(allocate_pieces(pieces));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:250:30
[INFO] [stderr]     |
[INFO] [stderr] 250 |         let file_directory = try!(parse::parse_name(info_dict));
[INFO] [stderr]     |                              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:254:29
[INFO] [stderr]     |
[INFO] [stderr] 254 |         let files_bencode = try!(parse::parse_files_list(info_dict));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:258:29
[INFO] [stderr]     |
[INFO] [stderr] 258 |             let file_dict = try!(parse::parse_file_dict(file_bencode));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:259:24
[INFO] [stderr]     |
[INFO] [stderr] 259 |             let file = try!(File::as_multi_file(file_dict));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:273:20
[INFO] [stderr]     |
[INFO] [stderr] 273 |         let file = try!(File::as_single_file(info_dict));
[INFO] [stderr]     |                    ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:327:22
[INFO] [stderr]     |
[INFO] [stderr] 327 |         let length = try!(parse::parse_length(info_dict));
[INFO] [stderr]     |                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:329:20
[INFO] [stderr]     |
[INFO] [stderr] 329 |         let name = try!(parse::parse_name(info_dict));
[INFO] [stderr]     |                    ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:341:22
[INFO] [stderr]     |
[INFO] [stderr] 341 |         let length = try!(parse::parse_length(file_dict));
[INFO] [stderr]     |                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:344:33
[INFO] [stderr]     |
[INFO] [stderr] 344 |         let path_list_bencode = try!(parse::parse_path_list(file_dict));
[INFO] [stderr]     |                                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/metainfo.rs:348:24
[INFO] [stderr]     |
[INFO] [stderr] 348 |             let path = try!(parse::parse_path_str(path_bencode));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stderr]   --> src/error.rs:8:1
[INFO] [stderr]    |
[INFO] [stderr]  8 | / error_chain! {
[INFO] [stderr]  9 | |     types {
[INFO] [stderr] 10 | |         ParseError, ParseErrorKind, ParseResultEx, ParseResult;
[INFO] [stderr] ...  |
[INFO] [stderr] 28 | | }
[INFO] [stderr]    | |_^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/accessor.rs:62:21
[INFO] [stderr]    |
[INFO] [stderr] 62 |     Compute(&'a mut Read),
[INFO] [stderr]    |                     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 62 |     Compute(&'a mut dyn Read),
[INFO] [stderr]    |                     +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/metainfo.rs:287:41
[INFO] [stderr]     |
[INFO] [stderr] 287 | fn is_multi_file_torrent<B>(info_dict: &BDictAccess<B::BKey, B>) -> bool
[INFO] [stderr]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 287 | fn is_multi_file_torrent<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> bool
[INFO] [stderr]     |                                         +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:44:61
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub fn parse_root_dict<B>(root_bencode: &B) -> ParseResult<&BDictAccess<B::BKey, B::BType>>
[INFO] [stderr]    |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub fn parse_root_dict<B>(root_bencode: &B) -> ParseResult<&dyn BDictAccess<B::BKey, B::BType>>
[INFO] [stderr]    |                                                             +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:50:49
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub fn parse_announce_url<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stderr]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub fn parse_announce_url<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stderr]    |                                                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:56:43
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub fn parse_creation_date<B>(root_dict: &BDictAccess<B::BKey, B>) -> Option<i64>
[INFO] [stderr]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub fn parse_creation_date<B>(root_dict: &dyn BDictAccess<B::BKey, B>) -> Option<i64>
[INFO] [stderr]    |                                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:62:44
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub fn parse_comment<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub fn parse_comment<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stderr]    |                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:68:47
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub fn parse_created_by<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stderr]    |                                               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub fn parse_created_by<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stderr]    |                                               +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:74:45
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub fn parse_encoding<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub fn parse_encoding<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a str>
[INFO] [stderr]    |                                             +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:80:49
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stderr]    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stderr]    |                                                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:88:42
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub fn parse_piece_length<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stderr]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub fn parse_piece_length<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stderr]    |                                          +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/parse.rs:94:43
[INFO] [stderr]    |
[INFO] [stderr] 94 | pub fn parse_pieces<'a, B>(info_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a [u8]>
[INFO] [stderr]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 94 | pub fn parse_pieces<'a, B>(info_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&'a [u8]>
[INFO] [stderr]    |                                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:100:37
[INFO] [stderr]     |
[INFO] [stderr] 100 | pub fn parse_private<B>(info_dict: &BDictAccess<B::BKey, B>) -> Option<bool>
[INFO] [stderr]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 100 | pub fn parse_private<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> Option<bool>
[INFO] [stderr]     |                                     +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:106:41
[INFO] [stderr]     |
[INFO] [stderr] 106 | pub fn parse_name<'a, B>(info_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a str>
[INFO] [stderr]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 106 | pub fn parse_name<'a, B>(info_dict: &'a dyn BDictAccess<B::BKey, B>) -> ParseResult<&'a str>
[INFO] [stderr]     |                                         +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:112:40
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub fn parse_files_list<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stderr]     |                                        +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:112:81
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stderr]     |                                                                                 ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub fn parse_files_list<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&dyn BListAccess<B>>
[INFO] [stderr]     |                                                                                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:120:61
[INFO] [stderr]     |
[INFO] [stderr] 120 | pub fn parse_file_dict<B>(file_bencode: &B) -> ParseResult<&BDictAccess<B::BKey, B::BType>>
[INFO] [stderr]     |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 120 | pub fn parse_file_dict<B>(file_bencode: &B) -> ParseResult<&dyn BDictAccess<B::BKey, B::BType>>
[INFO] [stderr]     |                                                             +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:126:44
[INFO] [stderr]     |
[INFO] [stderr] 126 | pub fn parse_length<B>(info_or_file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stderr]     |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 126 | pub fn parse_length<B>(info_or_file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<u64>
[INFO] [stderr]     |                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:132:51
[INFO] [stderr]     |
[INFO] [stderr] 132 | pub fn parse_md5sum<'a, B>(info_or_file_dict: &'a BDictAccess<B::BKey, B>) -> Option<&'a [u8]>
[INFO] [stderr]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 132 | pub fn parse_md5sum<'a, B>(info_or_file_dict: &'a dyn BDictAccess<B::BKey, B>) -> Option<&'a [u8]>
[INFO] [stderr]     |                                                   +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:138:39
[INFO] [stderr]     |
[INFO] [stderr] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 138 | pub fn parse_path_list<B>(file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stderr]     |                                       +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/parse.rs:138:80
[INFO] [stderr]     |
[INFO] [stderr] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&BListAccess<B>>
[INFO] [stderr]     |                                                                                ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 138 | pub fn parse_path_list<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<&dyn BListAccess<B>>
[INFO] [stderr]     |                                                                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/metainfo.rs:325:38
[INFO] [stderr]     |
[INFO] [stderr] 325 |     fn as_single_file<B>(info_dict: &BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 325 |     fn as_single_file<B>(info_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stderr]     |                                      +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/metainfo.rs:339:37
[INFO] [stderr]     |
[INFO] [stderr] 339 |     fn as_multi_file<B>(file_dict: &BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stderr]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 339 |     fn as_multi_file<B>(file_dict: &dyn BDictAccess<B::BKey, B>) -> ParseResult<File>
[INFO] [stderr]     |                                     +++
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `std::error::Error::cause`: replaced by Error::source, which can support downcasting
[INFO] [stderr]   --> src/error.rs:8:1
[INFO] [stderr]    |
[INFO] [stderr]  8 | / error_chain! {
[INFO] [stderr]  9 | |     types {
[INFO] [stderr] 10 | |         ParseError, ParseErrorKind, ParseResultEx, ParseResult;
[INFO] [stderr] ...  |
[INFO] [stderr] 28 | | }
[INFO] [stderr]    | |_^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this warning originates in the macro `impl_error_chain_processed` which comes from the expansion of the macro `error_chain` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: eliding a lifetime that's named elsewhere is confusing
[INFO] [stderr]   --> src/parse.rs:80:46
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&B>
[INFO] [stderr]    |                                              ^^ the lifetime is named here              -- the same lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: consistently use `'a`
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub fn parse_info_bencode<'a, B>(root_dict: &'a BDictAccess<B::BKey, B>) -> ParseResult<&'a B>
[INFO] [stderr]    |                                                                                          ++
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/builder/worker.rs:273:17
[INFO] [stderr]     |
[INFO] [stderr] 273 |                 try!(callback(PieceAccess::Compute(&mut next_region)));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stderr]    --> src/builder/worker.rs:352:46
[INFO] [stderr]     |
[INFO] [stderr] 352 |         for &region_length in region_lengths.into_iter() {
[INFO] [stderr]     |                                              ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this changes meaning in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stderr]     = note: `#[warn(array_into_iter)]` on by default
[INFO] [stderr] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stderr]     |
[INFO] [stderr] 352 -         for &region_length in region_lengths.into_iter() {
[INFO] [stderr] 352 +         for &region_length in region_lengths.iter() {
[INFO] [stderr]     |
[INFO] [stderr] help: or remove `.into_iter()` to iterate by value
[INFO] [stderr]     |
[INFO] [stderr] 352 -         for &region_length in region_lengths.into_iter() {
[INFO] [stderr] 352 +         for &region_length in region_lengths {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stderr]    --> src/builder/worker.rs:366:46
[INFO] [stderr]     |
[INFO] [stderr] 366 |         for &region_length in region_lengths.into_iter() {
[INFO] [stderr]     |                                              ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this changes meaning in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stderr] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stderr]     |
[INFO] [stderr] 366 -         for &region_length in region_lengths.into_iter() {
[INFO] [stderr] 366 +         for &region_length in region_lengths.iter() {
[INFO] [stderr]     |
[INFO] [stderr] help: or remove `.into_iter()` to iterate by value
[INFO] [stderr]     |
[INFO] [stderr] 366 -         for &region_length in region_lengths.into_iter() {
[INFO] [stderr] 366 +         for &region_length in region_lengths {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stderr]    --> src/builder/worker.rs:381:46
[INFO] [stderr]     |
[INFO] [stderr] 381 |         for &region_length in region_lengths.into_iter() {
[INFO] [stderr]     |                                              ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this changes meaning in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stderr] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stderr]     |
[INFO] [stderr] 381 -         for &region_length in region_lengths.into_iter() {
[INFO] [stderr] 381 +         for &region_length in region_lengths.iter() {
[INFO] [stderr]     |
[INFO] [stderr] help: or remove `.into_iter()` to iterate by value
[INFO] [stderr]     |
[INFO] [stderr] 381 -         for &region_length in region_lengths.into_iter() {
[INFO] [stderr] 381 +         for &region_length in region_lengths {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stderr]    --> src/builder/worker.rs:396:46
[INFO] [stderr]     |
[INFO] [stderr] 396 |         for &region_length in region_lengths.into_iter() {
[INFO] [stderr]     |                                              ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this changes meaning in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stderr] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stderr]     |
[INFO] [stderr] 396 -         for &region_length in region_lengths.into_iter() {
[INFO] [stderr] 396 +         for &region_length in region_lengths.iter() {
[INFO] [stderr]     |
[INFO] [stderr] help: or remove `.into_iter()` to iterate by value
[INFO] [stderr]     |
[INFO] [stderr] 396 -         for &region_length in region_lengths.into_iter() {
[INFO] [stderr] 396 +         for &region_length in region_lengths {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: `bip_metainfo` (lib) generated 58 warnings (run `cargo fix --lib -p bip_metainfo` to apply 22 suggestions)
[INFO] [stderr] warning: `bip_metainfo` (lib test) generated 63 warnings (58 duplicates) (run `cargo fix --lib -p bip_metainfo --tests` to apply 4 suggestions)
[INFO] [stderr] warning: use of deprecated method `chrono::TimeZone::timestamp`: use `timestamp_opt()` instead
[INFO] [stderr]   --> examples/create_torrent.rs:75:13
[INFO] [stderr]    |
[INFO] [stderr] 75 |         Utc.timestamp(c, 0)
[INFO] [stderr]    |             ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `bip_metainfo` (example "create_torrent") generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/bip_metainfo-4d577494636db9da)
[INFO] [stdout] 
[INFO] [stdout] running 25 tests
[INFO] [stdout] test builder::worker::tests::positive_piece_length_divisible_region_multiple_threads ... ok
[INFO] [stdout] test builder::worker::tests::positive_piece_length_undivisible_regions_multiple_threads ... ok
[INFO] [stdout] test builder::worker::tests::positive_piece_length_undivisible_regions_single_thread ... ok
[INFO] [stdout] test builder::worker::tests::positive_piece_length_divisible_regions_multiple_threads ... ok
[INFO] [stdout] test builder::worker::tests::positive_piece_length_undivisible_region_single_thread ... ok
[INFO] [stdout] test builder::worker::tests::positive_piece_length_divisible_region_single_thread ... ok
[INFO] [stdout] test builder::worker::tests::positive_piece_length_undivisible_region_multiple_threads ... ok
[INFO] [stdout] test builder::worker::tests::positive_piece_length_divisible_regions_single_thread ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_from_empty_pieces ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_from_single_file ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_from_multi_files ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_with_comment ... ok
[INFO] [stdout] test metainfo::tests::negative_parse_with_no_pieces - should panic ... ok
[INFO] [stdout] test metainfo::tests::negative_parse_from_empty_bytes - should panic ... ok
[INFO] [stdout] test metainfo::tests::negative_parse_with_no_piece_length - should panic ... ok
[INFO] [stdout] test metainfo::tests::negative_parse_from_single_file_with_no_file_name - should panic ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_from_multi_file ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_with_encoding ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_with_creation_date ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_with_private_zero ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_with_private_non_zero ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_with_private_one ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_with_no_main_tracker ... ok
[INFO] [stdout] test metainfo::tests::positive_parse_with_created_by ... ok
[INFO] [stdout] test metainfo::tests::negative_parse_from_single_file_with_no_file_length - should panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.95s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests bip_metainfo
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test src/lib.rs - (line 30) ... ok
[INFO] [stdout] test src/lib.rs - (line 7) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.41s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "91038b9bdff95d14744b2973ff04b036c8cd937b914d045e908fd8e641af2015", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "91038b9bdff95d14744b2973ff04b036c8cd937b914d045e908fd8e641af2015", kill_on_drop: false }`
[INFO] [stdout] 91038b9bdff95d14744b2973ff04b036c8cd937b914d045e908fd8e641af2015
