[INFO] crate tiny_http 0.7.0 is already in cache [INFO] testing tiny_http-0.7.0 against master#8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e for pr-74409 [INFO] extracting crate tiny_http 0.7.0 into /workspace/builds/worker-3/source [INFO] validating manifest of crates.io crate tiny_http 0.7.0 on toolchain 8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking crates.io crate tiny_http 0.7.0 [INFO] finished tweaking crates.io crate tiny_http 0.7.0 [INFO] tweaked toml for crates.io crate tiny_http 0.7.0 written to /workspace/builds/worker-3/source/Cargo.toml [INFO] crate crates.io crate tiny_http 0.7.0 already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env@sha256:d9fbb4e2287ab3795bdefaf705efb7541a8875c13bce71e067d6b01dc5ed759b" "/opt/rustwide/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 6b5ae1d440bcb798ec4c270b059d3776cd684e3baaafbdbdc3445a678541093b [INFO] running `Command { std: "docker" "start" "-a" "6b5ae1d440bcb798ec4c270b059d3776cd684e3baaafbdbdc3445a678541093b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6b5ae1d440bcb798ec4c270b059d3776cd684e3baaafbdbdc3445a678541093b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6b5ae1d440bcb798ec4c270b059d3776cd684e3baaafbdbdc3445a678541093b", kill_on_drop: false }` [INFO] [stdout] 6b5ae1d440bcb798ec4c270b059d3776cd684e3baaafbdbdc3445a678541093b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env@sha256:d9fbb4e2287ab3795bdefaf705efb7541a8875c13bce71e067d6b01dc5ed759b" "/opt/rustwide/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 442d94b6851c3d44f960828310b455235d40a0b543586915d7a1c16c97d5df69 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "442d94b6851c3d44f960828310b455235d40a0b543586915d7a1c16c97d5df69", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.0.0 [INFO] [stderr] Compiling libc v0.2.69 [INFO] [stderr] Compiling matches v0.1.8 [INFO] [stderr] Compiling smallvec v1.3.0 [INFO] [stderr] Compiling log v0.4.8 [INFO] [stderr] Compiling cfg-if v0.1.10 [INFO] [stderr] Compiling percent-encoding v2.1.0 [INFO] [stderr] Compiling chunked_transfer v1.1.0 [INFO] [stderr] Compiling ascii v1.0.0 [INFO] [stderr] Compiling unicode-bidi v0.3.4 [INFO] [stderr] Compiling unicode-normalization v0.1.12 [INFO] [stderr] Compiling num-traits v0.2.11 [INFO] [stderr] Compiling num-integer v0.1.42 [INFO] [stderr] Compiling time v0.1.43 [INFO] [stderr] Compiling idna v0.2.0 [INFO] [stderr] Compiling url v2.1.1 [INFO] [stderr] Compiling chrono v0.4.11 [INFO] [stderr] Compiling tiny_http v0.7.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:89:28 [INFO] [stdout] | [INFO] [stdout] 89 | Some(b) => try!(b), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:111:28 [INFO] [stdout] | [INFO] [stdout] 111 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:113:17 [INFO] [stdout] | [INFO] [stdout] 113 | try!(parse_request_line( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:122:32 [INFO] [stdout] | [INFO] [stdout] 122 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:147:23 [INFO] [stdout] | [INFO] [stdout] 147 | let request = try!(::request::new_request(self.secure, method, path, version.clone(), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:295:19 [INFO] [stdout] | [INFO] [stdout] 295 | let version = try!(parse_http_version(version)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:171:22 [INFO] [stdout] | [INFO] [stdout] 171 | let header = try!(HeaderField::from_bytes(header).or(Err(()))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:172:21 [INFO] [stdout] | [INFO] [stdout] 172 | let value = try!(AsciiString::from_ascii(value).or(Err(()))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:198:21 [INFO] [stdout] | [INFO] [stdout] 198 | let value = try!(AsciiString::from_ascii(value.trim()).map_err(|_| () )); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:328:36 [INFO] [stdout] | [INFO] [stdout] 328 | let ascii_string = try!(AsciiString::from_ascii(s).map_err(|_| () )); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/request.rs:183:32 [INFO] [stdout] | [INFO] [stdout] 183 | let read = try!(source_data.read(&mut buffer[offset..])); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | try!(write!(&mut writer, "HTTP/{}.{} {} {}\r\n", [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | try!(writer.write_all(header.field.as_str().as_ref())); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | try!(write!(&mut writer, ": ")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | try!(writer.write_all(header.value.as_str().as_ref())); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | try!(write!(&mut writer, "\r\n")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | try!(write!(&mut writer, "\r\n")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:315:17 [INFO] [stdout] | [INFO] [stdout] 315 | try!(self.reader.read_to_end(&mut buf)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:351:9 [INFO] [stdout] | [INFO] [stdout] 351 | try!(write_message_header(writer.by_ref(), &http_version, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:362:21 [INFO] [stdout] | [INFO] [stdout] 362 | try!(io::copy(&mut reader, &mut writer)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:374:25 [INFO] [stdout] | [INFO] [stdout] 374 | try!(io::copy(&mut equ_reader, &mut writer)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/lib.rs:230:28 [INFO] [stdout] | [INFO] [stdout] 230 | let listener = try!(net::TcpListener::bind(config.addr)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/lib.rs:231:30 [INFO] [stdout] | [INFO] [stdout] 231 | let local_addr = try!(listener.local_addr()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:48:29 [INFO] [stdout] | [INFO] [stdout] 48 | data_reader: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:51:33 [INFO] [stdout] | [INFO] [stdout] 51 | response_writer: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:170:42 [INFO] [stdout] | [INFO] [stdout] 170 | Box::new(source_data) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:174:46 [INFO] [stdout] | [INFO] [stdout] 174 | Box::new(io::empty()) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:195:54 [INFO] [stdout] | [INFO] [stdout] 195 | Box::new(Cursor::new(buffer)) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:199:46 [INFO] [stdout] | [INFO] [stdout] 199 | Box::new(data_reader) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:205:56 [INFO] [stdout] | [INFO] [stdout] 205 | Box::new(Decoder::new(source_data)) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:211:42 [INFO] [stdout] | [INFO] [stdout] 211 | Box::new(io::empty()) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:216:55 [INFO] [stdout] | [INFO] [stdout] 216 | response_writer: Some(Box::new(writer) as Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:287:85 [INFO] [stdout] | [INFO] [stdout] 287 | pub fn upgrade(mut self, protocol: &str, response: Response) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:298:37 [INFO] [stdout] | [INFO] [stdout] 298 | Box::new(stream) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:300:37 [INFO] [stdout] | [INFO] [stdout] 300 | Box::new(stream) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:329:41 [INFO] [stdout] | [INFO] [stdout] 329 | pub fn as_reader(&mut self) -> &mut Read { [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:352:41 [INFO] [stdout] | [INFO] [stdout] 352 | pub fn into_writer(mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:356:37 [INFO] [stdout] | [INFO] [stdout] 356 | Box::new(writer) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:362:43 [INFO] [stdout] | [INFO] [stdout] 362 | fn into_writer_impl(&mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:372:43 [INFO] [stdout] | [INFO] [stdout] 372 | fn into_reader_impl(&mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:45:37 [INFO] [stdout] | [INFO] [stdout] 45 | pub type ResponseBox = Response>; [INFO] [stdout] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:312:59 [INFO] [stdout] | [INFO] [stdout] 312 | (Some(l), _) => (Box::new(self.reader) as Box, Some(l)), [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:317:52 [INFO] [stdout] | [INFO] [stdout] 317 | (Box::new(Cursor::new(buf)) as Box, Some(l)) [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:319:48 [INFO] [stdout] | [INFO] [stdout] 319 | _ => (Box::new(self.reader) as Box, None), [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/response.rs:326:20 [INFO] [stdout] | [INFO] [stdout] 326 | 100...199 | 204 | 304 => true, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:391:50 [INFO] [stdout] | [INFO] [stdout] 391 | reader: Box::new(self.reader) as Box, [INFO] [stdout] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:17:30 [INFO] [stdout] | [INFO] [stdout] 17 | todo: Mutex>>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:69:35 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn spawn(&self, code: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:81:49 [INFO] [stdout] | [INFO] [stdout] 81 | fn add_thread(&self, initial_fn: Option>) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:94:35 [INFO] [stdout] | [INFO] [stdout] 94 | let mut task: Box = { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:199:51 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn http(addr: A) -> Result> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:222:66 [INFO] [stdout] | [INFO] [stdout] 222 | pub fn new(config: ServerConfig) -> Result> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stdout] --> src/util/mod.rs:33:18 [INFO] [stdout] | [INFO] [stdout] 33 | if p.trim_left().starts_with("q=") { [INFO] [stdout] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stdout] --> src/util/mod.rs:34:44 [INFO] [stdout] | [INFO] [stdout] 34 | match FromStr::from_str(&p.trim_left()[2..].trim()) { [INFO] [stdout] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 54 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 10.99s [INFO] running `Command { std: "docker" "inspect" "442d94b6851c3d44f960828310b455235d40a0b543586915d7a1c16c97d5df69", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "442d94b6851c3d44f960828310b455235d40a0b543586915d7a1c16c97d5df69", kill_on_drop: false }` [INFO] [stdout] 442d94b6851c3d44f960828310b455235d40a0b543586915d7a1c16c97d5df69 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env@sha256:d9fbb4e2287ab3795bdefaf705efb7541a8875c13bce71e067d6b01dc5ed759b" "/opt/rustwide/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 1dc3fde0166ecabafd9761344c8c9b0a2643c396869b832249d1fbb4c60a4b73 [INFO] running `Command { std: "docker" "start" "-a" "1dc3fde0166ecabafd9761344c8c9b0a2643c396869b832249d1fbb4c60a4b73", kill_on_drop: false }` [INFO] [stderr] Compiling rustc-serialize v0.3.24 [INFO] [stderr] Compiling fdlimit v0.1.4 [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:89:28 [INFO] [stdout] | [INFO] [stdout] 89 | Some(b) => try!(b), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:111:28 [INFO] [stdout] | [INFO] [stdout] 111 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:113:17 [INFO] [stdout] | [INFO] [stdout] 113 | try!(parse_request_line( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:122:32 [INFO] [stdout] | [INFO] [stdout] 122 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:147:23 [INFO] [stdout] | [INFO] [stdout] 147 | let request = try!(::request::new_request(self.secure, method, path, version.clone(), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:295:19 [INFO] [stdout] | [INFO] [stdout] 295 | let version = try!(parse_http_version(version)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:171:22 [INFO] [stdout] | [INFO] [stdout] 171 | let header = try!(HeaderField::from_bytes(header).or(Err(()))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:172:21 [INFO] [stdout] | [INFO] [stdout] 172 | let value = try!(AsciiString::from_ascii(value).or(Err(()))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:198:21 [INFO] [stdout] | [INFO] [stdout] 198 | let value = try!(AsciiString::from_ascii(value.trim()).map_err(|_| () )); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:328:36 [INFO] [stdout] | [INFO] [stdout] 328 | let ascii_string = try!(AsciiString::from_ascii(s).map_err(|_| () )); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/request.rs:183:32 [INFO] [stdout] | [INFO] [stdout] 183 | let read = try!(source_data.read(&mut buffer[offset..])); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | try!(write!(&mut writer, "HTTP/{}.{} {} {}\r\n", [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | try!(writer.write_all(header.field.as_str().as_ref())); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | try!(write!(&mut writer, ": ")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | try!(writer.write_all(header.value.as_str().as_ref())); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | try!(write!(&mut writer, "\r\n")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | try!(write!(&mut writer, "\r\n")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:315:17 [INFO] [stdout] | [INFO] [stdout] 315 | try!(self.reader.read_to_end(&mut buf)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:351:9 [INFO] [stdout] | [INFO] [stdout] 351 | try!(write_message_header(writer.by_ref(), &http_version, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:362:21 [INFO] [stdout] | [INFO] [stdout] 362 | try!(io::copy(&mut reader, &mut writer)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:374:25 [INFO] [stdout] | [INFO] [stdout] 374 | try!(io::copy(&mut equ_reader, &mut writer)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/lib.rs:230:28 [INFO] [stdout] | [INFO] [stdout] 230 | let listener = try!(net::TcpListener::bind(config.addr)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/lib.rs:231:30 [INFO] [stdout] | [INFO] [stdout] 231 | let local_addr = try!(listener.local_addr()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:48:29 [INFO] [stdout] | [INFO] [stdout] 48 | data_reader: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:51:33 [INFO] [stdout] | [INFO] [stdout] 51 | response_writer: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:170:42 [INFO] [stdout] | [INFO] [stdout] 170 | Box::new(source_data) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:174:46 [INFO] [stdout] | [INFO] [stdout] 174 | Box::new(io::empty()) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:195:54 [INFO] [stdout] | [INFO] [stdout] 195 | Box::new(Cursor::new(buffer)) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:199:46 [INFO] [stdout] | [INFO] [stdout] 199 | Box::new(data_reader) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:205:56 [INFO] [stdout] | [INFO] [stdout] 205 | Box::new(Decoder::new(source_data)) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:211:42 [INFO] [stdout] | [INFO] [stdout] 211 | Box::new(io::empty()) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:216:55 [INFO] [stdout] | [INFO] [stdout] 216 | response_writer: Some(Box::new(writer) as Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:287:85 [INFO] [stdout] | [INFO] [stdout] 287 | pub fn upgrade(mut self, protocol: &str, response: Response) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:298:37 [INFO] [stdout] | [INFO] [stdout] 298 | Box::new(stream) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:300:37 [INFO] [stdout] | [INFO] [stdout] 300 | Box::new(stream) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:329:41 [INFO] [stdout] | [INFO] [stdout] 329 | pub fn as_reader(&mut self) -> &mut Read { [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:352:41 [INFO] [stdout] | [INFO] [stdout] 352 | pub fn into_writer(mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:356:37 [INFO] [stdout] | [INFO] [stdout] 356 | Box::new(writer) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:362:43 [INFO] [stdout] | [INFO] [stdout] 362 | fn into_writer_impl(&mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:372:43 [INFO] [stdout] | [INFO] [stdout] 372 | fn into_reader_impl(&mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:45:37 [INFO] [stdout] | [INFO] [stdout] 45 | pub type ResponseBox = Response>; [INFO] [stdout] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:312:59 [INFO] [stdout] | [INFO] [stdout] 312 | (Some(l), _) => (Box::new(self.reader) as Box, Some(l)), [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:317:52 [INFO] [stdout] | [INFO] [stdout] 317 | (Box::new(Cursor::new(buf)) as Box, Some(l)) [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:319:48 [INFO] [stdout] | [INFO] [stdout] 319 | _ => (Box::new(self.reader) as Box, None), [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/response.rs:326:20 [INFO] [stdout] | [INFO] [stdout] 326 | 100...199 | 204 | 304 => true, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:391:50 [INFO] [stdout] | [INFO] [stdout] 391 | reader: Box::new(self.reader) as Box, [INFO] [stdout] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:17:30 [INFO] [stdout] | [INFO] [stdout] 17 | todo: Mutex>>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:69:35 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn spawn(&self, code: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:81:49 [INFO] [stdout] | [INFO] [stdout] 81 | fn add_thread(&self, initial_fn: Option>) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:94:35 [INFO] [stdout] | [INFO] [stdout] 94 | let mut task: Box = { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:199:51 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn http(addr: A) -> Result> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:222:66 [INFO] [stdout] | [INFO] [stdout] 222 | pub fn new(config: ServerConfig) -> Result> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stdout] --> src/util/mod.rs:33:18 [INFO] [stdout] | [INFO] [stdout] 33 | if p.trim_left().starts_with("q=") { [INFO] [stdout] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stdout] --> src/util/mod.rs:34:44 [INFO] [stdout] | [INFO] [stdout] 34 | match FromStr::from_str(&p.trim_left()[2..].trim()) { [INFO] [stdout] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 54 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling tiny_http v0.7.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> examples/readme-example.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | request.respond(response); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/php-cgi.rs:49:34 [INFO] [stdout] | [INFO] [stdout] 49 | let mut writer: &mut Write = &mut *writer; [INFO] [stdout] | ^^^^^ help: use `dyn`: `dyn Write` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:89:28 [INFO] [stdout] | [INFO] [stdout] 89 | Some(b) => try!(b), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:111:28 [INFO] [stdout] | [INFO] [stdout] 111 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:113:17 [INFO] [stdout] | [INFO] [stdout] 113 | try!(parse_request_line( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:122:32 [INFO] [stdout] | [INFO] [stdout] 122 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:147:23 [INFO] [stdout] | [INFO] [stdout] 147 | let request = try!(::request::new_request(self.secure, method, path, version.clone(), [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/client.rs:295:19 [INFO] [stdout] | [INFO] [stdout] 295 | let version = try!(parse_http_version(version)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:171:22 [INFO] [stdout] | [INFO] [stdout] 171 | let header = try!(HeaderField::from_bytes(header).or(Err(()))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:172:21 [INFO] [stdout] | [INFO] [stdout] 172 | let value = try!(AsciiString::from_ascii(value).or(Err(()))); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:198:21 [INFO] [stdout] | [INFO] [stdout] 198 | let value = try!(AsciiString::from_ascii(value.trim()).map_err(|_| () )); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/common.rs:328:36 [INFO] [stdout] | [INFO] [stdout] 328 | let ascii_string = try!(AsciiString::from_ascii(s).map_err(|_| () )); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/request.rs:183:32 [INFO] [stdout] | [INFO] [stdout] 183 | let read = try!(source_data.read(&mut buffer[offset..])); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | try!(write!(&mut writer, "HTTP/{}.{} {} {}\r\n", [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | try!(writer.write_all(header.field.as_str().as_ref())); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | try!(write!(&mut writer, ": ")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | try!(writer.write_all(header.value.as_str().as_ref())); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | try!(write!(&mut writer, "\r\n")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | try!(write!(&mut writer, "\r\n")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:315:17 [INFO] [stdout] | [INFO] [stdout] 315 | try!(self.reader.read_to_end(&mut buf)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:351:9 [INFO] [stdout] | [INFO] [stdout] 351 | try!(write_message_header(writer.by_ref(), &http_version, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:362:21 [INFO] [stdout] | [INFO] [stdout] 362 | try!(io::copy(&mut reader, &mut writer)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/response.rs:374:25 [INFO] [stdout] | [INFO] [stdout] 374 | try!(io::copy(&mut equ_reader, &mut writer)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/lib.rs:230:28 [INFO] [stdout] | [INFO] [stdout] 230 | let listener = try!(net::TcpListener::bind(config.addr)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stdout] --> src/lib.rs:231:30 [INFO] [stdout] | [INFO] [stdout] 231 | let local_addr = try!(listener.local_addr()); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:48:29 [INFO] [stdout] | [INFO] [stdout] 48 | data_reader: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:51:33 [INFO] [stdout] | [INFO] [stdout] 51 | response_writer: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:170:42 [INFO] [stdout] | [INFO] [stdout] 170 | Box::new(source_data) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:174:46 [INFO] [stdout] | [INFO] [stdout] 174 | Box::new(io::empty()) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:195:54 [INFO] [stdout] | [INFO] [stdout] 195 | Box::new(Cursor::new(buffer)) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:199:46 [INFO] [stdout] | [INFO] [stdout] 199 | Box::new(data_reader) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:205:56 [INFO] [stdout] | [INFO] [stdout] 205 | Box::new(Decoder::new(source_data)) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:211:42 [INFO] [stdout] | [INFO] [stdout] 211 | Box::new(io::empty()) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:216:55 [INFO] [stdout] | [INFO] [stdout] 216 | response_writer: Some(Box::new(writer) as Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:287:85 [INFO] [stdout] | [INFO] [stdout] 287 | pub fn upgrade(mut self, protocol: &str, response: Response) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:298:37 [INFO] [stdout] | [INFO] [stdout] 298 | Box::new(stream) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:300:37 [INFO] [stdout] | [INFO] [stdout] 300 | Box::new(stream) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:329:41 [INFO] [stdout] | [INFO] [stdout] 329 | pub fn as_reader(&mut self) -> &mut Read { [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:352:41 [INFO] [stdout] | [INFO] [stdout] 352 | pub fn into_writer(mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:356:37 [INFO] [stdout] | [INFO] [stdout] 356 | Box::new(writer) as Box [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:362:43 [INFO] [stdout] | [INFO] [stdout] 362 | fn into_writer_impl(&mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/request.rs:372:43 [INFO] [stdout] | [INFO] [stdout] 372 | fn into_reader_impl(&mut self) -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:45:37 [INFO] [stdout] | [INFO] [stdout] 45 | pub type ResponseBox = Response>; [INFO] [stdout] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:312:59 [INFO] [stdout] | [INFO] [stdout] 312 | (Some(l), _) => (Box::new(self.reader) as Box, Some(l)), [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:317:52 [INFO] [stdout] | [INFO] [stdout] 317 | (Box::new(Cursor::new(buf)) as Box, Some(l)) [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:319:48 [INFO] [stdout] | [INFO] [stdout] 319 | _ => (Box::new(self.reader) as Box, None), [INFO] [stdout] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/response.rs:326:20 [INFO] [stdout] | [INFO] [stdout] 326 | 100...199 | 204 | 304 => true, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/response.rs:391:50 [INFO] [stdout] | [INFO] [stdout] 391 | reader: Box::new(self.reader) as Box, [INFO] [stdout] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:17:30 [INFO] [stdout] | [INFO] [stdout] 17 | todo: Mutex>>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:69:35 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn spawn(&self, code: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:81:49 [INFO] [stdout] | [INFO] [stdout] 81 | fn add_thread(&self, initial_fn: Option>) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/util/task_pool.rs:94:35 [INFO] [stdout] | [INFO] [stdout] 94 | let mut task: Box = { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:199:51 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn http(addr: A) -> Result> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/lib.rs:222:66 [INFO] [stdout] | [INFO] [stdout] 222 | pub fn new(config: ServerConfig) -> Result> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> examples/websockets.rs:68:21 [INFO] [stdout] | [INFO] [stdout] 68 | request.respond(home_page(port)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> examples/websockets.rs:81:21 [INFO] [stdout] | [INFO] [stdout] 81 | request.respond(response); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> examples/php-cgi.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | let mut writer: &mut Write = &mut *writer; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stdout] --> src/util/mod.rs:33:18 [INFO] [stdout] | [INFO] [stdout] 33 | if p.trim_left().starts_with("q=") { [INFO] [stdout] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stdout] --> src/util/mod.rs:34:44 [INFO] [stdout] | [INFO] [stdout] 34 | match FromStr::from_str(&p.trim_left()[2..].trim()) { [INFO] [stdout] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 2 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 2 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 54 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 7.85s [INFO] running `Command { std: "docker" "inspect" "1dc3fde0166ecabafd9761344c8c9b0a2643c396869b832249d1fbb4c60a4b73", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1dc3fde0166ecabafd9761344c8c9b0a2643c396869b832249d1fbb4c60a4b73", kill_on_drop: false }` [INFO] [stdout] 1dc3fde0166ecabafd9761344c8c9b0a2643c396869b832249d1fbb4c60a4b73 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env@sha256:d9fbb4e2287ab3795bdefaf705efb7541a8875c13bce71e067d6b01dc5ed759b" "/opt/rustwide/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] b7cd5de720a882d4e62f3a5ad406bc13f6509e53336df060aaa78b606aa73ce5 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "b7cd5de720a882d4e62f3a5ad406bc13f6509e53336df060aaa78b606aa73ce5", kill_on_drop: false }` [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:89:28 [INFO] [stderr] | [INFO] [stderr] 89 | Some(b) => try!(b), [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:111:28 [INFO] [stderr] | [INFO] [stderr] 111 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:113:17 [INFO] [stderr] | [INFO] [stderr] 113 | try!(parse_request_line( [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:122:32 [INFO] [stderr] | [INFO] [stderr] 122 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:147:23 [INFO] [stderr] | [INFO] [stderr] 147 | let request = try!(::request::new_request(self.secure, method, path, version.clone(), [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:295:19 [INFO] [stderr] | [INFO] [stderr] 295 | let version = try!(parse_http_version(version)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/common.rs:171:22 [INFO] [stderr] | [INFO] [stderr] 171 | let header = try!(HeaderField::from_bytes(header).or(Err(()))); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/common.rs:172:21 [INFO] [stderr] | [INFO] [stderr] 172 | let value = try!(AsciiString::from_ascii(value).or(Err(()))); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:89:28 [INFO] [stderr] | [INFO] [stderr] 89 | Some(b) => try!(b), [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/common.rs:198:21 [INFO] [stderr] | [INFO] [stderr] 198 | let value = try!(AsciiString::from_ascii(value.trim()).map_err(|_| () )); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/common.rs:328:36 [INFO] [stderr] | [INFO] [stderr] 328 | let ascii_string = try!(AsciiString::from_ascii(s).map_err(|_| () )); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/request.rs:183:32 [INFO] [stderr] | [INFO] [stderr] 183 | let read = try!(source_data.read(&mut buffer[offset..])); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | try!(write!(&mut writer, "HTTP/{}.{} {} {}\r\n", [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | try!(writer.write_all(header.field.as_str().as_ref())); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | try!(write!(&mut writer, ": ")); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | try!(writer.write_all(header.value.as_str().as_ref())); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | try!(write!(&mut writer, "\r\n")); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | try!(write!(&mut writer, "\r\n")); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:315:17 [INFO] [stderr] | [INFO] [stderr] 315 | try!(self.reader.read_to_end(&mut buf)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:351:9 [INFO] [stderr] | [INFO] [stderr] 351 | try!(write_message_header(writer.by_ref(), &http_version, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:362:21 [INFO] [stderr] | [INFO] [stderr] 362 | try!(io::copy(&mut reader, &mut writer)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:374:25 [INFO] [stderr] | [INFO] [stderr] 374 | try!(io::copy(&mut equ_reader, &mut writer)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/lib.rs:230:28 [INFO] [stderr] | [INFO] [stderr] 230 | let listener = try!(net::TcpListener::bind(config.addr)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/lib.rs:231:30 [INFO] [stderr] | [INFO] [stderr] 231 | let local_addr = try!(listener.local_addr()); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:48:29 [INFO] [stderr] | [INFO] [stderr] 48 | data_reader: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:51:33 [INFO] [stderr] | [INFO] [stderr] 51 | response_writer: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:170:42 [INFO] [stderr] | [INFO] [stderr] 170 | Box::new(source_data) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:174:46 [INFO] [stderr] | [INFO] [stderr] 174 | Box::new(io::empty()) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:111:28 [INFO] [stderr] | [INFO] [stderr] 111 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:113:17 [INFO] [stderr] | [INFO] [stderr] 113 | try!(parse_request_line( [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:122:32 [INFO] [stderr] | [INFO] [stderr] 122 | let line = try!(self.read_next_line().map_err(|e| ReadError::ReadIoError(e))); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:195:54 [INFO] [stderr] | [INFO] [stderr] 195 | Box::new(Cursor::new(buffer)) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:147:23 [INFO] [stderr] | [INFO] [stderr] 147 | let request = try!(::request::new_request(self.secure, method, path, version.clone(), [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:199:46 [INFO] [stderr] | [INFO] [stderr] 199 | Box::new(data_reader) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/client.rs:295:19 [INFO] [stderr] | [INFO] [stderr] 295 | let version = try!(parse_http_version(version)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/common.rs:171:22 [INFO] [stderr] | [INFO] [stderr] 171 | let header = try!(HeaderField::from_bytes(header).or(Err(()))); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:205:56 [INFO] [stderr] | [INFO] [stderr] 205 | Box::new(Decoder::new(source_data)) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/common.rs:172:21 [INFO] [stderr] | [INFO] [stderr] 172 | let value = try!(AsciiString::from_ascii(value).or(Err(()))); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/common.rs:198:21 [INFO] [stderr] | [INFO] [stderr] 198 | let value = try!(AsciiString::from_ascii(value.trim()).map_err(|_| () )); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:211:42 [INFO] [stderr] | [INFO] [stderr] 211 | Box::new(io::empty()) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/common.rs:328:36 [INFO] [stderr] | [INFO] [stderr] 328 | let ascii_string = try!(AsciiString::from_ascii(s).map_err(|_| () )); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:216:55 [INFO] [stderr] | [INFO] [stderr] 216 | response_writer: Some(Box::new(writer) as Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/request.rs:183:32 [INFO] [stderr] | [INFO] [stderr] 183 | let read = try!(source_data.read(&mut buffer[offset..])); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:287:85 [INFO] [stderr] | [INFO] [stderr] 287 | pub fn upgrade(mut self, protocol: &str, response: Response) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | try!(write!(&mut writer, "HTTP/{}.{} {} {}\r\n", [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:298:37 [INFO] [stderr] | [INFO] [stderr] 298 | Box::new(stream) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | try!(writer.write_all(header.field.as_str().as_ref())); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | try!(write!(&mut writer, ": ")); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:300:37 [INFO] [stderr] | [INFO] [stderr] 300 | Box::new(stream) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | try!(writer.write_all(header.value.as_str().as_ref())); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:329:41 [INFO] [stderr] | [INFO] [stderr] 329 | pub fn as_reader(&mut self) -> &mut Read { [INFO] [stderr] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | try!(write!(&mut writer, "\r\n")); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:352:41 [INFO] [stderr] | [INFO] [stderr] 352 | pub fn into_writer(mut self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:356:37 [INFO] [stderr] | [INFO] [stderr] 356 | Box::new(writer) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | try!(write!(&mut writer, "\r\n")); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:362:43 [INFO] [stderr] | [INFO] [stderr] 362 | fn into_writer_impl(&mut self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:315:17 [INFO] [stderr] | [INFO] [stderr] 315 | try!(self.reader.read_to_end(&mut buf)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:372:43 [INFO] [stderr] | [INFO] [stderr] 372 | fn into_reader_impl(&mut self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:45:37 [INFO] [stderr] | [INFO] [stderr] 45 | pub type ResponseBox = Response>; [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:312:59 [INFO] [stderr] | [INFO] [stderr] 312 | (Some(l), _) => (Box::new(self.reader) as Box, Some(l)), [INFO] [stderr] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:351:9 [INFO] [stderr] | [INFO] [stderr] 351 | try!(write_message_header(writer.by_ref(), &http_version, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:317:52 [INFO] [stderr] | [INFO] [stderr] 317 | (Box::new(Cursor::new(buf)) as Box, Some(l)) [INFO] [stderr] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:362:21 [INFO] [stderr] | [INFO] [stderr] 362 | try!(io::copy(&mut reader, &mut writer)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:319:48 [INFO] [stderr] | [INFO] [stderr] 319 | _ => (Box::new(self.reader) as Box, None), [INFO] [stderr] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/response.rs:374:25 [INFO] [stderr] | [INFO] [stderr] 374 | try!(io::copy(&mut equ_reader, &mut writer)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: `...` range patterns are deprecated [INFO] [stderr] --> src/response.rs:326:20 [INFO] [stderr] | [INFO] [stderr] 326 | 100...199 | 204 | 304 => true, [INFO] [stderr] | ^^^ help: use `..=` for an inclusive range [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/lib.rs:230:28 [INFO] [stderr] | [INFO] [stderr] 230 | let listener = try!(net::TcpListener::bind(config.addr)); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:391:50 [INFO] [stderr] | [INFO] [stderr] 391 | reader: Box::new(self.reader) as Box, [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/lib.rs:231:30 [INFO] [stderr] | [INFO] [stderr] 231 | let local_addr = try!(listener.local_addr()); [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/util/task_pool.rs:17:30 [INFO] [stderr] | [INFO] [stderr] 17 | todo: Mutex>>, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/util/task_pool.rs:69:35 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn spawn(&self, code: Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:48:29 [INFO] [stderr] | [INFO] [stderr] 48 | data_reader: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/util/task_pool.rs:81:49 [INFO] [stderr] | [INFO] [stderr] 81 | fn add_thread(&self, initial_fn: Option>) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:51:33 [INFO] [stderr] | [INFO] [stderr] 51 | response_writer: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/util/task_pool.rs:94:35 [INFO] [stderr] | [INFO] [stderr] 94 | let mut task: Box = { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:170:42 [INFO] [stderr] | [INFO] [stderr] 170 | Box::new(source_data) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:199:51 [INFO] [stderr] | [INFO] [stderr] 199 | pub fn http(addr: A) -> Result> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:174:46 [INFO] [stderr] | [INFO] [stderr] 174 | Box::new(io::empty()) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:222:66 [INFO] [stderr] | [INFO] [stderr] 222 | pub fn new(config: ServerConfig) -> Result> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stderr] --> src/util/mod.rs:33:18 [INFO] [stderr] | [INFO] [stderr] 33 | if p.trim_left().starts_with("q=") { [INFO] [stderr] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stderr] --> src/util/mod.rs:34:44 [INFO] [stderr] | [INFO] [stderr] 34 | match FromStr::from_str(&p.trim_left()[2..].trim()) { [INFO] [stderr] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stderr] [INFO] [stderr] warning: 54 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:195:54 [INFO] [stderr] | [INFO] [stderr] 195 | Box::new(Cursor::new(buffer)) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:199:46 [INFO] [stderr] | [INFO] [stderr] 199 | Box::new(data_reader) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:205:56 [INFO] [stderr] | [INFO] [stderr] 205 | Box::new(Decoder::new(source_data)) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:211:42 [INFO] [stderr] | [INFO] [stderr] 211 | Box::new(io::empty()) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:216:55 [INFO] [stderr] | [INFO] [stderr] 216 | response_writer: Some(Box::new(writer) as Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:287:85 [INFO] [stderr] | [INFO] [stderr] 287 | pub fn upgrade(mut self, protocol: &str, response: Response) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:298:37 [INFO] [stderr] | [INFO] [stderr] 298 | Box::new(stream) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:300:37 [INFO] [stderr] | [INFO] [stderr] 300 | Box::new(stream) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn ReadWrite + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:329:41 [INFO] [stderr] | [INFO] [stderr] 329 | pub fn as_reader(&mut self) -> &mut Read { [INFO] [stderr] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:352:41 [INFO] [stderr] | [INFO] [stderr] 352 | pub fn into_writer(mut self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:356:37 [INFO] [stderr] | [INFO] [stderr] 356 | Box::new(writer) as Box [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:362:43 [INFO] [stderr] | [INFO] [stderr] 362 | fn into_writer_impl(&mut self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Write + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/request.rs:372:43 [INFO] [stderr] | [INFO] [stderr] 372 | fn into_reader_impl(&mut self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:45:37 [INFO] [stderr] | [INFO] [stderr] 45 | pub type ResponseBox = Response>; [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:312:59 [INFO] [stderr] | [INFO] [stderr] 312 | (Some(l), _) => (Box::new(self.reader) as Box, Some(l)), [INFO] [stderr] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:317:52 [INFO] [stderr] | [INFO] [stderr] 317 | (Box::new(Cursor::new(buf)) as Box, Some(l)) [INFO] [stderr] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:319:48 [INFO] [stderr] | [INFO] [stderr] 319 | _ => (Box::new(self.reader) as Box, None), [INFO] [stderr] | ^^^^ help: use `dyn`: `dyn Read` [INFO] [stderr] [INFO] [stderr] warning: `...` range patterns are deprecated [INFO] [stderr] --> src/response.rs:326:20 [INFO] [stderr] | [INFO] [stderr] 326 | 100...199 | 204 | 304 => true, [INFO] [stderr] | ^^^ help: use `..=` for an inclusive range [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/response.rs:391:50 [INFO] [stderr] | [INFO] [stderr] 391 | reader: Box::new(self.reader) as Box, [INFO] [stderr] | ^^^^^^^^^^^ help: use `dyn`: `dyn Read + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/util/task_pool.rs:17:30 [INFO] [stderr] | [INFO] [stderr] 17 | todo: Mutex>>, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/util/task_pool.rs:69:35 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn spawn(&self, code: Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/util/task_pool.rs:81:49 [INFO] [stderr] | [INFO] [stderr] 81 | fn add_thread(&self, initial_fn: Option>) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/util/task_pool.rs:94:35 [INFO] [stderr] | [INFO] [stderr] 94 | let mut task: Box = { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut() + Send` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:199:51 [INFO] [stderr] | [INFO] [stderr] 199 | pub fn http(addr: A) -> Result> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:222:66 [INFO] [stderr] | [INFO] [stderr] 222 | pub fn new(config: ServerConfig) -> Result> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Error + Send + Sync + 'static` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stderr] --> src/util/mod.rs:33:18 [INFO] [stderr] | [INFO] [stderr] 33 | if p.trim_left().starts_with("q=") { [INFO] [stderr] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'core::str::::trim_left': superseded by `trim_start` [INFO] [stderr] --> src/util/mod.rs:34:44 [INFO] [stderr] | [INFO] [stderr] 34 | match FromStr::from_str(&p.trim_left()[2..].trim()) { [INFO] [stderr] | ^^^^^^^^^ help: replace the use of the deprecated item: `trim_start` [INFO] [stderr] [INFO] [stderr] warning: 54 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> examples/websockets.rs:68:21 [INFO] [stderr] | [INFO] [stderr] 68 | request.respond(home_page(port)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> examples/websockets.rs:81:21 [INFO] [stderr] | [INFO] [stderr] 81 | request.respond(response); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: 2 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> examples/php-cgi.rs:49:34 [INFO] [stderr] | [INFO] [stderr] 49 | let mut writer: &mut Write = &mut *writer; [INFO] [stderr] | ^^^^^ help: use `dyn`: `dyn Write` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> examples/php-cgi.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | let mut writer: &mut Write = &mut *writer; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 2 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> examples/readme-example.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | request.respond(response); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: 1 warning emitted [INFO] [stderr] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.04s [INFO] [stderr] Running /opt/rustwide/target/debug/deps/tiny_http-f554fa12fb6fbf91 [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test common::test::test_parse_header_with_doublecolon ... ok [INFO] [stdout] test client::test::test_parse_request_line ... ok [INFO] [stdout] test common::test::test_parse_header ... ok [INFO] [stdout] test util::equal_reader::tests::test_limit ... ok [INFO] [stdout] test util::equal_reader::tests::test_not_enough ... ok [INFO] [stderr] Running /opt/rustwide/target/debug/deps/input_tests-4542f7c7feecea57 [INFO] [stdout] test request::tests::must_be_send ... ok [INFO] [stdout] test util::test::test_parse_header ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test unsupported_expect_header ... ok [INFO] [stdout] test wrong_content_length ... ok [INFO] [stdout] test basic_string_input ... ok [INFO] [stdout] test expect_100_continue ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/network-c757262bb6e347b4 [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test server_crash_results_in_response ... ok [INFO] [stdout] test chunked_threshold ... ok [INFO] [stdout] test http_1_0_connection_close ... ok [INFO] [stdout] test pipelining_test ... ok [INFO] [stdout] test responses_reordered ... ok [INFO] [stdout] test poor_network_test ... ok [INFO] [stdout] test detect_connection_closed ... ok [INFO] [stdout] test connection_close_header ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/simple_test-9b6cfc1643680ab7 [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test basic_handling ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Doc-tests tiny_http [INFO] [stderr] warning: `...` range patterns are deprecated [INFO] [stderr] --> /opt/rustwide/workdir/src/response.rs:326:20 [INFO] [stderr] | [INFO] [stderr] 326 | 100...199 | 204 | 304 => true, [INFO] [stderr] | ^^^ help: use `..=` for an inclusive range [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: 1 warning emitted [INFO] [stderr] [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test src/lib.rs - (line 74) ... ok [INFO] [stdout] test src/lib.rs - (line 23) ... ok [INFO] [stdout] test src/lib.rs - (line 11) ... ok [INFO] [stdout] test src/lib.rs - (line 41) ... ok [INFO] [stdout] test src/lib.rs - (line 82) ... ok [INFO] [stdout] test src/request.rs - request::Request::as_reader (line 308) ... ok [INFO] [stdout] test src/common.rs - common::Header::from_bytes (line 164) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "b7cd5de720a882d4e62f3a5ad406bc13f6509e53336df060aaa78b606aa73ce5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b7cd5de720a882d4e62f3a5ad406bc13f6509e53336df060aaa78b606aa73ce5", kill_on_drop: false }` [INFO] [stdout] b7cd5de720a882d4e62f3a5ad406bc13f6509e53336df060aaa78b606aa73ce5