[INFO] crate salvo 0.1.0 is already in cache [INFO] checking salvo-0.1.0 against master#212aa3ea28d91a97d1e1261709c0b6e6790788e6 for pr-69340 [INFO] extracting crate salvo 0.1.0 into /workspace/builds/worker-13/source [INFO] validating manifest of crates.io crate salvo 0.1.0 on toolchain 212aa3ea28d91a97d1e1261709c0b6e6790788e6 [INFO] running `"/workspace/cargo-home/bin/cargo" "+212aa3ea28d91a97d1e1261709c0b6e6790788e6" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking crates.io crate salvo 0.1.0 [INFO] finished tweaking crates.io crate salvo 0.1.0 [INFO] tweaked toml for crates.io crate salvo 0.1.0 written to /workspace/builds/worker-13/source/Cargo.toml [INFO] running `"/workspace/cargo-home/bin/cargo" "+212aa3ea28d91a97d1e1261709c0b6e6790788e6" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `"/workspace/cargo-home/bin/cargo" "+212aa3ea28d91a97d1e1261709c0b6e6790788e6" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-13/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+212aa3ea28d91a97d1e1261709c0b6e6790788e6" "check" "--frozen" "--all" "--all-targets"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 31c9ffcb8b2a1b5a1dde521de2a49961318e5ae21a1fd8f5d52c8259d393251b [INFO] running `"docker" "start" "-a" "31c9ffcb8b2a1b5a1dde521de2a49961318e5ae21a1fd8f5d52c8259d393251b"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling slog v2.5.2 [INFO] [stderr] Checking unchecked-index v0.2.2 [INFO] [stderr] Checking display_bytes v0.2.1 [INFO] [stderr] Checking atomic_refcell v0.1.6 [INFO] [stderr] Checking double-checked-cell v2.0.2 [INFO] [stderr] Checking nom v4.2.3 [INFO] [stderr] Compiling syn v1.0.14 [INFO] [stderr] Checking chrono v0.4.10 [INFO] [stderr] Checking serde-hjson v0.8.2 [INFO] [stderr] Checking buf-read-ext v0.3.0 [INFO] [stderr] Checking twoway v0.2.1 [INFO] [stderr] Checking slog-term v2.5.0 [INFO] [stderr] Compiling serde_derive v1.0.104 [INFO] [stderr] Compiling proc-macro-hack v0.5.11 [INFO] [stderr] Compiling tokio-macros v0.2.4 [INFO] [stderr] Compiling pin-project-internal v0.4.8 [INFO] [stderr] Compiling salvo_macros v0.1.0 [INFO] [stderr] Compiling async-trait v0.1.24 [INFO] [stderr] Checking tokio v0.2.11 [INFO] [stderr] Compiling futures-macro v0.3.4 [INFO] [stderr] Checking futures-util v0.3.4 [INFO] [stderr] Checking pin-project v0.4.8 [INFO] [stderr] Checking tokio-util v0.2.0 [INFO] [stderr] Checking futures-executor v0.3.4 [INFO] [stderr] Checking double-checked-cell-async v2.0.2 [INFO] [stderr] Checking h2 v0.2.1 [INFO] [stderr] Checking serde v1.0.104 [INFO] [stderr] Checking futures v0.3.4 [INFO] [stderr] Checking hyper v0.13.2 [INFO] [stderr] Checking toml v0.4.10 [INFO] [stderr] Checking serde_json v1.0.48 [INFO] [stderr] Checking multimap v0.8.0 [INFO] [stderr] Checking textnonce v0.6.5 [INFO] [stderr] Checking serde_cbor v0.10.2 [INFO] [stderr] Checking serde_urlencoded v0.5.5 [INFO] [stderr] Checking config v0.9.3 [INFO] [stderr] Checking salvo v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused imports: `Context`, `Poll` [INFO] [stderr] --> src/handler.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | use std::task::{Context, Poll}; [INFO] [stderr] | ^^^^^^^ ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::future::Future` [INFO] [stderr] --> src/handler.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::future::Future; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures_util::future` [INFO] [stderr] --> src/handler.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use futures_util::future; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::future::FutureExt` [INFO] [stderr] --> src/handler.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use futures::future::FutureExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `RefCell`, `Ref` [INFO] [stderr] --> src/http/request.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | use std::cell::{RefCell, Ref}; [INFO] [stderr] | ^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Cursor` [INFO] [stderr] --> src/http/request.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::io::Cursor; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `hyper::body::HttpBody` [INFO] [stderr] --> src/http/request.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use hyper::body::HttpBody; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tokio::runtime::Runtime` [INFO] [stderr] --> src/http/request.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use tokio::runtime::Runtime; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::http::multipart::Multipart` [INFO] [stderr] --> src/http/request.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | use crate::http::multipart::Multipart; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AtomicRefCell`, `AtomicRef` [INFO] [stderr] --> src/http/request.rs:29:22 [INFO] [stderr] | [INFO] [stderr] 29 | use atomic_refcell::{AtomicRefCell, AtomicRef}; [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::Future` [INFO] [stderr] --> src/http/body_chunk.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use futures::Future; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::process::Output` [INFO] [stderr] --> src/http/body_chunk.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use std::process::Output; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::Utf8Error` [INFO] [stderr] --> src/http/body_chunk.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | use std::str::Utf8Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `fmt`, `io`, `ops` [INFO] [stderr] --> src/http/body_chunk.rs:26:11 [INFO] [stderr] | [INFO] [stderr] 26 | use std::{fmt, io, ops}; [INFO] [stderr] | ^^^ ^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Stream`, `TryStream` [INFO] [stderr] --> src/http/form.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | use futures::{Stream, TryStream}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `hyper::body::Bytes` [INFO] [stderr] --> src/http/form.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use hyper::body::Bytes; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Request` [INFO] [stderr] --> src/http/form.rs:17:34 [INFO] [stderr] | [INFO] [stderr] 17 | use crate::http::request::{self, Request}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `CONTENT_DISPOSITION`, `CONTENT_TYPE`, `HeaderValue` [INFO] [stderr] --> src/http/form.rs:20:27 [INFO] [stderr] | [INFO] [stderr] 20 | use crate::http::header::{HeaderValue, HeaderMap, CONTENT_DISPOSITION, CONTENT_TYPE}; [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/http/multipart/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::Utf8Error` [INFO] [stderr] --> src/http/multipart/mod.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::str::Utf8Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/http/multipart/mod.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | use std::task::{self, Poll, Context}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Future` [INFO] [stderr] --> src/http/multipart/mod.rs:5:15 [INFO] [stderr] | [INFO] [stderr] 5 | use futures::{Future, Stream, TryStream}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `http::Method` [INFO] [stderr] --> src/http/multipart/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use http::Method; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/http/multipart/helpers.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/http/multipart/mod.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | / macro_rules! ret_ok( [INFO] [stderr] 35 | | ($expr:expr) => (return Ok($expr).into()); [INFO] [stderr] 36 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_macros)]` on by default [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `crate::http::multipart::Error` [INFO] [stderr] --> src/http/multipart/boundary.rs:562:9 [INFO] [stderr] | [INFO] [stderr] 562 | use crate::http::multipart::Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `Error` in `http::multipart` [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `crate::test_util` [INFO] [stderr] --> src/http/multipart/boundary.rs:564:16 [INFO] [stderr] | [INFO] [stderr] 564 | use crate::test_util::*; [INFO] [stderr] | ^^^^^^^^^ maybe a missing crate `test_util`? [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `crate::test_util` [INFO] [stderr] --> src/http/multipart/mod.rs:317:16 [INFO] [stderr] | [INFO] [stderr] 317 | use crate::test_util::mock_stream; [INFO] [stderr] | ^^^^^^^^^ maybe a missing crate `test_util`? [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `crate::test_util` [INFO] [stderr] --> src/http/multipart/field/headers.rs:582:16 [INFO] [stderr] | [INFO] [stderr] 582 | use crate::test_util::mock_stream; [INFO] [stderr] | ^^^^^^^^^ maybe a missing crate `test_util`? [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `crate::test_util` [INFO] [stderr] --> src/http/multipart/field/mod.rs:281:16 [INFO] [stderr] | [INFO] [stderr] 281 | use crate::test_util::assert_unpin; [INFO] [stderr] | ^^^^^^^^^ maybe a missing crate `test_util`? [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `crate::test_util` [INFO] [stderr] --> src/http/multipart/field/mod.rs:292:16 [INFO] [stderr] | [INFO] [stderr] 292 | use crate::test_util::mock_stream; [INFO] [stderr] | ^^^^^^^^^ maybe a missing crate `test_util`? [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:570:9 [INFO] [stderr] | [INFO] [stderr] 570 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:578:9 [INFO] [stderr] | [INFO] [stderr] 578 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:579:9 [INFO] [stderr] | [INFO] [stderr] 579 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:587:9 [INFO] [stderr] | [INFO] [stderr] 587 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:604:9 [INFO] [stderr] | [INFO] [stderr] 604 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:605:9 [INFO] [stderr] | [INFO] [stderr] 605 | ready_assert_eq!(|cx| finder.as_mut().body_chunk(cx), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:624:9 [INFO] [stderr] | [INFO] [stderr] 624 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:625:9 [INFO] [stderr] | [INFO] [stderr] 625 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:629:9 [INFO] [stderr] | [INFO] [stderr] 629 | ready_assert_eq!(|cx| finder.as_mut().body_chunk(cx), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:630:9 [INFO] [stderr] | [INFO] [stderr] 630 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:647:9 [INFO] [stderr] | [INFO] [stderr] 647 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:648:9 [INFO] [stderr] | [INFO] [stderr] 648 | ready_assert_eq!(|cx| finder.as_mut().body_chunk(cx), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:649:9 [INFO] [stderr] | [INFO] [stderr] 649 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:650:9 [INFO] [stderr] | [INFO] [stderr] 650 | ready_assert_eq!(|cx| finder.as_mut().body_chunk(cx), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:651:9 [INFO] [stderr] | [INFO] [stderr] 651 | ready_assert_eq!(|cx| finder.as_mut().consume_boundary(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `until_ready` in this scope [INFO] [stderr] --> src/http/multipart/field/headers.rs:597:9 [INFO] [stderr] | [INFO] [stderr] 597 | until_ready!(|cx| read_headers.read_headers(stream.as_mut(), cx)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/field/mod.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/field/mod.rs:316:5 [INFO] [stderr] | [INFO] [stderr] 316 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:329:9 [INFO] [stderr] | [INFO] [stderr] 329 | ready_assert_eq!(|cx| multipart.as_mut().poll_has_next_field(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:340:9 [INFO] [stderr] | [INFO] [stderr] 340 | ready_assert_eq!(|cx| multipart.as_mut().poll_has_next_field(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `until_ready` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:341:9 [INFO] [stderr] | [INFO] [stderr] 341 | until_ready!(|cx| multipart.as_mut().poll_field_headers(cx)).unwrap_err(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:342:9 [INFO] [stderr] | [INFO] [stderr] 342 | ready_assert_eq!(|cx| multipart.as_mut().poll_has_next_field(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:364:9 [INFO] [stderr] | [INFO] [stderr] 364 | ready_assert_eq!(|cx| multipart.as_mut().poll_has_next_field(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:376:9 [INFO] [stderr] | [INFO] [stderr] 376 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:381:9 [INFO] [stderr] | [INFO] [stderr] 381 | ready_assert_eq!(|cx| multipart.as_mut().poll_field_chunk(cx), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:382:9 [INFO] [stderr] | [INFO] [stderr] 382 | ready_assert_eq!(|cx| multipart.as_mut().poll_has_next_field(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:417:9 [INFO] [stderr] | [INFO] [stderr] 417 | ready_assert_eq!(|cx| multipart.as_mut().poll_has_next_field(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:419:9 [INFO] [stderr] | [INFO] [stderr] 419 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:429:9 [INFO] [stderr] | [INFO] [stderr] 429 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:433:9 [INFO] [stderr] | [INFO] [stderr] 433 | ready_assert_eq!(|cx| multipart.as_mut().poll_field_chunk(cx), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:435:9 [INFO] [stderr] | [INFO] [stderr] 435 | ready_assert_eq!(|cx| multipart.as_mut().poll_has_next_field(cx), Ok(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:437:9 [INFO] [stderr] | [INFO] [stderr] 437 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:447:9 [INFO] [stderr] | [INFO] [stderr] 447 | ready_assert_eq!( [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:451:9 [INFO] [stderr] | [INFO] [stderr] 451 | ready_assert_eq!(|cx| multipart.as_mut().poll_field_chunk(cx), None); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `ready_assert_eq` in this scope [INFO] [stderr] --> src/http/multipart/mod.rs:453:9 [INFO] [stderr] | [INFO] [stderr] 453 | ready_assert_eq!(|cx| multipart.as_mut().poll_has_next_field(cx), Ok(false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: a macro with a similar name exists: `debug_assert_eq` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/boundary.rs:575:19 [INFO] [stderr] | [INFO] [stderr] 575 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/boundary.rs:584:19 [INFO] [stderr] | [INFO] [stderr] 584 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/boundary.rs:598:19 [INFO] [stderr] | [INFO] [stderr] 598 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/boundary.rs:611:19 [INFO] [stderr] | [INFO] [stderr] 611 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/boundary.rs:635:19 [INFO] [stderr] | [INFO] [stderr] 635 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/field/mod.rs:295:15 [INFO] [stderr] | [INFO] [stderr] 295 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/mod.rs:326:19 [INFO] [stderr] | [INFO] [stderr] 326 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/mod.rs:334:19 [INFO] [stderr] | [INFO] [stderr] 334 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/mod.rs:347:19 [INFO] [stderr] | [INFO] [stderr] 347 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0433]: failed to resolve: could not find `env_logger` in `{{root}}` [INFO] [stderr] --> src/http/multipart/mod.rs:387:19 [INFO] [stderr] | [INFO] [stderr] 387 | let _ = ::env_logger::try_init(); [INFO] [stderr] | ^^^^^^^^^^ could not find `env_logger` in `{{root}}` [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `mock_stream` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:568:42 [INFO] [stderr] | [INFO] [stderr] 568 | let finder = BoundaryFinder::new(mock_stream(&[]), BOUNDARY); [INFO] [stderr] | ^^^^^^^^^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find value `BOUNDARY` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:568:60 [INFO] [stderr] | [INFO] [stderr] 568 | let finder = BoundaryFinder::new(mock_stream(&[]), BOUNDARY); [INFO] [stderr] | ^^^^^^^^ not found in this scope [INFO] [stderr] | [INFO] [stderr] help: possible candidates are found in other modules, you can import them into scope [INFO] [stderr] | [INFO] [stderr] 560 | use crate::http::multipart::test::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] 560 | use mime::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `mock_stream` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:576:42 [INFO] [stderr] | [INFO] [stderr] 576 | let finder = BoundaryFinder::new(mock_stream(&[b"--boundary\r\n"]), BOUNDARY); [INFO] [stderr] | ^^^^^^^^^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find value `BOUNDARY` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:576:77 [INFO] [stderr] | [INFO] [stderr] 576 | let finder = BoundaryFinder::new(mock_stream(&[b"--boundary\r\n"]), BOUNDARY); [INFO] [stderr] | ^^^^^^^^ not found in this scope [INFO] [stderr] | [INFO] [stderr] help: possible candidates are found in other modules, you can import them into scope [INFO] [stderr] | [INFO] [stderr] 560 | use crate::http::multipart::test::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] 560 | use mime::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `mock_stream` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:585:42 [INFO] [stderr] | [INFO] [stderr] 585 | let finder = BoundaryFinder::new(mock_stream(&[b"--bound"]), BOUNDARY); [INFO] [stderr] | ^^^^^^^^^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find value `BOUNDARY` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:585:70 [INFO] [stderr] | [INFO] [stderr] 585 | let finder = BoundaryFinder::new(mock_stream(&[b"--bound"]), BOUNDARY); [INFO] [stderr] | ^^^^^^^^ not found in this scope [INFO] [stderr] | [INFO] [stderr] help: possible candidates are found in other modules, you can import them into scope [INFO] [stderr] | [INFO] [stderr] 560 | use crate::http::multipart::test::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] 560 | use mime::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `mock_stream` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:600:13 [INFO] [stderr] | [INFO] [stderr] 600 | mock_stream(&[b"--boundary", b"\r\n", b"\r\n", b"--boundary--"]), [INFO] [stderr] | ^^^^^^^^^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find value `BOUNDARY` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:601:13 [INFO] [stderr] | [INFO] [stderr] 601 | BOUNDARY, [INFO] [stderr] | ^^^^^^^^ not found in this scope [INFO] [stderr] | [INFO] [stderr] help: possible candidates are found in other modules, you can import them into scope [INFO] [stderr] | [INFO] [stderr] 560 | use crate::http::multipart::test::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] 560 | use mime::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `mock_stream` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:613:13 [INFO] [stderr] | [INFO] [stderr] 613 | mock_stream(&[ [INFO] [stderr] | ^^^^^^^^^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find value `BOUNDARY` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:620:13 [INFO] [stderr] | [INFO] [stderr] 620 | BOUNDARY, [INFO] [stderr] | ^^^^^^^^ not found in this scope [INFO] [stderr] | [INFO] [stderr] help: possible candidates are found in other modules, you can import them into scope [INFO] [stderr] | [INFO] [stderr] 560 | use crate::http::multipart::test::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] 560 | use mime::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `mock_stream` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:637:13 [INFO] [stderr] | [INFO] [stderr] 637 | mock_stream(&[ [INFO] [stderr] | ^^^^^^^^^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find value `BOUNDARY` in this scope [INFO] [stderr] --> src/http/multipart/boundary.rs:644:13 [INFO] [stderr] | [INFO] [stderr] 644 | BOUNDARY, [INFO] [stderr] | ^^^^^^^^ not found in this scope [INFO] [stderr] | [INFO] [stderr] help: possible candidates are found in other modules, you can import them into scope [INFO] [stderr] | [INFO] [stderr] 560 | use crate::http::multipart::test::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] 560 | use mime::BOUNDARY; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Context`, `Poll` [INFO] [stderr] --> src/handler.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | use std::task::{Context, Poll}; [INFO] [stderr] | ^^^^^^^ ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::future::Future` [INFO] [stderr] --> src/handler.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::future::Future; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures_util::future` [INFO] [stderr] --> src/handler.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use futures_util::future; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::future::FutureExt` [INFO] [stderr] --> src/handler.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use futures::future::FutureExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `RefCell`, `Ref` [INFO] [stderr] --> src/http/request.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | use std::cell::{RefCell, Ref}; [INFO] [stderr] | ^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Cursor` [INFO] [stderr] --> src/http/request.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::io::Cursor; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `hyper::body::HttpBody` [INFO] [stderr] --> src/http/request.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use hyper::body::HttpBody; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tokio::runtime::Runtime` [INFO] [stderr] --> src/http/request.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use tokio::runtime::Runtime; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::ToSocketAddrs` [INFO] [stderr] --> src/http/request.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::net::ToSocketAddrs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::http::multipart::Multipart` [INFO] [stderr] --> src/http/request.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | use crate::http::multipart::Multipart; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AtomicRefCell`, `AtomicRef` [INFO] [stderr] --> src/http/request.rs:29:22 [INFO] [stderr] | [INFO] [stderr] 29 | use atomic_refcell::{AtomicRefCell, AtomicRef}; [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::Future` [INFO] [stderr] --> src/http/body_chunk.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use futures::Future; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::process::Output` [INFO] [stderr] --> src/http/body_chunk.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use std::process::Output; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::Utf8Error` [INFO] [stderr] --> src/http/body_chunk.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | use std::str::Utf8Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `fmt`, `io`, `ops` [INFO] [stderr] --> src/http/body_chunk.rs:26:11 [INFO] [stderr] | [INFO] [stderr] 26 | use std::{fmt, io, ops}; [INFO] [stderr] | ^^^ ^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Stream`, `TryStream` [INFO] [stderr] --> src/http/form.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | use futures::{Stream, TryStream}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `hyper::body::Bytes` [INFO] [stderr] --> src/http/form.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use hyper::body::Bytes; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Request` [INFO] [stderr] --> src/http/form.rs:17:34 [INFO] [stderr] | [INFO] [stderr] 17 | use crate::http::request::{self, Request}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `CONTENT_DISPOSITION`, `CONTENT_TYPE`, `HeaderValue` [INFO] [stderr] --> src/http/form.rs:20:27 [INFO] [stderr] | [INFO] [stderr] 20 | use crate::http::header::{HeaderValue, HeaderMap, CONTENT_DISPOSITION, CONTENT_TYPE}; [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/http/multipart/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::Utf8Error` [INFO] [stderr] --> src/http/multipart/mod.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::str::Utf8Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/http/multipart/mod.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | use std::task::{self, Poll, Context}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Future` [INFO] [stderr] --> src/http/multipart/mod.rs:5:15 [INFO] [stderr] | [INFO] [stderr] 5 | use futures::{Future, Stream, TryStream}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `http::Method` [INFO] [stderr] --> src/http/multipart/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use http::Method; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/http/multipart/helpers.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/http/multipart/mod.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | / macro_rules! ret_ok( [INFO] [stderr] 35 | | ($expr:expr) => (return Ok($expr).into()); [INFO] [stderr] 36 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_macros)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures_util::TryFutureExt` [INFO] [stderr] --> src/http/multipart/field/mod.rs:293:9 [INFO] [stderr] | [INFO] [stderr] 293 | use futures_util::TryFutureExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::http::multipart::FieldHeaders` [INFO] [stderr] --> src/http/multipart/mod.rs:316:9 [INFO] [stderr] | [INFO] [stderr] 316 | use crate::http::multipart::FieldHeaders; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::convert::Infallible` [INFO] [stderr] --> src/http/multipart/mod.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | use std::convert::Infallible; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:71:40 [INFO] [stderr] | [INFO] [stderr] 71 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:73:40 [INFO] [stderr] | [INFO] [stderr] 73 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:75:40 [INFO] [stderr] | [INFO] [stderr] 75 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:77:40 [INFO] [stderr] | [INFO] [stderr] 77 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:79:40 [INFO] [stderr] | [INFO] [stderr] 79 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:81:40 [INFO] [stderr] | [INFO] [stderr] 81 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:83:40 [INFO] [stderr] | [INFO] [stderr] 83 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:86:23 [INFO] [stderr] | [INFO] [stderr] 86 | _ => self.description().to_string().fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:93:28 [INFO] [stderr] | [INFO] [stderr] 93 | f.write_str(&*self.description()).ok(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:92:42 [INFO] [stderr] | [INFO] [stderr] 92 | format!("{}: {:?}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:94:42 [INFO] [stderr] | [INFO] [stderr] 94 | format!("{}: {:?}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:96:40 [INFO] [stderr] | [INFO] [stderr] 96 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:98:40 [INFO] [stderr] | [INFO] [stderr] 98 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:100:40 [INFO] [stderr] | [INFO] [stderr] 100 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:102:40 [INFO] [stderr] | [INFO] [stderr] 102 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:103:37 [INFO] [stderr] | [INFO] [stderr] 103 | _ => format!("{}", self.description()).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:110:28 [INFO] [stderr] | [INFO] [stderr] 110 | f.write_str(&*self.description()).ok(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::future::FutureExt` [INFO] [stderr] --> src/server.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use futures::future::FutureExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `hyper::body::HttpBody` [INFO] [stderr] --> src/http/form.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use hyper::body::HttpBody; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::helpers` [INFO] [stderr] --> src/http/multipart/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use self::helpers::*; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `len` [INFO] [stderr] --> src/http/multipart/boundary.rs:521:9 [INFO] [stderr] | [INFO] [stderr] 521 | let len = boundary.len(); [INFO] [stderr] | ^^^ help: consider prefixing with an underscore: `_len` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `replace_default` [INFO] [stderr] --> src/http/multipart/helpers.rs:15:8 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn replace_default(dest: &mut T) -> T { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `PollOpt` [INFO] [stderr] --> src/http/multipart/boundary.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | pub type PollOpt = Poll>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `multipart` [INFO] [stderr] --> src/http/multipart/field/mod.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | fn multipart(&mut self) -> Option>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/http/form.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | file.write_all(chunk.as_slice()); [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: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:71:40 [INFO] [stderr] | [INFO] [stderr] 71 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:73:40 [INFO] [stderr] | [INFO] [stderr] 73 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:75:40 [INFO] [stderr] | [INFO] [stderr] 75 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:77:40 [INFO] [stderr] | [INFO] [stderr] 77 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:79:40 [INFO] [stderr] | [INFO] [stderr] 79 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:81:40 [INFO] [stderr] | [INFO] [stderr] 81 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:83:40 [INFO] [stderr] | [INFO] [stderr] 83 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:86:23 [INFO] [stderr] | [INFO] [stderr] 86 | _ => self.description().to_string().fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/error.rs:93:28 [INFO] [stderr] | [INFO] [stderr] 93 | f.write_str(&*self.description()).ok(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/mod.rs:336:42 [INFO] [stderr] | [INFO] [stderr] 336 | mock_stream(&[b"--boundary", b"\r\n", b"\r\n", b"--boundary--"]), [INFO] [stderr] | ^^^^^^^ expected an array with a fixed size of 10 elements, found one with 2 elements [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[u8; 10]` [INFO] [stderr] found reference `&'static [u8; 2]` [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/mod.rs:351:17 [INFO] [stderr] | [INFO] [stderr] 351 | b"\n", [INFO] [stderr] | ^^^^^ expected an array with a fixed size of 11 elements, found one with 1 element [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[u8; 11]` [INFO] [stderr] found reference `&'static [u8; 1]` [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/mod.rs:391:17 [INFO] [stderr] | [INFO] [stderr] 391 | b"\n", [INFO] [stderr] | ^^^^^ expected an array with a fixed size of 11 elements, found one with 1 element [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[u8; 11]` [INFO] [stderr] found reference `&'static [u8; 1]` [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/boundary.rs:600:42 [INFO] [stderr] | [INFO] [stderr] 600 | mock_stream(&[b"--boundary", b"\r\n", b"\r\n", b"--boundary--"]), [INFO] [stderr] | ^^^^^^^ expected an array with a fixed size of 10 elements, found one with 2 elements [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[u8; 10]` [INFO] [stderr] found reference `&'static [u8; 2]` [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/boundary.rs:615:17 [INFO] [stderr] | [INFO] [stderr] 615 | b"\r\n", [INFO] [stderr] | ^^^^^^^ expected an array with a fixed size of 10 elements, found one with 2 elements [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[u8; 10]` [INFO] [stderr] found reference `&'static [u8; 2]` [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/boundary.rs:639:17 [INFO] [stderr] | [INFO] [stderr] 639 | b"\r\n", [INFO] [stderr] | ^^^^^^^ expected an array with a fixed size of 10 elements, found one with 2 elements [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[u8; 10]` [INFO] [stderr] found reference `&'static [u8; 2]` [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/field/mod.rs:297:45 [INFO] [stderr] | [INFO] [stderr] 297 | let test_data = mock_stream(&[b"Hello", b",", b" ", b"world!"]); [INFO] [stderr] | ^^^^ expected an array with a fixed size of 5 elements, found one with 1 element [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[u8; 5]` [INFO] [stderr] found reference `&'static [u8; 1]` [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved imports `salvo::http::Status`, `salvo::response` [INFO] [stderr] --> tests/hello_world.rs:5:13 [INFO] [stderr] | [INFO] [stderr] 5 | use salvo::{http::Status, response::content}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^ could not find `response` in `salvo` [INFO] [stderr] | | [INFO] [stderr] | no `Status` in `http` [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `salvo::Route` [INFO] [stderr] --> tests/hello_world.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | use salvo::Route; [INFO] [stderr] | ^^^^^^^----- [INFO] [stderr] | | | [INFO] [stderr] | | help: a similar name exists in the module: `Router` [INFO] [stderr] | no `Route` in the root [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `salvo::local` [INFO] [stderr] --> tests/hello_world.rs:17:16 [INFO] [stderr] | [INFO] [stderr] 17 | use salvo::local::Client; [INFO] [stderr] | ^^^^^ could not find `local` in `salvo` [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved imports `salvo::http::Status`, `salvo::http::ContentType` [INFO] [stderr] --> tests/hello_world.rs:18:23 [INFO] [stderr] | [INFO] [stderr] 18 | use salvo::http::{Status, ContentType}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ no `ContentType` in `http` [INFO] [stderr] | | [INFO] [stderr] | no `Status` in `http` [INFO] [stderr] [INFO] [stderr] error[E0432]: unresolved import `salvo::response` [INFO] [stderr] --> tests/hello_world.rs:19:16 [INFO] [stderr] | [INFO] [stderr] 19 | use salvo::response::Body; [INFO] [stderr] | ^^^^^^^^ could not find `response` in `salvo` [INFO] [stderr] [INFO] [stderr] error: cannot find macro `routes` in this scope [INFO] [stderr] --> tests/hello_world.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | routes![index, empty, other] [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/field/mod.rs:308:9 [INFO] [stderr] | [INFO] [stderr] 308 | &[175, 194, 176, 226, 150], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected an array with a fixed size of 3 elements, found one with 5 elements [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[{integer}; 3]` [INFO] [stderr] found reference `&[{integer}; 5]` [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `ignite` in crate `salvo` [INFO] [stderr] --> tests/hello_world.rs:27:41 [INFO] [stderr] | [INFO] [stderr] 27 | let client = Client::new(salvo::ignite().mount("/", routes())).unwrap(); [INFO] [stderr] | ^^^^^^ not found in `salvo` [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `assert_empty_sized_body` in this scope [INFO] [stderr] --> tests/hello_world.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | assert_empty_sized_body(response.body().unwrap(), 17); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> tests/hello_world.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #[macro_use] extern crate salvo; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Read` [INFO] [stderr] --> tests/hello_world.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | use std::io::Read; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:410:5 [INFO] [stderr] | [INFO] [stderr] 410 | / assert_eq!( [INFO] [stderr] 411 | | parse_headers(b"Content-Disposition: form-data; name = \"field\"\r\n\r\n"), [INFO] [stderr] 412 | | Ok(FieldHeaders { [INFO] [stderr] 413 | | name: "field".into(), [INFO] [stderr] 414 | | ..FieldHeaders::default() [INFO] [stderr] 415 | | }) [INFO] [stderr] 416 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] Some errors have detailed explanations: E0425, E0432. [INFO] [stderr] For more information about an error, try `rustc --explain E0425`. [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:418:5 [INFO] [stderr] | [INFO] [stderr] 418 | / assert_eq!( [INFO] [stderr] 419 | | parse_headers( [INFO] [stderr] 420 | | b"Content-Disposition: form-data; name = \"field\"\r\n\ [INFO] [stderr] 421 | | Content-Type: application/octet-stream\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 427 | | }) [INFO] [stderr] 428 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: could not compile `salvo`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:430:5 [INFO] [stderr] | [INFO] [stderr] 430 | / assert_eq!( [INFO] [stderr] 431 | | parse_headers( [INFO] [stderr] 432 | | b"Content-Disposition: form-data; name = \"field\"\r\n\ [INFO] [stderr] 433 | | Content-Type: text/plain; charset=\"utf-8\"\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 439 | | }) [INFO] [stderr] 440 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:443:5 [INFO] [stderr] | [INFO] [stderr] 443 | / assert_eq!( [INFO] [stderr] 444 | | parse_headers(b"content-disposition: form-data; name = \"field\"\r\n\r\n"), [INFO] [stderr] 445 | | Ok(FieldHeaders { [INFO] [stderr] 446 | | name: "field".into(), [INFO] [stderr] 447 | | ..FieldHeaders::default() [INFO] [stderr] 448 | | }) [INFO] [stderr] 449 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:451:5 [INFO] [stderr] | [INFO] [stderr] 451 | / assert_eq!( [INFO] [stderr] 452 | | parse_headers( [INFO] [stderr] 453 | | b"content-disposition: form-data; name = \"field\"\r\n\ [INFO] [stderr] 454 | | content-type: application/octet-stream\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 460 | | }) [INFO] [stderr] 461 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:464:5 [INFO] [stderr] | [INFO] [stderr] 464 | / assert_eq!( [INFO] [stderr] 465 | | parse_headers(b"cOnTent-dIsPosition: form-data; name = \"field\"\r\n\r\n"), [INFO] [stderr] 466 | | Ok(FieldHeaders { [INFO] [stderr] 467 | | name: "field".into(), [INFO] [stderr] 468 | | ..FieldHeaders::default() [INFO] [stderr] 469 | | }) [INFO] [stderr] 470 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:472:5 [INFO] [stderr] | [INFO] [stderr] 472 | / assert_eq!( [INFO] [stderr] 473 | | parse_headers( [INFO] [stderr] 474 | | b"contEnt-disPosition: form-data; name = \"field\"\r\n\ [INFO] [stderr] 475 | | coNtent-tyPe: application/octet-stream\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 481 | | }) [INFO] [stderr] 482 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:485:5 [INFO] [stderr] | [INFO] [stderr] 485 | / assert_eq!( [INFO] [stderr] 486 | | parse_headers(b"Content-Disposition: form-data; name = field\r\n\r\n"), [INFO] [stderr] 487 | | Ok(FieldHeaders { [INFO] [stderr] 488 | | name: "field".into(), [INFO] [stderr] 489 | | ..FieldHeaders::default() [INFO] [stderr] 490 | | }) [INFO] [stderr] 491 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:493:5 [INFO] [stderr] | [INFO] [stderr] 493 | / assert_eq!( [INFO] [stderr] 494 | | parse_headers( [INFO] [stderr] 495 | | b"Content-Disposition: form-data; name = field\r\n\ [INFO] [stderr] 496 | | Content-Type: application/octet-stream\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 502 | | }) [INFO] [stderr] 503 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:505:5 [INFO] [stderr] | [INFO] [stderr] 505 | / assert_eq!( [INFO] [stderr] 506 | | parse_headers( [INFO] [stderr] 507 | | b"Content-Disposition: form-data; name = field\r\n\ [INFO] [stderr] 508 | | Content-Type: text/plain; charset=utf-8\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 514 | | }) [INFO] [stderr] 515 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:518:5 [INFO] [stderr] | [INFO] [stderr] 518 | / assert_eq!( [INFO] [stderr] 519 | | parse_headers( [INFO] [stderr] 520 | | b"Content-Disposition: form-data; name = field; filename = file.bin\r\n\ [INFO] [stderr] 521 | | Content-Type: application/octet-stream\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 528 | | }) [INFO] [stderr] 529 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:532:5 [INFO] [stderr] | [INFO] [stderr] 532 | / assert_eq!( [INFO] [stderr] 533 | | parse_headers( [INFO] [stderr] 534 | | b"Content-Type: application/octet-stream\r\n\ [INFO] [stderr] 535 | | Content-Disposition: form-data; name = field; filename = file.bin\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 542 | | }) [INFO] [stderr] 543 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `std::result::Result` [INFO] [stderr] --> src/http/multipart/field/headers.rs:546:5 [INFO] [stderr] | [INFO] [stderr] 546 | / assert_eq!( [INFO] [stderr] 547 | | parse_headers( [INFO] [stderr] 548 | | b"Content-Disposition: form-data; name = field; x-attr = \"some;value\"; \ [INFO] [stderr] 549 | | filename = file.bin\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 556 | | }) [INFO] [stderr] 557 | | ) [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |_____std::result::Result [INFO] [stderr] | std::result::Result [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `http::errors::read_error::ReadError` [INFO] [stderr] --> src/http/multipart/field/headers.rs:563:5 [INFO] [stderr] | [INFO] [stderr] 563 | / assert_eq!( [INFO] [stderr] 564 | | parse_headers(b"Content-Type: application/octet-stream\r\n\r\n").unwrap_err(), [INFO] [stderr] 565 | | "missing `Content-Disposition` header on a field \ [INFO] [stderr] 566 | | (Content-Type: application/octet-stream) in this multipart request" [INFO] [stderr] 567 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______http::errors::read_error::ReadError [INFO] [stderr] | &str [INFO] [stderr] | [INFO] [stderr] = note: an implementation of `std::cmp::PartialEq` might be missing for `http::errors::read_error::ReadError` [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0369]: binary operation `==` cannot be applied to type `http::errors::read_error::ReadError` [INFO] [stderr] --> src/http/multipart/field/headers.rs:570:5 [INFO] [stderr] | [INFO] [stderr] 570 | / assert_eq!( [INFO] [stderr] 571 | | parse_headers( [INFO] [stderr] 572 | | b"Content-Disposition: form-data; name = field\r\n\ [INFO] [stderr] 573 | | Content-Disposition: form-data; name = field2\r\n\r\n" [INFO] [stderr] ... | [INFO] [stderr] 576 | | "duplicate `Content-Disposition` header on field: field" [INFO] [stderr] 577 | | ); [INFO] [stderr] | | ^ [INFO] [stderr] | | | [INFO] [stderr] | |______http::errors::read_error::ReadError [INFO] [stderr] | &str [INFO] [stderr] | [INFO] [stderr] = note: an implementation of `std::cmp::PartialEq` might be missing for `http::errors::read_error::ReadError` [INFO] [stderr] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/http/multipart/field/headers.rs:585:9 [INFO] [stderr] | [INFO] [stderr] 585 | b": ", [INFO] [stderr] | ^^^^^ expected an array with a fixed size of 19 elements, found one with 2 elements [INFO] [stderr] | [INFO] [stderr] = note: expected type `&[u8; 19]` [INFO] [stderr] found reference `&'static [u8; 2]` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:92:42 [INFO] [stderr] | [INFO] [stderr] 92 | format!("{}: {:?}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:94:42 [INFO] [stderr] | [INFO] [stderr] 94 | format!("{}: {:?}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:96:40 [INFO] [stderr] | [INFO] [stderr] 96 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:98:40 [INFO] [stderr] | [INFO] [stderr] 98 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:100:40 [INFO] [stderr] | [INFO] [stderr] 100 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:102:40 [INFO] [stderr] | [INFO] [stderr] 102 | format!("{}: {}", self.description(), e).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:103:37 [INFO] [stderr] | [INFO] [stderr] 103 | _ => format!("{}", self.description()).fmt(f), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::description': use the Display impl or to_string() [INFO] [stderr] --> src/http/errors/read_error.rs:110:28 [INFO] [stderr] | [INFO] [stderr] 110 | f.write_str(&*self.description()).ok(); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::future::FutureExt` [INFO] [stderr] --> src/server.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use futures::future::FutureExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `hyper::body::HttpBody` [INFO] [stderr] --> src/http/form.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use hyper::body::HttpBody; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self::helpers` [INFO] [stderr] --> src/http/multipart/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use self::helpers::*; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to 89 previous errors [INFO] [stderr] [INFO] [stderr] Some errors have detailed explanations: E0308, E0369, E0425, E0432, E0433. [INFO] [stderr] For more information about an error, try `rustc --explain E0308`. [INFO] [stderr] error: could not compile `salvo`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "31c9ffcb8b2a1b5a1dde521de2a49961318e5ae21a1fd8f5d52c8259d393251b"` [INFO] running `"docker" "rm" "-f" "31c9ffcb8b2a1b5a1dde521de2a49961318e5ae21a1fd8f5d52c8259d393251b"` [INFO] [stdout] 31c9ffcb8b2a1b5a1dde521de2a49961318e5ae21a1fd8f5d52c8259d393251b