diff --git a/src/handler.rs b/src/handler.rs
index 32a3d99b2..ff52fc17f 100644
--- a/src/handler.rs
+++ b/src/handler.rs
@@ -97,9 +97,33 @@ impl Responder for Either
}
}
-
-#[doc(hidden)]
/// Convenience trait that convert `Future` object into `Boxed` future
+///
+/// For example loading json from request's body is async operation.
+///
+/// ```rust
+/// # extern crate actix_web;
+/// # extern crate futures;
+/// # #[macro_use] extern crate serde_derive;
+/// use actix_web::*;
+/// use futures::future::Future;
+///
+/// #[derive(Deserialize, Debug)]
+/// struct MyObj {
+/// name: String,
+/// }
+///
+/// fn index(mut req: HttpRequest) -> Box> {
+/// req.json() // <- get JsonBody future
+/// .from_err()
+/// .and_then(|val: MyObj| { // <- deserialized value
+/// Ok(httpcodes::HttpOk.into())
+/// })
+/// // Construct boxed future by using `AsyncResponder::responder()` method
+/// .responder()
+/// }
+/// # fn main() {}
+/// ```
pub trait AsyncResponder: Sized {
fn responder(self) -> Box>;
}
diff --git a/src/server/helpers.rs b/src/server/helpers.rs
index af76b52d5..c50317a9d 100644
--- a/src/server/helpers.rs
+++ b/src/server/helpers.rs
@@ -1,7 +1,6 @@
use std::{mem, ptr, slice};
use std::cell::RefCell;
use std::rc::Rc;
-use std::ops::{Deref, DerefMut};
use std::collections::VecDeque;
use bytes::{BufMut, BytesMut};
use http::Version;
@@ -50,21 +49,6 @@ impl Drop for SharedHttpInnerMessage {
}
}
-impl Deref for SharedHttpInnerMessage {
- type Target = HttpInnerMessage;
-
- fn deref(&self) -> &HttpInnerMessage {
- self.get_ref()
- }
-}
-
-impl DerefMut for SharedHttpInnerMessage {
-
- fn deref_mut(&mut self) -> &mut HttpInnerMessage {
- self.get_mut()
- }
-}
-
impl Clone for SharedHttpInnerMessage {
fn clone(&self) -> SharedHttpInnerMessage {