[INFO] fetching crate redox 0.0.3...
[INFO] testing redox-0.0.3 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate redox 0.0.3 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate redox 0.0.3
[INFO] finished tweaking crates.io crate redox 0.0.3
[INFO] tweaked toml for crates.io crate redox 0.0.3 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate redox 0.0.3 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "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" "+beta-2026-04-21" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 58 packages to latest compatible versions
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] dbaf91988ce9f522d8f07c745621320b0ee7e33d6369ceed86fac1818753793f
[INFO] running `Command { std: "docker" "start" "-a" "dbaf91988ce9f522d8f07c745621320b0ee7e33d6369ceed86fac1818753793f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dbaf91988ce9f522d8f07c745621320b0ee7e33d6369ceed86fac1818753793f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dbaf91988ce9f522d8f07c745621320b0ee7e33d6369ceed86fac1818753793f", kill_on_drop: false }`
[INFO] [stdout] dbaf91988ce9f522d8f07c745621320b0ee7e33d6369ceed86fac1818753793f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1d0db2ff58e2e9f02efbeaf93eb3ddbc9c0130e91a04d49b3ee4a09d9c6476c5
[INFO] running `Command { std: "docker" "start" "-a" "1d0db2ff58e2e9f02efbeaf93eb3ddbc9c0130e91a04d49b3ee4a09d9c6476c5", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]    Compiling typenum v1.20.0
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling rand_core v0.10.1
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling hybrid-array v0.4.11
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling block-buffer v0.12.0
[INFO] [stderr]    Compiling crypto-common v0.2.1
[INFO] [stderr]    Compiling digest v0.11.2
[INFO] [stderr]    Compiling sha1 v0.11.0
[INFO] [stderr]    Compiling redox v0.0.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/bencode/decode.rs:32:34
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let (bencode, end_pos) = try!(decode(bytes_ref, 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/bencode/decode.rs:85:21
[INFO] [stdout]    |
[INFO] [stdout] 85 |     let curr_byte = try!(peek_byte(bytes, pos, "End Of Bytes Encountered"));
[INFO] [stdout]    |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/bencode/decode.rs:89:34
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let (bencode, pos) = try!(decode_int(bytes, pos + 1, bencode::BEN_END));
[INFO] [stdout]    |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/bencode/decode.rs:93:34
[INFO] [stdout]    |
[INFO] [stdout] 93 |             let (bencode, pos) = try!(decode_list(bytes, pos + 1));
[INFO] [stdout]    |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/bencode/decode.rs:97:34
[INFO] [stdout]    |
[INFO] [stdout] 97 |             let (bencode, pos) = try!(decode_dict(bytes, pos + 1));
[INFO] [stdout]    |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/bencode/decode.rs:100:30
[INFO] [stdout]     |
[INFO] [stdout] 100 |         bencode::BYTE_LEN_LOW...bencode::BYTE_LEN_HIGH => {
[INFO] [stdout]     |                              ^^^ help: use `..=` for an inclusive range
[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(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:101:34
[INFO] [stdout]     |
[INFO] [stdout] 101 |             let (bencode, pos) = try!(decode_bytes(bytes, pos));
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:150:34
[INFO] [stdout]     |
[INFO] [stdout] 150 |     let (num_bytes, start_pos) = try!(decode_int(bytes, pos, bencode::BYTE_LEN_END));
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:175:25
[INFO] [stdout]     |
[INFO] [stdout] 175 |     let mut curr_byte = try!(peek_byte(bytes, curr_pos, "End Of Bytes Element Encountered In List"));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:178:35
[INFO] [stdout]     |
[INFO] [stdout] 178 |         let (bencode, next_pos) = try!(decode(bytes, curr_pos));
[INFO] [stdout]     |                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:183:21
[INFO] [stdout]     |
[INFO] [stdout] 183 |         curr_byte = try!(peek_byte(bytes, curr_pos, "End Of Bytes Element Encountered In List"));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:193:25
[INFO] [stdout]     |
[INFO] [stdout] 193 |     let mut curr_byte = try!(peek_byte(bytes, curr_pos, "End Of Bytes Element Encountered In Dictionary"));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:196:37
[INFO] [stdout]     |
[INFO] [stdout] 196 |         let (key_bytes, next_pos) = try!(decode_bytes(bytes, curr_pos));
[INFO] [stdout]     |                                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:216:33
[INFO] [stdout]     |
[INFO] [stdout] 216 |         let (value, next_pos) = try!(decode(bytes, curr_pos));
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/bencode/decode.rs:226:21
[INFO] [stdout]     |
[INFO] [stdout] 226 |         curr_byte = try!(peek_byte(bytes, curr_pos, "End Of Bytes Element Encountered In Dictionary"));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: anonymous parameters are deprecated and will be removed in the next edition
[INFO] [stdout]   --> src/bencode/mod.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn decode(T) -> BencodeResult<Self>;
[INFO] [stdout]    |               ^ help: try naming the parameter or explicitly ignoring it: `_: T`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2018!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2018/trait-fn-parameters.html>
[INFO] [stdout]    = note: `#[warn(anonymous_parameters)]` (part of `#[warn(rust_2018_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/error.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |         try!(f.write_fmt(format_args!("Kind: {:?}", self.kind)));
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/error.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |         try!(f.write_fmt(format_args!(", Description: {}", self.desc)));
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/error.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |             try!(f.write_fmt(format_args!(", Position: {}", n)));
[INFO] [stdout]    |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/error.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |         try!(f.write_fmt(format_args!("Kind: {:?}", self.kind)));
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/error.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |         try!(f.write_fmt(format_args!(", Description: {}", self.desc)));
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/error.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |             try!(f.write_fmt(format_args!(", Detail: {}", n)));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:42:27
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let mut bencode = try!(Bencode::decode(&bytes));
[INFO] [stdout]    |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let info_hash = try!(metainfo::generate_info_hash(&bencode));
[INFO] [stdout]    |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:47:20
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let info = try!(PieceInfoImpl::new(&mut bencode));
[INFO] [stdout]    |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:48:20
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let file = try!(FileInfoImpl::new(&mut bencode));
[INFO] [stdout]    |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |         let comment = try!(move_comment(&mut bencode));
[INFO] [stdout]    |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:60:26
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let created_by = try!(move_created_by(&mut bencode));
[INFO] [stdout]    |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:61:29
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let creation_date = try!(move_creation_date(&mut bencode));
[INFO] [stdout]    |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:80:9
[INFO] [stdout]    |
[INFO] [stdout] 80 |         try!(torrent_file.read_to_end(&mut torrent_bytes));
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:77:32
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let mut torrent_file = try!(fs::File::open(path));
[INFO] [stdout]    |                                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:142:22
[INFO] [stdout]     |
[INFO] [stdout] 142 |         let length = try!(move_piece_length(root));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:143:22
[INFO] [stdout]     |
[INFO] [stdout] 143 |         let pieces = try!(move_pieces(root));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:169:37
[INFO] [stdout]     |
[INFO] [stdout] 169 |         Ok(FileInfoImpl{ file_type: try!(move_files(root)) })
[INFO] [stdout]     |                                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:290:21
[INFO] [stdout]     |
[INFO] [stdout] 290 |     let root_dict = try!(slice_root_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:304:21
[INFO] [stdout]     |
[INFO] [stdout] 304 |     let root_dict = try!(slice_root_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:311:21
[INFO] [stdout]     |
[INFO] [stdout] 311 |     let root_dict = try!(slice_root_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:327:20
[INFO] [stdout]     |
[INFO] [stdout] 327 |         let host = try!(bytes_into_string(
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:339:21
[INFO] [stdout]     |
[INFO] [stdout] 339 |     let root_dict = try!(slice_root_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:348:21
[INFO] [stdout]     |
[INFO] [stdout] 348 |     let root_dict = try!(slice_root_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:357:21
[INFO] [stdout]     |
[INFO] [stdout] 357 |     let root_dict = try!(slice_root_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:363:21
[INFO] [stdout]     |
[INFO] [stdout] 363 |     let info_dict = try!(slice_info_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:369:21
[INFO] [stdout]     |
[INFO] [stdout] 369 |     let info_dict = try!(slice_info_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:389:21
[INFO] [stdout]     |
[INFO] [stdout] 389 |     let info_dict = try!(slice_info_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:400:16
[INFO] [stdout]     |
[INFO] [stdout] 400 |     let name = try!(move_name(root));
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:401:21
[INFO] [stdout]     |
[INFO] [stdout] 401 |     let info_dict = try!(slice_info_dict(root));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:406:24
[INFO] [stdout]     |
[INFO] [stdout] 406 |         let checksum = try!(move_checksum(info_dict));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:414:28
[INFO] [stdout]     |
[INFO] [stdout] 414 |             file_list.push(try!(move_file(&mut file)));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:426:20
[INFO] [stdout]     |
[INFO] [stdout] 426 |     let checksum = try!(move_checksum(file));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:435:24
[INFO] [stdout]     |
[INFO] [stdout] 435 |         path_list.push(try!(bytes_into_string(path_entry_bytes.to_vec(), metainfo::PATH_KEY)));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `slice_dict`
[INFO] [stdout]   --> src/torrent/metainfo/lazy_metainfo.rs:25:14
[INFO] [stdout]    |
[INFO] [stdout] 25 | macro_rules! slice_dict {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `slice_dict_opt`
[INFO] [stdout]   --> src/torrent/metainfo/lazy_metainfo.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | macro_rules! slice_dict_opt {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/mod.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let root_dict = try!(lazy_metainfo::slice_root_dict(root));
[INFO] [stdout]    |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/torrent/metainfo/mod.rs:47:16
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let info = try!(root_dict.lookup(INFO_KEY).ok_or(
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bencode/mod.rs:31:14
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Dict(&'b Dictionary<'a, T>)
[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)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Dict(&'b dyn Dictionary<'a, T>)
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/torrent/mod.rs:32:15
[INFO] [stdout]    |
[INFO] [stdout] 32 |     iter: Box<Iterator<Item=Node<'a>> + 'a>
[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] 32 |     iter: Box<dyn Iterator<Item=Node<'a>> + 'a>
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/mod.rs:204:15
[INFO] [stdout]     |
[INFO] [stdout] 204 |     iter: Box<Iterator<Item=File<'a>> + 'a>
[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] 204 |     iter: Box<dyn Iterator<Item=File<'a>> + 'a>
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/mod.rs:243:15
[INFO] [stdout]     |
[INFO] [stdout] 243 |     iter: Box<Iterator<Item=&'a str> + 'a>
[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] 243 |     iter: Box<dyn Iterator<Item=&'a str> + 'a>
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bencode/encode.rs:47:30
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn encode_dict<'a, T>(dict: &Dictionary<'a, T>) -> Vec<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] 47 | fn encode_dict<'a, T>(dict: &dyn Dictionary<'a, T>) -> Vec<u8>
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/torrent/metainfo/lazy_metainfo.rs:54:59
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn slice_root_dict<'a, T>(root: &T) -> TorrentResult<&Dictionary<'a, T>>
[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] 54 | pub fn slice_root_dict<'a, T>(root: &T) -> TorrentResult<&dyn Dictionary<'a, T>>
[INFO] [stdout]    |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bencode/mod.rs:74:31
[INFO] [stdout]    |
[INFO] [stdout] 74 |     fn dict(&self) -> Option<&Dictionary<'a, Self::InnerView>>;
[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 |     fn dict(&self) -> Option<&dyn Dictionary<'a, Self::InnerView>>;
[INFO] [stdout]    |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bencode/decode.rs:76:31
[INFO] [stdout]    |
[INFO] [stdout] 76 |     fn dict(&self) -> Option<&Dictionary<'a, Self::InnerView>> {
[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] 76 |     fn dict(&self) -> Option<&dyn Dictionary<'a, Self::InnerView>> {
[INFO] [stdout]    |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bencode/mod.rs:100:31
[INFO] [stdout]     |
[INFO] [stdout] 100 |     fn dict(&self) -> Option<&Dictionary<'a, Self::InnerView>> {
[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 |     fn dict(&self) -> Option<&dyn Dictionary<'a, Self::InnerView>> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bencode/mod.rs:128:31
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn dict(&self) -> Option<&Dictionary<'a, Self::InnerView>> {
[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] 128 |     fn dict(&self) -> Option<&dyn Dictionary<'a, Self::InnerView>> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/error.rs:70:32
[INFO] [stdout]    |
[INFO] [stdout] 70 |     fn cause(&self) -> Option<&Error> { None }
[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] 70 |     fn cause(&self) -> Option<&dyn Error> { None }
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/error.rs:150:32
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn cause(&self) -> Option<&Error> { None }
[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] 150 |     fn cause(&self) -> Option<&dyn Error> { None }
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:285:84
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub fn slice_root_dict<'a, 'b>(root: &'b mut Bencode<'a>) -> TorrentResult<&'b mut Dictionary<'a, Bencode<'a>>> {
[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] 285 | pub fn slice_root_dict<'a, 'b>(root: &'b mut Bencode<'a>) -> TorrentResult<&'b mut dyn Dictionary<'a, Bencode<'a>>> {
[INFO] [stdout]     |                                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:289:84
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn slice_info_dict<'a, 'b>(root: &'b mut Bencode<'a>) -> TorrentResult<&'b mut Dictionary<'a, Bencode<'a>>> {
[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] 289 | pub fn slice_info_dict<'a, 'b>(root: &'b mut Bencode<'a>) -> TorrentResult<&'b mut dyn Dictionary<'a, Bencode<'a>>> {
[INFO] [stdout]     |                                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:377:33
[INFO] [stdout]     |
[INFO] [stdout] 377 | fn move_checksum<'a>(dict: &mut Dictionary<'a, Bencode<'a>>) -> TorrentResult<Option<Vec<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] 377 | fn move_checksum<'a>(dict: &mut dyn Dictionary<'a, Bencode<'a>>) -> TorrentResult<Option<Vec<u8>>> {
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `Self` cannot be known at compilation time
[INFO] [stdout]   --> src/bencode/mod.rs:35:21
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn decode(T) -> BencodeResult<Self>;
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout] note: required by an implicit `Sized` bound in `Result`
[INFO] [stdout]   --> /rustc/8489f1adbe1c8f8921cf18b9962cf565237a5489/library/core/src/result.rs:557:0
[INFO] [stdout] help: consider further restricting `Self`
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn decode(T) -> BencodeResult<Self> where Self: Sized;
[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:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 |             error.description().to_owned()
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/torrent/metainfo/metainfo.rs:93:28
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 })) as Box<Iterator<Item=(&'a str, u16)> + 'a>;
[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] 93 |                 })) as Box<dyn Iterator<Item=(&'a str, u16)> + 'a>;
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:100:28
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 })) as Box<Iterator<Item=(&'a str, u16)> + 'a>;
[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 |                 })) as Box<dyn Iterator<Item=(&'a str, u16)> + 'a>;
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:183:28
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 })) as Box<Iterator<Item=File<'a>>>;
[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] 183 |                 })) as Box<dyn Iterator<Item=File<'a>>>;
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:176:75
[INFO] [stdout]     |
[INFO] [stdout] 176 |                     let path_iter = Box::new(Iter::new(&name[..])) as Box<Iterator<Item=&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] 176 |                     let path_iter = Box::new(Iter::new(&name[..])) as Box<dyn Iterator<Item=&str>>;
[INFO] [stdout]     |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:199:28
[INFO] [stdout]     |
[INFO] [stdout] 199 |                 })) as Box<Iterator<Item=File<'a>>>;
[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] 199 |                 })) as Box<dyn Iterator<Item=File<'a>>>;
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/torrent/metainfo/metainfo.rs:192:88
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     let path_iter = Box::new(path.iter().map(|path| &path[..])) as Box<Iterator<Item=&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] 192 |                     let path_iter = Box::new(path.iter().map(|path| &path[..])) as Box<dyn Iterator<Item=&str>>;
[INFO] [stdout]     |                                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated function or constant named `new` found for struct `Sha1` in the current scope
[INFO] [stdout]   --> src/util.rs:77:25
[INFO] [stdout]    |
[INFO] [stdout] 77 |     let mut sha = Sha1::new();
[INFO] [stdout]    |                         ^^^ associated function or constant not found in `Sha1`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `Digest` which provides `new` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]    |
[INFO] [stdout]  3 + use sha1::Digest;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `StandardUniform: rand::distr::Distribution<usize>` is not satisfied
[INFO] [stdout]    --> src/util.rs:86:42
[INFO] [stdout]     |
[INFO] [stdout]  86 |         let swap_index = (rand::random::<usize>() % (list.len() - i)) + i;
[INFO] [stdout]     |                                          ^^^^^ the trait `rand::distr::Distribution<usize>` is not implemented for `StandardUniform`
[INFO] [stdout]     |
[INFO] [stdout]     = help: `StandardUniform` implements trait `rand::distr::Distribution<T>`:
[INFO] [stdout]               rand::distr::Distribution<()>
[INFO] [stdout]               rand::distr::Distribution<(A, B)>
[INFO] [stdout]               rand::distr::Distribution<(A, B, C)>
[INFO] [stdout]               rand::distr::Distribution<(A, B, C, D)>
[INFO] [stdout]               rand::distr::Distribution<(A, B, C, D, E)>
[INFO] [stdout]               rand::distr::Distribution<(A, B, C, D, E, F)>
[INFO] [stdout]               rand::distr::Distribution<(A, B, C, D, E, F, G)>
[INFO] [stdout]               rand::distr::Distribution<(A, B, C, D, E, F, G, H)>
[INFO] [stdout]             and 33 others
[INFO] [stdout] note: required by a bound in `rand::random`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/rand-0.10.1/src/lib.rs:205:22
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn random<T>() -> T
[INFO] [stdout]     |        ------ required by a bound in this function
[INFO] [stdout] 204 | where
[INFO] [stdout] 205 |     StandardUniform: Distribution<T>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^ required by this bound in `random`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `redox` (lib) due to 3 previous errors; 76 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "1d0db2ff58e2e9f02efbeaf93eb3ddbc9c0130e91a04d49b3ee4a09d9c6476c5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1d0db2ff58e2e9f02efbeaf93eb3ddbc9c0130e91a04d49b3ee4a09d9c6476c5", kill_on_drop: false }`
[INFO] [stdout] 1d0db2ff58e2e9f02efbeaf93eb3ddbc9c0130e91a04d49b3ee4a09d9c6476c5
