axum-core
Core types and traits for axum
0.5.6
431M downloads/mo
#266 most downloaded on crates.io
tokio-rs/axum
What this package is like to depend on
Last release 7 months ago
27 Dec 2025
Release timing varies
gaps range from 2 weeks to 8 months
Nearly every release is documented
notes for 29 of 31 stable releases
1 version withdrawn
withdrawn after publishing
5 years old
37 releases · first in 2021
4 releases in the last 12 months
see the full history below
Release timeline
37 releases · Aug 2021 to Dec 2025Releases
latest 37-
0.5.627 Dec 2025 -
0.5.530 Sep 2025 -
0.5.428 Sep 2025 -
0.5.328 Sep 2025Release notes
Open source →- added:
DefaultBodyLimit::applyfor changing theDefaultBodyLimitinside extractors. (#3368) - changed: Update minimum rust version to 1.78 ([#3412])
- added:
-
0.5.228 Mar 2025 -
0.5.121 Jan 2025 withdrawnRelease notes
Open source →Yanked from crates.io due to unforeseen breaking change, see #3190 for details.
-
0.5.001 Jan 2025Release notes
Open source →since rc.1
<details>
- change: The
Displayimpl of all rejections generated by thedefine_rejection!()will now include theDisplayoutput of the inner error too. This matches thebody_text()fn output now. (#3118)
</details>
full changelog
- breaking: Replace
#[async_trait]with return-positionimpl Traitin traits (#2308) - breaking:
Option<T>as an extractor now requiresTto implement the new traitOptionalFromRequest(if used as the last extractor) orOptionalFromRequestParts(other extractors) (#2475) - change: Update minimum rust version to 1.75 (#2943)
- change: The
Displayimpl of all rejections generated by thedefine_rejection!()will now include theDisplayoutput of the inner error too. This matches thebody_text()fn output now. (#3118)
rc.1
- breaking:
Option<T>as an extractor now requiresTto implement the new traitOptionalFromRequest(if used as the last extractor) orOptionalFromRequestParts(other extractors) (#2475)
alpha.1
- breaking: Replace
#[async_trait]with return-positionimpl Traitin traits (#2308) - change: Update minimum rust version to 1.75 (#2943)
- change: The
-
0.5.0-rc.117 Dec 2024 pre-releaseNothing published for this version
-
0.5.0-alpha.105 Oct 2024 pre-releaseNothing published for this version
-
0.4.527 Sep 2024Release notes
Open source →- fixed: Compile errors from the internal
__log_rejectionmacro under certain Cargo feature combinations between axum crates (#2933)
- fixed: Compile errors from the internal
-
0.4.420 Sep 2024Release notes
Open source →- added: Derive
CloneandCopyforAppendHeaders(#2776) - added:
must_useattribute onAppendHeaders(#2846) - added:
must_useattribute onErrorResponse(#2846) - added:
must_useattribute onIntoResponse::into_response(#2846) - added:
must_useattribute onIntoResponsePartstrait methods (#2846) - added: Implement
CopyforDefaultBodyLimit(#2875) - added:
DefaultBodyLimit::maxandDefaultBodyLimit::disableare now allowed in const context (#2875)
- added: Derive
-
0.4.313 Jan 2024 -
0.4.229 Dec 2023 -
0.4.104 Dec 2023 -
0.4.027 Nov 2023Release notes
Open source →- added: Implement
IntoResponsefor(R,) where R: IntoResponse(#2143) - fixed: Fix broken docs links (#2164)
- fixed: Clearly document applying
DefaultBodyLimitto individual routes (#2157) - breaking: The following types/traits are no longer generic over the request body
(i.e. the
Btype param has been removed) ([#1751] and [#1789]):FromRequestPartsFromRequestRequestExt
- breaking: axum no longer re-exports
hyper::Bodyas that type is removed in hyper 1.0. Instead axum has its own body type ataxum_core::body::Body([#1751])
- added: Implement
-
0.3.411 Apr 2023 -
0.3.303 Mar 2023Release notes
Open source →- fixed: Add
#[must_use]attributes to types that do nothing unless used (#1809)
- fixed: Add
-
0.3.220 Jan 2023 -
0.3.109 Jan 2023 -
0.3.025 Nov 2022Release notes
Open source →- added: Added new
FromRequestPartstrait. See axum's changelog for more details (#1272) - breaking:
FromRequesthas been reworked andRequestPartshas been removed. See axum's changelog for more details (#1272) - breaking:
BodyAlreadyExtractedhas been removed (#1272) - breaking:
AppendHeadersnow works on anyimpl IntoIterator(#1495)
<details> <summary>0.3.0 Pre-Releases</summary>
- added: Added new
-
0.3.0-rc.309 Nov 2022 pre-release -
0.3.0-rc.211 Sep 2022 pre-releaseRelease notes
Open source →-
breaking: Added default limit to how much data
Bytes::from_requestwill consume. Previously it would attempt to consume the entire request body without checking its length. This meant if a malicious peer sent an large (or infinite) request body your server might run out of memory and crash.The default limit is at 2 MB and can be disabled by adding the new
DefaultBodyLimit::disable()middleware. See its documentation for more details.This also applies to
Stringwhich usedBytes::from_requestinternally.(#1346)
-
-
0.3.0-rc.123 Aug 2022 pre-releaseRelease notes
Open source →- breaking:
FromRequesthas been reworked andRequestPartshas been removed. See axum's changelog for more details (#1272) - added: Added new
FromRequestPartstrait. See axum's changelog for more details (#1272) - breaking:
BodyAlreadyExtractedhas been removed (#1272)
</details>
- breaking:
-
0.2.920 Oct 2022Nothing published for this version
-
0.2.810 Sep 2022Release notes
Open source →-
breaking: Added default limit to how much data
Bytes::from_requestwill consume. Previously it would attempt to consume the entire request body without checking its length. This meant if a malicious peer sent an large (or infinite) request body your server might run out of memory and crash.The default limit is at 2 MB and can be disabled by adding the new
DefaultBodyLimit::disable()middleware. See its documentation for more details.This also applies to
Stringwhich usedBytes::from_requestinternally.(#1346)
-
-
0.2.710 Jul 2022 -
0.2.618 Jun 2022 -
0.2.508 Jun 2022 -
0.2.402 May 2022Release notes
Open source →- added: Implement
IntoResponseandIntoResponsePartsforhttp::Extensions(#975) - added: Implement
IntoResponsefor(http::response::Parts, impl IntoResponse)(#950) - added: Implement
IntoResponsefor(http::response::Response<()>, impl IntoResponse)(#950) - added: Implement
IntoResponse for (Parts | Request<()>, $(impl IntoResponseParts)+, impl IntoResponse)(#980)
- added: Implement
-
0.2.326 Apr 2022Release notes
Open source →- added: Add
response::ErrorResponseandresponse::ResultforIntoResponse-based error handling (#921)
- added: Add
-
0.2.219 Apr 2022Release notes
Open source →- added: Add
AppendHeadersfor appending headers to a response rather than overriding them (#927)
- added: Add
-
0.2.103 Apr 2022Release notes
Open source →- added: Add
RequestParts::extractwhich allows applying an extractor as a method call (#897)
- added: Add
-
0.2.031 Mar 2022Release notes
Open source →-
added: Add
IntoResponsePartstrait which allows defining custom response types for adding headers or extensions to responses (#797) -
breaking: Using
HeaderMapas an extractor will no longer remove the headers and thus they'll still be accessible to other extractors, such asaxum::extract::Json. InsteadHeaderMapwill clone the headers. You should prefer to useTypedHeaderto extract only the headers you need (#698)This includes these breaking changes:
RequestParts::take_headershas been removed.RequestParts::headersreturns&HeaderMap.RequestParts::headers_mutreturns&mut HeaderMap.HeadersAlreadyExtractedhas been removed.- The
HeadersAlreadyExtractedvariant has been removed from these rejections:RequestAlreadyExtractedRequestPartsAlreadyExtracted
<HeaderMap as FromRequest<_>>::Rejectionhas been changed tostd::convert::Infallible.
-
breaking:
axum::http::Extensionsis no longer an extractor (ie it doesn't implementFromRequest). Theaxum::extract::Extensionextractor is not impacted by this and works the same. This change makes it harder to accidentally remove all extensions which would result in confusing errors elsewhere (#699) This includes these breaking changes:RequestParts::take_extensionshas been removed.RequestParts::extensionsreturns&Extensions.RequestParts::extensions_mutreturns&mut Extensions.RequestAlreadyExtractedhas been removed.<Request as FromRequest>::Rejectionis nowBodyAlreadyExtracted.<http::request::Parts as FromRequest>::Rejectionis nowInfallible.ExtensionsAlreadyExtractedhas been removed.
-
breaking:
RequestParts::body_mutnow returns&mut Option<B>so the body can be swapped (#869)
-
-
0.1.222 Feb 2022Release notes
Open source →- added: Implement
IntoResponseforbytes::BytesMutandbytes::Chain<T, U>(#767)
- added: Implement
-
0.1.106 Dec 2021Release notes
Open source →- added:
axum_core::response::Responsenow exists as a shorthand for writingResponse<BoxBody>(#590)
- added:
-
0.1.002 Dec 2021 -
0.0.021 Aug 2021Nothing published for this version