Always store state in an Arc (#1270)

* Add extension and state benchmarks

* wip

* Arc the state everywhere

* don't require `S: Clone`

* fix example
This commit is contained in:
David Pedersen
2022-08-17 20:08:24 +00:00
committed by GitHub
parent 423308de3c
commit e7f1c88cd4
56 changed files with 199 additions and 141 deletions
@@ -82,7 +82,7 @@ struct PrintRequestBody;
#[async_trait]
impl<S> FromRequest<S, BoxBody> for PrintRequestBody
where
S: Send + Clone,
S: Clone + Send + Sync,
{
type Rejection = Response;
@@ -58,7 +58,7 @@ struct Json<T>(T);
#[async_trait]
impl<S, B, T> FromRequest<S, B> for Json<T>
where
S: Send,
S: Send + Sync,
// these trait bounds are copied from `impl FromRequest for axum::Json`
T: DeserializeOwned,
B: axum::body::HttpBody + Send,
@@ -57,7 +57,7 @@ where
// these trait bounds are copied from `impl FromRequest for axum::extract::path::Path`
T: DeserializeOwned + Send,
B: Send,
S: Send,
S: Send + Sync,
{
type Rejection = (StatusCode, axum::Json<PathError>);
+1 -1
View File
@@ -124,7 +124,7 @@ impl AuthBody {
#[async_trait]
impl<S, B> FromRequest<S, B> for Claims
where
S: Send,
S: Send + Sync,
B: Send,
{
type Rejection = AuthError;
+1 -1
View File
@@ -63,7 +63,7 @@ pub struct ValidatedForm<T>(pub T);
impl<T, S, B> FromRequest<S, B> for ValidatedForm<T>
where
T: DeserializeOwned + Validate,
S: Send,
S: Send + Sync,
B: http_body::Body + Send,
B::Data: Send,
B::Error: Into<BoxError>,
+1 -1
View File
@@ -51,7 +51,7 @@ enum Version {
impl<S, B> FromRequest<S, B> for Version
where
B: Send,
S: Send,
S: Send + Sync,
{
type Rejection = Response;