3528fb9b015a0959268452d5b42d5544c7b98a6a
This is a modified and specialized thread pool meant for managing an acceptor in a multi-threaded way. A single handler is provided which will be invoked on each stream. Unlike the old thread pool, this returns a join guard which will block until the acceptor closes, enabling friendly behavior for the listening guard. The task pool itself is also faster as it only pays for message passing if sub-threads panic. In the optimistic case where there are few panics, this saves using channels for any other communication. This improves performance by around 15%, all the way to 105k req/sec on my machine, which usually gets about 90k. BREAKING_CHANGE: server::Listening::await is removed.
hyper
A Modern HTTP library for Rust.
Overview
Hyper is a fast, modern HTTP implementation written in and for Rust. It is a low-level typesafe abstraction over raw HTTP, providing an elegant layer over "stringly-typed" HTTP.
Hyper offers both an HTTP/S client and HTTP server which can be used to drive complex web applications written entirely in Rust.
The documentation is located at http://hyperium.github.io/hyper.
WARNING: Hyper is still under active development. The API is still changing in non-backwards-compatible ways without warning.
Example
Hello World Server:
fn hello(_: Request, res: Response<Fresh>) {
*res.status_mut() = status::Ok;
let mut res = res.start().unwrap();
res.write(b"Hello World!");
res.end().unwrap();
}
fn main() {
let server = Server::http(Ipv4Addr(127, 0, 0, 1), 1337);
server.listen(hello).unwrap();
}
Client:
fn main() {
// Create a client.
let mut client = Client::new();
// Creating an outgoing request.
let mut res = client.get("http://www.gooogle.com/")
// set a header
.header(Connection(vec![Close]))
// let 'er go!
.send().unwrap();
// Read the Response.
let body = res.read_to_string().unwrap();
println!("Response: {}", body);
}
License
Languages
Rust
94.5%
C
5.2%
Shell
0.3%