Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

thread 'rustc' panicked at 'found unstable fingerprints for evaluate_obligation(b221e4f0760c8617-1fd22c69d1158f36)', /rustc/f5d8117c338a788bd24abec733fd143dfceb25a0\compiler\rustc_query_system\src\query\plumbing.rs:593:5 #83226

Closed
songday opened this issue Mar 17, 2021 · 6 comments
Labels
A-incr-comp Area: Incremental compilation C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@songday
Copy link

songday commented Mar 17, 2021

Code

please clone code by running: git clone https://github.com/songday/blog-rs.git

reproduce steps

  1. git clone https://github.com/songday/blog-rs.git
  2. cd blog-rs
  3. git checkout dev_0.1.0
  4. cd backend
  5. cargo b (this time code will be complied successfully)
  6. edit build.rs, modify line: 69, add after ], ex writeln!(&mut service_asset_file, r##"] "##,)?;
  7. run cargo b again

Once I run cargo clean and build again, everything will be fine.

Meta

rustc --version --verbose:

rustc 1.52.0-nightly (f5d8117c3 2021-03-16)
binary: rustc
commit-hash: f5d8117c338a788bd24abec733fd143dfceb25a0
commit-date: 2021-03-16
host: x86_64-pc-windows-msvc
release: 1.52.0-nightly
LLVM version: 12.0.0

Error output

thread 'rustc' panicked at 'found unstable fingerprints for evaluate_obligation(b221e4f0760c8617-1fd22c69d1158f36)', /rustc/f5d8117c338a788bd24abec733fd143dfceb25a0\compiler\rustc_query_system\src\query\plumbing.rs:593:5
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.52.0-nightly (f5d8117c3 2021-03-16) running on x86_64-pc-windows-msvc

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type bin

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `hyper::body::body::Body: std::convert::From<&str>`
#1 [normalize_projection_ty] normalizing `Canonical { max_universe: U0, variables: [], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [], reveal: All }, value: ProjectionTy { substs: [futures_util::future::future::Map<hyper::server::shutdown::Graceful<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@warp::server::Server<warp::filter::recover::Recover<warp::filters::cors::internal::CorsFilter<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::asset::index}>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::index}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::config}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::LoginParams>::{closure#0}]>>, fn(std::option::Option<std::string::String>, blog_common::dto::user::LoginParams) -> impl std::future::Future {blog_backend::facade::user::login}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::RegisterParams>::{closure#0}]>>, fn(blog_common::dto::user::RegisterParams) -> impl std::future::Future {blog_backend::facade::user::register}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::logout}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::info}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::image::verify_image}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u8) -> impl std::future::Future {blog_backend::facade::post::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::tag::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(std::string::String, u8) -> impl std::future::Future {blog_backend::facade::post::list_by_tag}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::post::NewPost>::{closure#0}]>>, fn(std::option::Option<blog_common::dto::user::UserInfo>, blog_common::dto::post::NewPost) -> impl std::future::Future {blog_backend::facade::post::save}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u64>::{closure#0}], (u64,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u64) -> impl std::future::Future {blog_backend::facade::post::show}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filters::multipart::FormOptions>, fn(std::option::Option<blog_common::dto::user::UserInfo>, warp::filters::multipart::FormData) -> impl std::future::Future {blog_backend::facade::image::upload}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::untuple_one::UntupleOne<warp::filter::and_then::AndThen<warp::filter::map_err::MapErr<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::header2<headers::common::content_length::ContentLength>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<headers::common::content_length::ContentLength, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#1}]>>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::aggregate::{closure#0}]>>, fn(std::string::String, std::option::Option<blog_common::dto::user::UserInfo>, hyper::common::buf::BufList<bytes::bytes::Bytes>) -> impl std::future::Future {blog_backend::facade::image::save::<hyper::common::buf::BufList<bytes::bytes::Bytes>>}>>>, fn(warp::reject::Rejection) -> impl std::future::Future {blog_backend::facade::handle_rejection}>>::bind_with_graceful_shutdown<std::net::SocketAddr, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>>::{closure#1}::{closure#0}]>, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>, hyper::common::exec::Exec>, [closure@warp::server::Server<warp::filter::recover::Recover<warp::filters::cors::internal::CorsFilter<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::asset::index}>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::index}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::config}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::LoginParams>::{closure#0}]>>, fn(std::option::Option<std::string::String>, blog_common::dto::user::LoginParams) -> impl std::future::Future {blog_backend::facade::user::login}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::RegisterParams>::{closure#0}]>>, fn(blog_common::dto::user::RegisterParams) -> impl std::future::Future {blog_backend::facade::user::register}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::logout}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::info}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::image::verify_image}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u8) -> impl std::future::Future {blog_backend::facade::post::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::tag::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(std::string::String, u8) -> impl std::future::Future {blog_backend::facade::post::list_by_tag}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::post::NewPost>::{closure#0}]>>, fn(std::option::Option<blog_common::dto::user::UserInfo>, blog_common::dto::post::NewPost) -> impl std::future::Future {blog_backend::facade::post::save}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u64>::{closure#0}], (u64,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u64) -> impl std::future::Future {blog_backend::facade::post::show}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filters::multipart::FormOptions>, fn(std::option::Option<blog_common::dto::user::UserInfo>, warp::filters::multipart::FormData) -> impl std::future::Future {blog_backend::facade::image::upload}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::untuple_one::UntupleOne<warp::filter::and_then::AndThen<warp::filter::map_err::MapErr<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::header2<headers::common::content_length::ContentLength>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<headers::common::content_length::ContentLength, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#1}]>>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::aggregate::{closure#0}]>>, fn(std::string::String, std::option::Option<blog_common::dto::user::UserInfo>, hyper::common::buf::BufList<bytes::bytes::Bytes>) -> impl std::future::Future {blog_backend::facade::image::save::<hyper::common::buf::BufList<bytes::bytes::Bytes>>}>>>, fn(warp::reject::Rejection) -> impl std::future::Future {blog_backend::facade::handle_rejection}>>::bind_with_graceful_shutdown<std::net::SocketAddr, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>>::{closure#0}]>], item_def_id: DefId(2:11839 ~ core[f48f]::future::future::Future::Output) } } }`
#2 [normalize_generic_arg_after_erasing_regions] normalizing `for<'r> fn(std::result::Result<<futures_util::future::future::Map<hyper::server::shutdown::Graceful<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@warp::server::Server<warp::filter::recover::Recover<warp::filters::cors::internal::CorsFilter<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::asset::index}>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::index}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::config}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::LoginParams>::{closure#0}]>>, fn(std::option::Option<std::string::String>, blog_common::dto::user::LoginParams) -> impl std::future::Future {blog_backend::facade::user::login}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::RegisterParams>::{closure#0}]>>, fn(blog_common::dto::user::RegisterParams) -> impl std::future::Future {blog_backend::facade::user::register}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::logout}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::info}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::image::verify_image}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u8) -> impl std::future::Future {blog_backend::facade::post::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::tag::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(std::string::String, u8) -> impl std::future::Future {blog_backend::facade::post::list_by_tag}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::post::NewPost>::{closure#0}]>>, fn(std::option::Option<blog_common::dto::user::UserInfo>, blog_common::dto::post::NewPost) -> impl std::future::Future {blog_backend::facade::post::save}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u64>::{closure#0}], (u64,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u64) -> impl std::future::Future {blog_backend::facade::post::show}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filters::multipart::FormOptions>, fn(std::option::Option<blog_common::dto::user::UserInfo>, warp::filters::multipart::FormData) -> impl std::future::Future {blog_backend::facade::image::upload}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::untuple_one::UntupleOne<warp::filter::and_then::AndThen<warp::filter::map_err::MapErr<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::header2<headers::common::content_length::ContentLength>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<headers::common::content_length::ContentLength, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#1}]>>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::aggregate::{closure#0}]>>, fn(std::string::String, std::option::Option<blog_common::dto::user::UserInfo>, hyper::common::buf::BufList<bytes::bytes::Bytes>) -> impl std::future::Future {blog_backend::facade::image::save::<hyper::common::buf::BufList<bytes::bytes::Bytes>>}>>>, fn(warp::reject::Rejection) -> impl std::future::Future {blog_backend::facade::handle_rejection}>>::bind_with_graceful_shutdown<std::net::SocketAddr, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>>::{closure#1}::{closure#0}]>, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>, hyper::common::exec::Exec>, [closure@warp::server::Server<warp::filter::recover::Recover<warp::filters::cors::internal::CorsFilter<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::asset::index}>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::index}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::config}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::LoginParams>::{closure#0}]>>, fn(std::option::Option<std::string::String>, blog_common::dto::user::LoginParams) -> impl std::future::Future {blog_backend::facade::user::login}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::RegisterParams>::{closure#0}]>>, fn(blog_common::dto::user::RegisterParams) -> impl std::future::Future {blog_backend::facade::user::register}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::logout}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::info}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::image::verify_image}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u8) -> impl std::future::Future {blog_backend::facade::post::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::tag::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(std::string::String, u8) -> impl std::future::Future {blog_backend::facade::post::list_by_tag}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::post::NewPost>::{closure#0}]>>, fn(std::option::Option<blog_common::dto::user::UserInfo>, blog_common::dto::post::NewPost) -> impl std::future::Future {blog_backend::facade::post::save}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u64>::{closure#0}], (u64,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u64) -> impl std::future::Future {blog_backend::facade::post::show}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filters::multipart::FormOptions>, fn(std::option::Option<blog_common::dto::user::UserInfo>, warp::filters::multipart::FormData) -> impl std::future::Future {blog_backend::facade::image::upload}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::untuple_one::UntupleOne<warp::filter::and_then::AndThen<warp::filter::map_err::MapErr<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::header2<headers::common::content_length::ContentLength>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<headers::common::content_length::ContentLength, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#1}]>>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::aggregate::{closure#0}]>>, fn(std::string::String, std::option::Option<blog_common::dto::user::UserInfo>, hyper::common::buf::BufList<bytes::bytes::Bytes>) -> impl std::future::Future {blog_backend::facade::image::save::<hyper::common::buf::BufList<bytes::bytes::Bytes>>}>>>, fn(warp::reject::Rejection) -> impl std::future::Future {blog_backend::facade::handle_rejection}>>::bind_with_graceful_shutdown<std::net::SocketAddr, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>>::{closure#0}]> as std::future::Future>::Output, ()>, &'r str) -> <futures_util::future::future::Map<hyper::server::shutdown::Graceful<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@warp::server::Server<warp::filter::recover::Recover<warp::filters::cors::internal::CorsFilter<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::asset::index}>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::index}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::config}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::LoginParams>::{closure#0}]>>, fn(std::option::Option<std::string::String>, blog_common::dto::user::LoginParams) -> impl std::future::Future {blog_backend::facade::user::login}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::RegisterParams>::{closure#0}]>>, fn(blog_common::dto::user::RegisterParams) -> impl std::future::Future {blog_backend::facade::user::register}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::logout}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::info}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::image::verify_image}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u8) -> impl std::future::Future {blog_backend::facade::post::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::tag::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(std::string::String, u8) -> impl std::future::Future {blog_backend::facade::post::list_by_tag}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::post::NewPost>::{closure#0}]>>, fn(std::option::Option<blog_common::dto::user::UserInfo>, blog_common::dto::post::NewPost) -> impl std::future::Future {blog_backend::facade::post::save}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u64>::{closure#0}], (u64,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u64) -> impl std::future::Future {blog_backend::facade::post::show}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filters::multipart::FormOptions>, fn(std::option::Option<blog_common::dto::user::UserInfo>, warp::filters::multipart::FormData) -> impl std::future::Future {blog_backend::facade::image::upload}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::untuple_one::UntupleOne<warp::filter::and_then::AndThen<warp::filter::map_err::MapErr<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::header2<headers::common::content_length::ContentLength>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<headers::common::content_length::ContentLength, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#1}]>>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::aggregate::{closure#0}]>>, fn(std::string::String, std::option::Option<blog_common::dto::user::UserInfo>, hyper::common::buf::BufList<bytes::bytes::Bytes>) -> impl std::future::Future {blog_backend::facade::image::save::<hyper::common::buf::BufList<bytes::bytes::Bytes>>}>>>, fn(warp::reject::Rejection) -> impl std::future::Future {blog_backend::facade::handle_rejection}>>::bind_with_graceful_shutdown<std::net::SocketAddr, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>>::{closure#1}::{closure#0}]>, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>, hyper::common::exec::Exec>, [closure@warp::server::Server<warp::filter::recover::Recover<warp::filters::cors::internal::CorsFilter<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::asset::index}>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::index}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::config}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::LoginParams>::{closure#0}]>>, fn(std::option::Option<std::string::String>, blog_common::dto::user::LoginParams) -> impl std::future::Future {blog_backend::facade::user::login}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::RegisterParams>::{closure#0}]>>, fn(blog_common::dto::user::RegisterParams) -> impl std::future::Future {blog_backend::facade::user::register}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::logout}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::info}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::image::verify_image}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u8) -> impl std::future::Future {blog_backend::facade::post::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::tag::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(std::string::String, u8) -> impl std::future::Future {blog_backend::facade::post::list_by_tag}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::post::NewPost>::{closure#0}]>>, fn(std::option::Option<blog_common::dto::user::UserInfo>, blog_common::dto::post::NewPost) -> impl std::future::Future {blog_backend::facade::post::save}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u64>::{closure#0}], (u64,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u64) -> impl std::future::Future {blog_backend::facade::post::show}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filters::multipart::FormOptions>, fn(std::option::Option<blog_common::dto::user::UserInfo>, warp::filters::multipart::FormData) -> impl std::future::Future {blog_backend::facade::image::upload}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::untuple_one::UntupleOne<warp::filter::and_then::AndThen<warp::filter::map_err::MapErr<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::header2<headers::common::content_length::ContentLength>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<headers::common::content_length::ContentLength, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#1}]>>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::aggregate::{closure#0}]>>, fn(std::string::String, std::option::Option<blog_common::dto::user::UserInfo>, hyper::common::buf::BufList<bytes::bytes::Bytes>) -> impl std::future::Future {blog_backend::facade::image::save::<hyper::common::buf::BufList<bytes::bytes::Bytes>>}>>>, fn(warp::reject::Rejection) -> impl std::future::Future {blog_backend::facade::handle_rejection}>>::bind_with_graceful_shutdown<std::net::SocketAddr, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>>::{closure#0}]> as std::future::Future>::Output {std::result::Result::<<futures_util::future::future::Map<hyper::server::shutdown::Graceful<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@warp::server::Server<warp::filter::recover::Recover<warp::filters::cors::internal::CorsFilter<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::asset::index}>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::index}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::config}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::LoginParams>::{closure#0}]>>, fn(std::option::Option<std::string::String>, blog_common::dto::user::LoginParams) -> impl std::future::Future {blog_backend::facade::user::login}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::RegisterParams>::{closure#0}]>>, fn(blog_common::dto::user::RegisterParams) -> impl std::future::Future {blog_backend::facade::user::register}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::logout}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::info}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::image::verify_image}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u8) -> impl std::future::Future {blog_backend::facade::post::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::tag::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(std::string::String, u8) -> impl std::future::Future {blog_backend::facade::post::list_by_tag}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::post::NewPost>::{closure#0}]>>, fn(std::option::Option<blog_common::dto::user::UserInfo>, blog_common::dto::post::NewPost) -> impl std::future::Future {blog_backend::facade::post::save}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u64>::{closure#0}], (u64,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u64) -> impl std::future::Future {blog_backend::facade::post::show}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filters::multipart::FormOptions>, fn(std::option::Option<blog_common::dto::user::UserInfo>, warp::filters::multipart::FormData) -> impl std::future::Future {blog_backend::facade::image::upload}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::untuple_one::UntupleOne<warp::filter::and_then::AndThen<warp::filter::map_err::MapErr<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::header2<headers::common::content_length::ContentLength>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<headers::common::content_length::ContentLength, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#1}]>>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::aggregate::{closure#0}]>>, fn(std::string::String, std::option::Option<blog_common::dto::user::UserInfo>, hyper::common::buf::BufList<bytes::bytes::Bytes>) -> impl std::future::Future {blog_backend::facade::image::save::<hyper::common::buf::BufList<bytes::bytes::Bytes>>}>>>, fn(warp::reject::Rejection) -> impl std::future::Future {blog_backend::facade::handle_rejection}>>::bind_with_graceful_shutdown<std::net::SocketAddr, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>>::{closure#1}::{closure#0}]>, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>, hyper::common::exec::Exec>, [closure@warp::server::Server<warp::filter::recover::Recover<warp::filters::cors::internal::CorsFilter<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::asset::index}>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::index}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::management::config}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::LoginParams>::{closure#0}]>>, fn(std::option::Option<std::string::String>, blog_common::dto::user::LoginParams) -> impl std::future::Future {blog_backend::facade::user::login}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::user::RegisterParams>::{closure#0}]>>, fn(blog_common::dto::user::RegisterParams) -> impl std::future::Future {blog_backend::facade::user::register}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::logout}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::user::info}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>>, fn(std::option::Option<std::string::String>) -> impl std::future::Future {blog_backend::facade::image::verify_image}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u8) -> impl std::future::Future {blog_backend::facade::post::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn() -> impl std::future::Future {blog_backend::facade::tag::list}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u8>::{closure#0}], (u8,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(std::string::String, u8) -> impl std::future::Future {blog_backend::facade::post::list_by_tag}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::body::is_content_type<warp::filters::body::Json>::{closure#0}]>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::bytes::{closure#0}]>>, [closure@warp::filters::body::json<blog_common::dto::post::NewPost>::{closure#0}]>>, fn(std::option::Option<blog_common::dto::user::UserInfo>, blog_common::dto::post::NewPost) -> impl std::future::Future {blog_backend::facade::post::save}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::get::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<u64>::{closure#0}], (u64,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, fn(u64) -> impl std::future::Future {blog_backend::facade::post::show}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filters::multipart::FormOptions>, fn(std::option::Option<blog_common::dto::user::UserInfo>, warp::filters::multipart::FormData) -> impl std::future::Future {blog_backend::facade::image::upload}>>, warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::filters::method::post::{closure#0}]>::{closure#0}]>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filters::path::Exact<warp::filters::path::internal::Opaque<&str>>>, warp::filter::FilterFn<[closure@warp::filters::path::filter_segment<[closure@warp::filters::path::param<std::string::String>::{closure#0}], (std::string::String,)>::{closure#0}]>>, warp::filter::FilterFn<[closure@warp::filters::path::end::{closure#0}]>>, warp::filter::untuple_one::UntupleOne<warp::filter::and_then::AndThen<warp::filter::map_err::MapErr<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::header2<headers::common::content_length::ContentLength>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<headers::common::content_length::ContentLength, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#0}]>, [closure@warp::filters::body::content_length_limit::{closure#1}]>>>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::header::optional2<headers::common::cookie::Cookie>::{closure#0}], futures_util::future::ready::Ready<std::result::Result<std::option::Option<headers::common::cookie::Cookie>, std::convert::Infallible>>>::{closure#0}]>, [closure@warp::filters::cookie::optional<std::string::String>::{closure#0}]>, [closure@blog_backend::service::server::auth::{closure#0}]>>, warp::filter::and_then::AndThen<warp::filter::FilterFn<[closure@warp::filter::filter_fn_one<[closure@warp::filters::body::body::{closure#0}], futures_util::future::ready::Ready<std::result::Result<hyper::body::body::Body, warp::reject::Rejection>>>::{closure#0}]>, [closure@warp::filters::body::aggregate::{closure#0}]>>, fn(std::string::String, std::option::Option<blog_common::dto::user::UserInfo>, hyper::common::buf::BufList<bytes::bytes::Bytes>) -> impl std::future::Future {blog_backend::facade::image::save::<hyper::common::buf::BufList<bytes::bytes::Bytes>>}>>>, fn(warp::reject::Rejection) -> impl std::future::Future {blog_backend::facade::handle_rejection}>>::bind_with_graceful_shutdown<std::net::SocketAddr, std::future::from_generator::GenFuture<[static generator@blog_backend::service::server::create_warp_server::{closure#0}::{closure#0} {std::future::ResumeTy, tokio::sync::oneshot::Receiver<()>, ()}]>>::{closure#0}]> as std::future::Future>::Output, ()>::expect}`
#3 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
warning: 1 warning emitted

error: could not compile `blog-backend`
Backtrace

Same as above output

@songday songday added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Mar 17, 2021
@lqd
Copy link
Member

lqd commented Mar 17, 2021

cc @Aaron1011 that looks similar to #80691 and could be fixed by #83220, right ?

if it does reproduce the same issue, it would be interesting because it's smaller than the substrate-node-template repro, and could possibly be minimized more still

@Aaron1011
Copy link
Member

This can be reproduced by running touch src/service/asset_list.rs in-between builds, instead of modifying build.rs

@Aaron1011 Aaron1011 added the A-incr-comp Area: Incremental compilation label Mar 18, 2021
@lqd
Copy link
Member

lqd commented Mar 19, 2021

I've worked on reducing this.

From the initial 320 dependencies to 50 or so, something like this and its dependencies is enough to trigger the bug:

async fn index() -> Result<impl Reply, Rejection> { Ok(warp::reply::html("")) }
pub async fn create_warp_server() -> Result<impl Future<Output = ()> + 'static, Box<dyn std::error::Error>> {
    let index = get().and_then(crate::index);
    let cors = allow_origins(vec!["http://localhost:8080"].into_iter());
    let routes = index.with(cors);
    let server = serve(routes).bind_with_graceful_shutdown();
    Ok(server)
}
fn main() {
    let runtime = Builder::new_current_thread().build().unwrap();
    let server = runtime.block_on(create_warp_server()).unwrap();
    runtime.block_on(server);
}

(modulo changes made while reducing warp)

but that still depends on:

[dependencies]
futures = { version = "0.3", default-features = false, features = ["alloc"] }
http = "0.2"
hyper = { version = "0.14", features = ["server", "http1", "tcp"] }
tokio = { version = "1.0", features = ["sync"] }

The most tedious parts of minimizing this project are done, but it's not finished yet. warp is complicated to reduce, and I've ran out of time on this, so here goes: with parts of the warp crate inlined in the test, it still is 380 lines and it seems the bug is triggered from code in hyper.

In any case, to reproduce:

  1. cargo build, which will work
  2. touch src/main.rs
  3. cargo build will now ICE
thread 'rustc' panicked at 'found unstable fingerprints for evaluate_obligation(1996d96fad4914f7-2e8343523a99712d)', /rustc/36f1f04f18b89ba4a999bcfd6584663fd6fc1c5d\compiler\rustc_query_system\src\query\plumbing.rs:593:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.52.0-nightly (36f1f04f1 2021-03-17) running on x86_64-pc-windows-msvc

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type bin

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `hyper::Body: std::convert::From<&str>`
#1 [normalize_projection_ty] normalizing `Canonical { max_universe: U0, variables: [], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [], reveal: All }, value: ProjectionTy { substs: [futures::future::Map<hyper::Server<hyper::server::conn::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@backend\src\main.rs:348:48: 351:18]>>, [closure@backend\src\main.rs:354:35: 354:61]>], item_def_id: DefId(2:11838 ~ core[f48f]::future::future::Future::Output) } } }`
end of query stack
error: could not compile `blog-backend`

With some parts of hyper and tokio integrated, and more reduction, it should be doable to have a minimal example we could use in a unit test.

@benmkw
Copy link

benmkw commented Mar 19, 2021

it happens on rust-analyzer as well (also without mimalloc)

i~/g/rust-analyzer
λ  (master|✔️ )  rustc --version --verbose                                                                                                                                                                                                                                                                                                 5ms 
rustc 1.52.0-nightly (1705a7d64 2021-03-18)
binary: rustc
commit-hash: 1705a7d64b833d1c4b69958b0627bd054e6d764b
commit-date: 2021-03-18
host: aarch64-apple-darwin
release: 1.52.0-nightly
LLVM version: 12.0.0
i~/g/rust-analyzer
λ  (master|✔️ )  git rev-parse HEAD                                                                                                                                                                                                                                                                                                      139ms 
fc21640a65b5caef8dbbc9e85e9616b843847fb4
i~/g/rust-analyzer
λ  (master|✔️ )  cargo xtask install --mimalloc                                                                                                                                                                                                                                                                                           10ms 
    Finished dev [unoptimized] target(s) in 0.06s
     Running `target/debug/xtask install --mimalloc`
$ cargo install --path crates/rust-analyzer --locked --force --features force-always-assert --features mimalloc
  Installing rust-analyzer v0.0.0 (/Users/benediktmandelkow/gits/rust-analyzer/crates/rust-analyzer)
    Updating crates.io index
   Compiling hir_ty v0.0.0 (/Users/benediktmandelkow/gits/rust-analyzer/crates/hir_ty)
   Compiling hir v0.0.0 (/Users/benediktmandelkow/gits/rust-analyzer/crates/hir)
   Compiling ide_db v0.0.0 (/Users/benediktmandelkow/gits/rust-analyzer/crates/ide_db)
thread 'rustc' panicked at 'found unstable fingerprints for evaluate_obligation(3af516d87091aad7-c89d9033dbef420c)', /rustc/1705a7d64b833d1c4b69958b0627bd054e6d764b/compiler/rustc_query_system/src/query/plumbing.rs:593:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.52.0-nightly (1705a7d64 2021-03-18) running on aarch64-apple-darwin

note: compiler flags: -C opt-level=3 -C linker-plugin-lto -C split-debuginfo=unpacked -C debuginfo=0 -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `RootDatabase: base_db::Upcast<dyn hir::db::AstDatabase>`
#1 [typeck] type-checking `symbol_index::crate_symbols`
end of query stack
error: could not compile `ide_db`

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
thread 'rustc' panicked at 'found unstable fingerprints for evaluate_obligation(b804705c3ed9ee58-9edc697b7a408cab)', /rustc/1705a7d64b833d1c4b69958b0627bd054e6d764b/compiler/rustc_query_system/src/query/plumbing.rs:593:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.52.0-nightly (1705a7d64 2021-03-18) running on aarch64-apple-darwin

note: compiler flags: -C opt-level=3 -C linker-plugin-lto -C split-debuginfo=unpacked -C debuginfo=0 -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `chalk_ir::BindersIntoIterator<&std::vec::Vec<chalk_ir::Binders<chalk_ir::WhereClause<traits::chalk::interner::Interner>>>>: std::marker::Sized`
#1 [normalize_projection_ty] normalizing `Canonical { max_universe: U0, variables: [], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [], reveal: All }, value: ProjectionTy { substs: [std::iter::Map<chalk_ir::BindersIntoIterator<&std::vec::Vec<chalk_ir::Binders<chalk_ir::WhereClause<traits::chalk::interner::Interner>>>>, [closure@<chalk_solve::rust_ir::AssociatedTyValue<traits::chalk::interner::Interner> as chalk_solve::clauses::program_clauses::ToProgramClauses<traits::chalk::interner::Interner>>::to_program_clauses::{closure#0}::{closure#3}]>], item_def_id: DefId(2:7000 ~ core[ae58]::iter::traits::collect::IntoIterator::IntoIter) } } }`
end of query stack
error: failed to compile `rust-analyzer v0.0.0 (/Users/benediktmandelkow/gits/rust-analyzer/crates/rust-analyzer)`, intermediate artifacts can be found at `/Users/benediktmandelkow/gits/rust-analyzer/target`

Caused by:
  build failed
Error: install server

Caused by:
    command `cargo install --path crates/rust-analyzer --locked --force --features force-always-assert --features mimalloc` failed, exit code: 101

@jyn514
Copy link
Member

jyn514 commented May 19, 2021

Is this still a problem on the latest nightly? It may have been fixed by #85186.

@Enselic
Copy link
Member

Enselic commented Sep 6, 2023

Triage: No one said it was still a problem, and the linked PR includes regression tests. Closing.

@Enselic Enselic closed this as completed Sep 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-incr-comp Area: Incremental compilation C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

6 participants