mirror of https://github.com/fafhrd91/actix-web
Implement Default and Deserialize for Data
This commit is contained in:
parent
d8df60bf4c
commit
b0ac608f03
|
@ -3,7 +3,7 @@ use std::{any::type_name, ops::Deref, sync::Arc};
|
|||
use actix_http::Extensions;
|
||||
use actix_utils::future::{err, ok, Ready};
|
||||
use futures_core::future::LocalBoxFuture;
|
||||
use serde::Serialize;
|
||||
use serde::{Deserialize, Deserializer, Serialize};
|
||||
|
||||
use crate::{dev::Payload, error, Error, FromRequest, HttpRequest};
|
||||
|
||||
|
@ -127,6 +127,11 @@ impl<T: ?Sized> From<Arc<T>> for Data<T> {
|
|||
Data(arc)
|
||||
}
|
||||
}
|
||||
impl<T: Default> Default for Data<T> {
|
||||
fn default() -> Self {
|
||||
Data::new(T::default())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> Serialize for Data<T>
|
||||
where
|
||||
|
@ -139,6 +144,17 @@ where
|
|||
self.0.serialize(serializer)
|
||||
}
|
||||
}
|
||||
impl<'de, T> Deserialize<'de> for Data<T>
|
||||
where
|
||||
T: Deserialize<'de>,
|
||||
{
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
Ok(Data::new(T::deserialize(deserializer)?))
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: ?Sized + 'static> FromRequest for Data<T> {
|
||||
type Error = Error;
|
||||
|
|
Loading…
Reference in New Issue