gitextract_tcp4if_v/ ├── .clippy.toml ├── .github/ │ ├── DISCUSSION_TEMPLATE/ │ │ └── q-a.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ └── CI.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Cargo.toml ├── ECOSYSTEM.md ├── LICENSE ├── axum/ │ ├── CHANGELOG.md │ ├── Cargo.toml │ ├── README.md │ ├── benches/ │ │ └── benches.rs │ ├── src/ │ │ ├── body/ │ │ │ └── mod.rs │ │ ├── boxed.rs │ │ ├── docs/ │ │ │ ├── debugging_handler_type_errors.md │ │ │ ├── error_handling.md │ │ │ ├── extract.md │ │ │ ├── handlers_intro.md │ │ │ ├── method_routing/ │ │ │ │ ├── fallback.md │ │ │ │ ├── layer.md │ │ │ │ ├── merge.md │ │ │ │ └── route_layer.md │ │ │ ├── middleware.md │ │ │ ├── response.md │ │ │ └── routing/ │ │ │ ├── fallback.md │ │ │ ├── into_make_service_with_connect_info.md │ │ │ ├── layer.md │ │ │ ├── merge.md │ │ │ ├── method_not_allowed_fallback.md │ │ │ ├── nest.md │ │ │ ├── route.md │ │ │ ├── route_layer.md │ │ │ ├── route_service.md │ │ │ ├── with_state.md │ │ │ └── without_v07_checks.md │ │ ├── error_handling/ │ │ │ └── mod.rs │ │ ├── extension.rs │ │ ├── extract/ │ │ │ ├── connect_info.rs │ │ │ ├── matched_path.rs │ │ │ ├── mod.rs │ │ │ ├── multipart.rs │ │ │ ├── nested_path.rs │ │ │ ├── original_uri.rs │ │ │ ├── path/ │ │ │ │ ├── de.rs │ │ │ │ └── mod.rs │ │ │ ├── query.rs │ │ │ ├── raw_form.rs │ │ │ ├── raw_query.rs │ │ │ ├── rejection.rs │ │ │ ├── state.rs │ │ │ └── ws.rs │ │ ├── form.rs │ │ ├── handler/ │ │ │ ├── future.rs │ │ │ ├── mod.rs │ │ │ └── service.rs │ │ ├── json.rs │ │ ├── lib.rs │ │ ├── macros.rs │ │ ├── middleware/ │ │ │ ├── from_extractor.rs │ │ │ ├── from_fn.rs │ │ │ ├── map_request.rs │ │ │ ├── map_response.rs │ │ │ ├── mod.rs │ │ │ └── response_axum_body.rs │ │ ├── response/ │ │ │ ├── mod.rs │ │ │ ├── redirect.rs │ │ │ └── sse.rs │ │ ├── routing/ │ │ │ ├── future.rs │ │ │ ├── into_make_service.rs │ │ │ ├── method_filter.rs │ │ │ ├── method_routing.rs │ │ │ ├── mod.rs │ │ │ ├── not_found.rs │ │ │ ├── path_router.rs │ │ │ ├── route.rs │ │ │ ├── strip_prefix.rs │ │ │ ├── tests/ │ │ │ │ ├── fallback.rs │ │ │ │ ├── get_to_head.rs │ │ │ │ ├── handle_error.rs │ │ │ │ ├── merge.rs │ │ │ │ ├── mod.rs │ │ │ │ └── nest.rs │ │ │ └── url_params.rs │ │ ├── serve/ │ │ │ ├── listener.rs │ │ │ └── mod.rs │ │ ├── service_ext.rs │ │ ├── test_helpers/ │ │ │ ├── counting_cloneable_state.rs │ │ │ ├── mod.rs │ │ │ ├── test_client.rs │ │ │ └── tracing_helpers.rs │ │ └── util.rs │ └── tests/ │ └── panic_location.rs ├── axum-core/ │ ├── CHANGELOG.md │ ├── Cargo.toml │ ├── README.md │ └── src/ │ ├── body.rs │ ├── error.rs │ ├── ext_traits/ │ │ ├── mod.rs │ │ ├── request.rs │ │ └── request_parts.rs │ ├── extract/ │ │ ├── default_body_limit.rs │ │ ├── from_ref.rs │ │ ├── mod.rs │ │ ├── option.rs │ │ ├── rejection.rs │ │ ├── request_parts.rs │ │ └── tuple.rs │ ├── lib.rs │ ├── macros.rs │ └── response/ │ ├── append_headers.rs │ ├── into_response.rs │ ├── into_response_parts.rs │ └── mod.rs ├── axum-extra/ │ ├── CHANGELOG.md │ ├── Cargo.toml │ ├── README.md │ ├── src/ │ │ ├── body/ │ │ │ ├── async_read_body.rs │ │ │ └── mod.rs │ │ ├── either.rs │ │ ├── extract/ │ │ │ ├── cached.rs │ │ │ ├── cookie/ │ │ │ │ ├── mod.rs │ │ │ │ ├── private.rs │ │ │ │ └── signed.rs │ │ │ ├── form.rs │ │ │ ├── json_deserializer.rs │ │ │ ├── mod.rs │ │ │ ├── multipart.rs │ │ │ ├── query.rs │ │ │ └── with_rejection.rs │ │ ├── handler/ │ │ │ ├── mod.rs │ │ │ └── or.rs │ │ ├── json_lines.rs │ │ ├── lib.rs │ │ ├── middleware.rs │ │ ├── protobuf.rs │ │ ├── response/ │ │ │ ├── attachment.rs │ │ │ ├── content_disposition.rs │ │ │ ├── erased_json.rs │ │ │ ├── error_response.rs │ │ │ ├── file_stream.rs │ │ │ ├── mod.rs │ │ │ └── multiple.rs │ │ ├── routing/ │ │ │ ├── mod.rs │ │ │ ├── resource.rs │ │ │ └── typed.rs │ │ └── typed_header.rs │ └── test_files/ │ ├── index.html │ ├── index_2.html │ └── script.js ├── axum-macros/ │ ├── CHANGELOG.md │ ├── Cargo.toml │ ├── README.md │ ├── rust-toolchain │ ├── src/ │ │ ├── attr_parsing.rs │ │ ├── axum_test.rs │ │ ├── debug_handler.rs │ │ ├── from_ref.rs │ │ ├── from_request/ │ │ │ ├── attr.rs │ │ │ └── mod.rs │ │ ├── lib.rs │ │ ├── typed_path.rs │ │ └── with_position.rs │ └── tests/ │ ├── debug_handler/ │ │ ├── fail/ │ │ │ ├── .gitkeep │ │ │ ├── argument_not_extractor.rs │ │ │ ├── argument_not_extractor.stderr │ │ │ ├── duplicate_args.rs │ │ │ ├── duplicate_args.stderr │ │ │ ├── extension_not_clone.rs │ │ │ ├── extension_not_clone.stderr │ │ │ ├── extract_self_mut.rs │ │ │ ├── extract_self_mut.stderr │ │ │ ├── extract_self_ref.rs │ │ │ ├── extract_self_ref.stderr │ │ │ ├── generics.rs │ │ │ ├── generics.stderr │ │ │ ├── invalid_attrs.rs │ │ │ ├── invalid_attrs.stderr │ │ │ ├── json_not_deserialize.rs │ │ │ ├── json_not_deserialize.stderr │ │ │ ├── multiple_paths.rs │ │ │ ├── multiple_paths.stderr │ │ │ ├── multiple_request_consumers.rs │ │ │ ├── multiple_request_consumers.stderr │ │ │ ├── not_a_function.rs │ │ │ ├── not_a_function.stderr │ │ │ ├── not_async.rs │ │ │ ├── not_async.stderr │ │ │ ├── not_send.rs │ │ │ ├── not_send.stderr │ │ │ ├── output_tuple_too_many.rs │ │ │ ├── output_tuple_too_many.stderr │ │ │ ├── returning_request_parts.rs │ │ │ ├── returning_request_parts.stderr │ │ │ ├── single_wrong_return_tuple.rs │ │ │ ├── single_wrong_return_tuple.stderr │ │ │ ├── too_many_extractors.rs │ │ │ ├── too_many_extractors.stderr │ │ │ ├── wrong_order.rs │ │ │ ├── wrong_order.stderr │ │ │ ├── wrong_return_tuple.rs │ │ │ ├── wrong_return_tuple.stderr │ │ │ ├── wrong_return_type.rs │ │ │ └── wrong_return_type.stderr │ │ └── pass/ │ │ ├── associated_fn_without_self.rs │ │ ├── deny_unreachable_code.rs │ │ ├── impl_future.rs │ │ ├── impl_into_response.rs │ │ ├── infer_state.rs │ │ ├── multiple_extractors.rs │ │ ├── mut_extractor.rs │ │ ├── ready.rs │ │ ├── request_last.rs │ │ ├── result_impl_into_response.rs │ │ ├── returns_self.rs │ │ ├── self_receiver.rs │ │ ├── set_state.rs │ │ └── state_and_body.rs │ ├── debug_middleware/ │ │ ├── fail/ │ │ │ ├── doesnt_take_next.rs │ │ │ ├── doesnt_take_next.stderr │ │ │ ├── next_not_last.rs │ │ │ ├── next_not_last.stderr │ │ │ ├── takes_next_twice.rs │ │ │ └── takes_next_twice.stderr │ │ └── pass/ │ │ └── basic.rs │ ├── from_ref/ │ │ ├── fail/ │ │ │ ├── generics.rs │ │ │ └── generics.stderr │ │ └── pass/ │ │ ├── basic.rs │ │ ├── reference-types.rs │ │ └── skip.rs │ ├── from_request/ │ │ ├── fail/ │ │ │ ├── double_via_attr.rs │ │ │ ├── double_via_attr.stderr │ │ │ ├── enum_from_request_ident_in_variant.rs │ │ │ ├── enum_from_request_ident_in_variant.stderr │ │ │ ├── enum_from_request_on_variant.rs │ │ │ ├── enum_from_request_on_variant.stderr │ │ │ ├── enum_no_via.rs │ │ │ ├── enum_no_via.stderr │ │ │ ├── generic.rs │ │ │ ├── generic.stderr │ │ │ ├── generic_without_via.rs │ │ │ ├── generic_without_via.stderr │ │ │ ├── generic_without_via_rejection.rs │ │ │ ├── generic_without_via_rejection.stderr │ │ │ ├── not_enum_or_struct.rs │ │ │ ├── not_enum_or_struct.stderr │ │ │ ├── override_rejection_on_enum_without_via.rs │ │ │ ├── override_rejection_on_enum_without_via.stderr │ │ │ ├── parts_extracting_body.rs │ │ │ ├── parts_extracting_body.stderr │ │ │ ├── state_infer_multiple_different_types.rs │ │ │ ├── state_infer_multiple_different_types.stderr │ │ │ ├── unknown_attr_container.rs │ │ │ ├── unknown_attr_container.stderr │ │ │ ├── unknown_attr_field.rs │ │ │ ├── unknown_attr_field.stderr │ │ │ ├── via_on_container_and_field.rs │ │ │ └── via_on_container_and_field.stderr │ │ └── pass/ │ │ ├── container.rs │ │ ├── container_parts.rs │ │ ├── empty_named.rs │ │ ├── empty_named_parts.rs │ │ ├── empty_tuple.rs │ │ ├── empty_tuple_parts.rs │ │ ├── enum_via.rs │ │ ├── enum_via_parts.rs │ │ ├── named.rs │ │ ├── named_parts.rs │ │ ├── named_via.rs │ │ ├── named_via_parts.rs │ │ ├── override_rejection.rs │ │ ├── override_rejection_non_generic.rs │ │ ├── override_rejection_non_generic_parts.rs │ │ ├── override_rejection_parts.rs │ │ ├── override_rejection_with_via_on_enum.rs │ │ ├── override_rejection_with_via_on_enum_parts.rs │ │ ├── override_rejection_with_via_on_struct.rs │ │ ├── override_rejection_with_via_on_struct_parts.rs │ │ ├── state_cookie.rs │ │ ├── state_enum_via.rs │ │ ├── state_enum_via_parts.rs │ │ ├── state_explicit.rs │ │ ├── state_explicit_parts.rs │ │ ├── state_field_explicit.rs │ │ ├── state_field_infer.rs │ │ ├── state_infer.rs │ │ ├── state_infer_multiple.rs │ │ ├── state_infer_parts.rs │ │ ├── state_via.rs │ │ ├── state_via_infer.rs │ │ ├── state_via_parts.rs │ │ ├── state_with_rejection.rs │ │ ├── tuple.rs │ │ ├── tuple_parts.rs │ │ ├── tuple_same_type_twice.rs │ │ ├── tuple_same_type_twice_parts.rs │ │ ├── tuple_same_type_twice_via.rs │ │ ├── tuple_same_type_twice_via_parts.rs │ │ ├── tuple_via.rs │ │ ├── tuple_via_parts.rs │ │ ├── unit.rs │ │ └── unit_parts.rs │ └── typed_path/ │ ├── fail/ │ │ ├── missing_capture.rs │ │ ├── missing_capture.stderr │ │ ├── missing_field.rs │ │ ├── missing_field.stderr │ │ ├── not_deserialize.rs │ │ ├── not_deserialize.stderr │ │ ├── route_not_starting_with_slash.rs │ │ ├── route_not_starting_with_slash.stderr │ │ ├── route_not_starting_with_slash_non_empty.rs │ │ ├── route_not_starting_with_slash_non_empty.stderr │ │ ├── unit_with_capture.rs │ │ └── unit_with_capture.stderr │ └── pass/ │ ├── customize_rejection.rs │ ├── into_uri.rs │ ├── named_fields_struct.rs │ ├── result_handler.rs │ ├── tuple_struct.rs │ ├── unit_struct.rs │ ├── url_encoding.rs │ └── wildcards.rs ├── contrib/ │ └── ide/ │ └── vscode/ │ └── settings.json ├── deny.toml └── examples/ ├── Cargo.toml ├── README.md ├── anyhow-error-response/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── async-graphql/ │ └── README.md ├── auto-reload/ │ ├── Cargo.toml │ ├── README.md │ └── src/ │ └── main.rs ├── chat/ │ ├── Cargo.toml │ ├── chat.html │ └── src/ │ └── main.rs ├── compression/ │ ├── Cargo.toml │ ├── README.md │ ├── data/ │ │ └── products.json │ └── src/ │ ├── main.rs │ └── tests.rs ├── consume-body-in-extractor-or-middleware/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── cors/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── customize-extractor-error/ │ ├── Cargo.toml │ ├── README.md │ └── src/ │ ├── custom_extractor.rs │ ├── derive_from_request.rs │ ├── main.rs │ └── with_rejection.rs ├── customize-path-rejection/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── dependency-injection/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── diesel-async-postgres/ │ ├── Cargo.toml │ ├── migrations/ │ │ └── 2023-03-14-180127_add_users/ │ │ ├── down.sql │ │ └── up.sql │ └── src/ │ └── main.rs ├── diesel-postgres/ │ ├── Cargo.toml │ ├── migrations/ │ │ └── 2023-03-14-180127_add_users/ │ │ ├── down.sql │ │ └── up.sql │ └── src/ │ └── main.rs ├── error-handling/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── form/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── global-404-handler/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── graceful-shutdown/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── handle-head-request/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── hello-world/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── http-proxy/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── jwt/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── key-value-store/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── low-level-native-tls/ │ ├── Cargo.toml │ ├── self_signed_certs/ │ │ ├── cert.pem │ │ └── key.pem │ └── src/ │ └── main.rs ├── low-level-openssl/ │ ├── Cargo.toml │ ├── self_signed_certs/ │ │ ├── cert.pem │ │ └── key.pem │ └── src/ │ └── main.rs ├── low-level-rustls/ │ ├── Cargo.toml │ ├── self_signed_certs/ │ │ ├── cert.pem │ │ └── key.pem │ └── src/ │ └── main.rs ├── mongodb/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── multipart-form/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── oauth/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── parse-body-based-on-content-type/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── print-request-response/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── prometheus-metrics/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── readme/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── request-id/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── reqwest-response/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── reverse-proxy/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── routes-and-handlers-close-together/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── serve-with-hyper/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── simple-router-wasm/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── sqlx-postgres/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── sse/ │ ├── Cargo.toml │ ├── assets/ │ │ ├── index.html │ │ └── script.js │ └── src/ │ └── main.rs ├── static-file-server/ │ ├── Cargo.toml │ ├── assets/ │ │ ├── index.html │ │ └── script.js │ └── src/ │ └── main.rs ├── stream-to-file/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── templates/ │ ├── Cargo.toml │ ├── src/ │ │ └── main.rs │ └── templates/ │ └── hello.html ├── templates-minijinja/ │ ├── Cargo.toml │ ├── src/ │ │ └── main.rs │ └── templates/ │ ├── about.jinja │ ├── content.jinja │ ├── home.jinja │ └── layout.jinja ├── testing/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── testing-websockets/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── tls-graceful-shutdown/ │ ├── Cargo.toml │ ├── self_signed_certs/ │ │ ├── cert.pem │ │ └── key.pem │ └── src/ │ └── main.rs ├── tls-rustls/ │ ├── Cargo.toml │ ├── self_signed_certs/ │ │ ├── cert.pem │ │ └── key.pem │ └── src/ │ └── main.rs ├── todos/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── tokio-postgres/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── tokio-redis/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── tracing-aka-logging/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── unix-domain-socket/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── validator/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── versioning/ │ ├── Cargo.toml │ └── src/ │ └── main.rs ├── websockets/ │ ├── Cargo.toml │ ├── assets/ │ │ ├── index.html │ │ └── script.js │ └── src/ │ ├── client.rs │ └── main.rs └── websockets-http2/ ├── Cargo.toml ├── assets/ │ ├── index.html │ └── script.js ├── self_signed_certs/ │ ├── cert.pem │ └── key.pem └── src/ └── main.rs