# actix_web::actix::fut::ActorFuture - Rust
API documentation for the Rust `ActorFuture` trait in crate `actix_web`.
Keywords: rust, rustlang, rust-lang, ActorFuture

# Trait actix_web::actix::fut::ActorFuture [−]

    pub trait ActorFuture {
        type Item;
        type Error;
        type Actor: Actor;
        fn poll(
            &mut self,
            srv: &mut Self::Actor,
            ctx: &mut <Self::Actor as Actor>::Context
        ) -> Result<Async<Self::Item>, Self::Error>;

        fn map<F, U>(self, f: F) -> Map<Self, F>
        where
            F: FnOnce(Self::Item, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> U,
        { ... }
        fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
        where
            F: FnOnce(Self::Error, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> E,
        { ... }
        fn drop_err(self) -> DropErr<Self> { ... }
        fn from_err<E>(self) -> FromErr<Self, E>
        where
            E: From<Self::Error>,
        { ... }
        fn then<F, B>(self, f: F) -> Then<Self, B, F>
        where
            B: IntoActorFuture<Actor = Self::Actor>,
            F: FnOnce(Result<Self::Item, Self::Error>, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> B,
        { ... }
        fn and_then<F, B>(self, f: F) -> AndThen<Self, B, F>
        where
            B: IntoActorFuture<Error = Self::Error, Actor = Self::Actor>,
            F: FnOnce(Self::Item, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> B,
        { ... }
        fn timeout(self, timeout: Duration, err: Self::Error) -> Timeout<Self> { ... }
    }

Trait for types which are a placeholder of a value that may become available at some later point in time.

This is similar to `futures::Future` trait, except it works with `Actor`

## Associated Types

### `type Item`

The type of value that this future will resolved with if it is successful.

### `type Error`

The type of error that this future will resolve with if it fails in a normal fashion.

### `type Actor: Actor`

The actor within which this future runs

## Required Methods

### `fn poll(
&mut self,
srv: &mut Self::Actor,
ctx: &mut <Self::Actor as Actor>::Context
) -> Result<Async<Self::Item>, Self::Error>`

## Provided Methods

### `fn map<F, U>(self, f: F) -> Map<Self, F> where
F: FnOnce(Self::Item, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> U,`

Map this future's result to a different type, returning a new future of the resulting type.

### `fn map_err<F, E>(self, f: F) -> MapErr<Self, F> where
F: FnOnce(Self::Error, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> E,`

Map this future's error to a different error, returning a new future.

### `fn drop_err(self) -> DropErr<Self>`

Drop this future's error, returning a new future.

### `fn from_err<E>(self) -> FromErr<Self, E> where
E: From<Self::Error>,`

Map this future's error to any error implementing `From` for this future's `Error`, returning a new future.

### `fn then<F, B>(self, f: F) -> Then<Self, B, F> where
B: IntoActorFuture<Actor = Self::Actor>,
F: FnOnce(Result<Self::Item, Self::Error>, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> B,`

Chain on a computation for when a future finished, passing the result of the future to the provided closure `f`.

### `fn and_then<F, B>(self, f: F) -> AndThen<Self, B, F> where
B: IntoActorFuture<Error = Self::Error, Actor = Self::Actor>,
F: FnOnce(Self::Item, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> B,`

Execute another future after this one has resolved successfully.

### `fn timeout(self, timeout: Duration, err: Self::Error) -> Timeout<Self>`

Add timeout to futures chain.

`err` value get returned as a timeout error.

## Implementations on Foreign Types

###

`impl<F> ActorFuture for Box<F> where F: ActorFuture + ?Sized,`

#### `type Item = <F as ActorFuture>::Item`

#### `type Error = <F as ActorFuture>::Error`

#### `type Actor = <F as ActorFuture>::Actor`

####

`fn poll( &mut self, srv: &mut <Box<F> as ActorFuture>::Actor, ctx: &mut <<Box<F> as ActorFuture>::Actor as Actor>::Context ) -> Result<Async<<Box<F> as ActorFuture>::Item>, <Box<F> as ActorFuture>::Error>` |

####

`fn map<F, U>(self, f: F) -> Map<Self, F> where F: FnOnce(Self::Item, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> U,` |

####

`fn map_err<F, E>(self, f: F) -> MapErr<Self, F> where F: FnOnce(Self::Error, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> E,` |

####

`fn drop_err(self) -> DropErr<Self>` |

####

`fn from_err<E>(self) -> FromErr<Self, E> where E: From<Self::Error>,` |

####

`fn then<F, B>(self, f: F) -> Then<Self, B, F> where B: IntoActorFuture<Actor = Self::Actor>, F: FnOnce(Result<Self::Item, Self::Error>, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> B,` |

####

`fn and_then<F, B>(self, f: F) -> AndThen<Self, B, F> where B: IntoActorFuture<Error = Self::Error, Actor = Self::Actor>, F: FnOnce(Self::Item, &mut Self::Actor, &mut <Self::Actor as Actor>::Context) -> B,` |

####

`fn timeout(self, timeout: Duration, err: Self::Error) -> Timeout<Self>` |

## Implementors

- `impl<A: Actor> ActorFuture for Drain<A> type Item = (); type Error = (); type Actor = A;` | [src]

- `impl<U, A, F> ActorFuture for MapErr<A, F> where A: ActorFuture, F: FnOnce(<A as ActorFuture>::Error, &mut <A as ActorFuture>::Actor, &mut <<A as ActorFuture>::Actor as Actor>::Context) -> U, type Item = <A as ActorFuture>::Item; type Error = U; type Actor = <A as ActorFuture>::Actor;` |

- `impl<A, E> ActorFuture for FromErr<A, E> where A: ActorFuture, E: From<<A as ActorFuture>::Error>, type Item = <A as ActorFuture>::Item; type Error = E; type Actor = <A as ActorFuture>::Actor;` |

- `impl<S> ActorFuture for StreamFinish<S> where S: ActorStream, type Item = (); type Error = <S as ActorStream>::Error; type Actor = <S as ActorStream>::Actor;` |

- `impl<F> ActorFuture for Timeout<F> where F: ActorFuture, type Item = <F as ActorFuture>::Item; type Error = <F as ActorFuture>::Error; type Actor = <F as ActorFuture>::Actor;` |

- `impl<A, B> ActorFuture for Either<A, B> where A: ActorFuture, B: ActorFuture<Item = <A as ActorFuture>::Item, Error = <A as ActorFuture>::Error, Actor = <A as ActorFuture>::Actor>, type Item = <A as ActorFuture>::Item; type Error = <A as ActorFuture>::Error; type Actor = <A as ActorFuture>::Actor;` |

- `impl<U, A, F> ActorFuture for Map<A, F> where A: ActorFuture, F: FnOnce(<A as ActorFuture>::Item, &mut <A as ActorFuture>::Actor, &mut <<A as ActorFuture>::Actor as Actor>::Context) -> U, type Item = U; type Error = <A as ActorFuture>::Error; type Actor = <A as ActorFuture>::Actor;` |

- `impl<S, F, Fut, T> ActorFuture for StreamFold<S, F, Fut, T> where
  F: FnMut(T, <S as ActorStream>::Item, &mut <S as ActorStream>::Actor, &mut <<S as ActorStream>::Actor as Actor>::Context) -> Fut,
  Fut: IntoActorFuture<Item = T, Actor = <S as ActorStream>::Actor>,
  S: ActorStream,
  <S as ActorStream>::Error: From<<Fut as IntoActorFuture>::Error>, type Item = T; type Error = <S as ActorStream>::Error; type Actor = <S as ActorStream>::Actor;`

- `impl ActorFuture for TcpConnector type Item = TcpStream; type Error = ResolverError; type Actor = Resolver;` |

- `impl<A, B, F> ActorFuture for Then<A, B, F> where
  A: ActorFuture,
  B: IntoActorFuture<Actor = <A as ActorFuture>::Actor>,
  F: FnOnce(Result<<A as ActorFuture>::Item, <A as ActorFuture>::Error>, &mut <A as ActorFuture>::Actor, &mut <<A as ActorFuture>::Actor as Actor>::Context) -> B, type Item = <B as IntoActorFuture>::Item; type Error = <B as IntoActorFuture>::Error; type Actor = <A as ActorFuture>::Actor;`

- `impl<A> ActorFuture for DropErr<A> where A: ActorFuture, type Item = <A as ActorFuture>::Item; type Error = (); type Actor = <A as ActorFuture>::Actor;` |

- `impl<F, A> ActorFuture for FutureWrap<F, A> where A: Actor, F: Future, type Item = <F as Future>::Item; type Error = <F as Future>::Error; type Actor = A;` |

- `impl<T, E, A> ActorFuture for FutureResult<T, E, A> where A: Actor, type Item = T; type Error = E; type Actor = A;` |

- `impl<A, B, F> ActorFuture for AndThen<A, B, F> where
  A: ActorFuture,
  B: IntoActorFuture<Actor = <A as ActorFuture>::Actor, Error = <A as ActorFuture>::Error>,
  F: FnOnce(<A as ActorFuture>::Item, &mut <A as ActorFuture>::Actor, &mut <<A as ActorFuture>::Actor as Actor>::Context) -> B, type Item = <B as IntoActorFuture>::Item; type Error = <B as IntoActorFuture>::Error; type Actor = <A as ActorFuture>::Actor;`

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)