Sean McArthur ced949cb6b feat(server): allow !Send Servers
Until this commit, servers have required that `Service` and their
`Future` to be `Send`, since the server needs to spawn some internal
tasks to an executor, and by default, that is `tokio::spawn`, which
could be spawning to a threadpool. This was true even if the user were
certain there was no threadpool involved, and was instead using a
different single-threaded runtime, like
`tokio::runtime::current_thread`.

This changes makes all the server pieces generic over an `E`, which is
essentially `Executor<PrivateTypes<Server::Future>>`. There's a new set
of internal traits, `H2Exec` and `NewSvcExec`, which allow for the type
signature to only show the generics that the user is providing. The
traits cannot be implemented explicitly, but there are blanket
implementations for `E: Executor<SpecificType>`. If the user provides
their own executor, it simply needs to have a generic `impl<F>
Executor<F> for MyExec`. That impl can have bounds deciding whether to
require `F: Send`. If the executor does require `Send`, and the
`Service` futures are `!Send`, there will be compiler errors.

To prevent a breaking change, all the types that gained the `E` generic
have a default type set, which is the original `tokio::spawn` executor.
2018-10-16 13:21:45 -07:00
2018-10-16 13:21:45 -07:00
2014-08-30 14:18:28 -07:00
2018-10-16 13:21:45 -07:00
2018-10-16 10:22:02 -07:00
2014-08-30 14:18:28 -07:00

hyper

Travis Build Status Appveyor Build status Coverage Status MIT licensed crates.io Released API docs Master API docs

A fast and correct HTTP implementation for Rust.

Get started by looking over the guides.

Overview

hyper is a fast, safe HTTP implementation written in and for Rust.

hyper offers both an HTTP client and server which can be used to drive complex web applications written entirely in Rust.

hyper makes use of "async IO" (non-blocking sockets) via the Tokio and Futures crates.

Be aware that hyper is still actively evolving towards 1.0, and is likely to experience breaking changes before stabilising. However, this mostly now around the instability of Future and async. The rest of the API is rather stable now. You can also see the issues in the upcoming milestones.

Contributing

To get involved, take a look at CONTRIBUTING.

There are two main avenues for real-time chatting about hyper: a Gitter room and irc.mozilla.org/hyper. They are mirrored, so choose whichever format you prefer.

License

hyper is provided under the MIT license. See LICENSE.

Description
No description provided
Readme MIT 6.5 MiB
Languages
Rust 94.5%
C 5.2%
Shell 0.3%