1
0
mirror of https://github.com/fafhrd91/actix-web synced 2025-09-02 09:36:39 +02:00

Make web::Data deref to Arc<T> #1214

This commit is contained in:
Nikolay Kim
2019-12-20 17:45:35 +06:00
parent 8b8a9a995d
commit e5a50f423d
4 changed files with 18 additions and 14 deletions

View File

@@ -87,10 +87,10 @@ impl<T> Data<T> {
}
impl<T> Deref for Data<T> {
type Target = T;
type Target = Arc<T>;
fn deref(&self) -> &T {
self.0.as_ref()
fn deref(&self) -> &Arc<T> {
&self.0
}
}
@@ -144,11 +144,13 @@ mod tests {
#[actix_rt::test]
async fn test_data_extractor() {
let mut srv =
init_service(App::new().data(10usize).service(
web::resource("/").to(|_: web::Data<usize>| HttpResponse::Ok()),
))
.await;
let mut srv = init_service(App::new().data("TEST".to_string()).service(
web::resource("/").to(|data: web::Data<String>| {
assert_eq!(data.to_lowercase(), "test");
HttpResponse::Ok()
}),
))
.await;
let req = TestRequest::default().to_request();
let resp = srv.call(req).await.unwrap();
@@ -220,7 +222,7 @@ mod tests {
let mut srv = init_service(App::new().data(1usize).service(
web::resource("/").data(10usize).route(web::get().to(
|data: web::Data<usize>| {
assert_eq!(*data, 10);
assert_eq!(**data, 10);
let _ = data.clone();
HttpResponse::Ok()
},