pub struct SimdJson<T>(pub T);Available on crate feature
simd only.Expand description
An extractor that (de)serializes JSON using SIMD-accelerated parsing.
SimdJson<T> behaves similarly to standard JSON extractors but leverages
SIMD-accelerated parsing for potentially higher performance, especially with
large JSON payloads. It automatically handles content-type validation,
request body reading, and deserialization.
The extractor also implements Responder, allowing it to be returned
directly from handler functions for JSON responses.
See also SonicJson for an alternative backend with the same API.
§Examples
use tako::extractors::simdjson::SimdJson;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize)]
struct ApiResponse {
success: bool,
message: String,
}
async fn api_handler(SimdJson(request): SimdJson<ApiResponse>) -> SimdJson<ApiResponse> {
// Process the request...
SimdJson(ApiResponse {
success: true,
message: "Request processed successfully".to_string(),
})
}Tuple Fields§
§0: TTrait Implementations§
Source§impl<'a, T> FromRequest<'a> for SimdJson<T>where
T: DeserializeOwned + Send + 'static,
impl<'a, T> FromRequest<'a> for SimdJson<T>where
T: DeserializeOwned + Send + 'static,
Auto Trait Implementations§
impl<T> Freeze for SimdJson<T>where
T: Freeze,
impl<T> RefUnwindSafe for SimdJson<T>where
T: RefUnwindSafe,
impl<T> Send for SimdJson<T>where
T: Send,
impl<T> Sync for SimdJson<T>where
T: Sync,
impl<T> Unpin for SimdJson<T>where
T: Unpin,
impl<T> UnsafeUnpin for SimdJson<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for SimdJson<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more