1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-07-03 20:45:46 +00:00
Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
Go to file
Aaron Hill fe13789345
Use Pin<Box<S>> in BodyStream and SizedStream (#1328)
Fixes #1321

A better fix would be to change `MessageBody` to take a `Pin<&mut
Self>`, rather than a `Pin<&mut Self>`. This will avoid requiring the
use of `Box` for all consumers by allowing the caller to determine how
to pin the `MessageBody` implementation (e.g. via stack pinning).

However, doing so is a breaking change that will affect every user of
`MessageBody`. By pinning the inner stream ourselves, we can fix the
undefined behavior without breaking the API.

I've included @sebzim4500's reproduction case as a new test case.
However, due to the nature of undefined behavior, this could pass (and
not segfault) even if underlying issue were to regress.

Unfortunately, until rust-lang/unsafe-code-guidelines#148 is resolved,
it's not even possible to write a Miri test that will pass when the bug
is fixed.

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-31 09:39:34 +09:00
.github Don't use cache in Windows CI (#1327) 2020-01-29 09:00:04 +09:00
actix-cors allow to specify multi pattern for resources 2019-12-25 20:14:44 +04:00
actix-files Fixed documentation typo for actix-files (#1278) 2020-01-15 11:09:58 -08:00
actix-framed prep actix-framed release 2019-12-25 20:17:22 +04:00
actix-http Use Pin<Box<S>> in BodyStream and SizedStream (#1328) 2020-01-31 09:39:34 +09:00
actix-identity Upgrade time to 0.2.5 (#1254) 2020-01-28 20:44:22 +09:00
actix-multipart Upgrade time to 0.2.5 (#1254) 2020-01-28 20:44:22 +09:00
actix-session Long lasting auto-prolonged session (#1292) 2020-01-29 10:26:39 +09:00
actix-web-actors update changes 2019-12-20 17:59:34 +06:00
actix-web-codegen Add ability to name a handler function as 'config' (#1290) 2020-01-26 07:22:40 +09:00
awc Rename HttpServer::start() to HttpServer::run() 2019-12-22 17:12:22 +04:00
benches Add benchmark for full stack request lifecycle (#1298) 2020-01-25 08:05:25 +09:00
examples Rename HttpServer::start() to HttpServer::run() 2019-12-22 17:12:22 +04:00
src Upgrade time to 0.2.5 (#1254) 2020-01-28 20:44:22 +09:00
test-server Upgrade time to 0.2.5 (#1254) 2020-01-28 20:44:22 +09:00
tests Use Pin<Box<S>> in BodyStream and SizedStream (#1328) 2020-01-31 09:39:34 +09:00
.appveyor.yml update deps 2018-10-08 21:58:37 -07:00
.gitignore start working on guide 2017-11-27 16:41:37 -08:00
.travis.yml use actix_rt::test for test setup 2019-11-26 11:25:50 +06:00
Cargo.toml Upgrade time to 0.2.5 (#1254) 2020-01-28 20:44:22 +09:00
CHANGES.md Upgrade time to 0.2.5 (#1254) 2020-01-28 20:44:22 +09:00
CODE_OF_CONDUCT.md code of conduct 2018-01-21 15:29:02 -08:00
codecov.yml Remove codecoverage for tests and examples (#1299) 2020-01-24 05:10:02 +09:00
LICENSE-APACHE add mit license 2017-12-17 10:08:44 -08:00
LICENSE-MIT spelling check 2018-03-24 09:35:52 +03:00
MIGRATION.md allow explicit SameSite=None cookies (#1282) 2020-01-23 10:08:23 +09:00
README.md Add dependencies instruction (#1281) 2020-01-16 23:17:17 +09:00
rustfmt.toml copy actix-web2 2019-03-01 22:51:32 -08:00

Actix web

Actix web is a small, pragmatic, and extremely fast rust web framework

Build Status codecov crates.io Join the chat at https://gitter.im/actix/actix Documentation Download Version License

Website | Chat | Examples


Actix web is a simple, pragmatic and extremely fast web framework for Rust.

Example

Dependencies:

[dependencies]
actix-web = "2"
actix-rt = "1"

Code:

use actix_web::{get, web, App, HttpServer, Responder};

#[get("/{id}/{name}/index.html")]
async fn index(info: web::Path<(u32, String)>) -> impl Responder {
    format!("Hello {}! id:{}", info.1, info.0)
}

#[actix_rt::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| App::new().service(index))
        .bind("127.0.0.1:8080")?
        .run()
        .await
}

More examples

You may consider checking out this directory for more examples.

Benchmarks

License

This project is licensed under either of

at your option.

Code of Conduct

Contribution to the actix-web crate is organized under the terms of the Contributor Covenant, the maintainer of actix-web, @fafhrd91, promises to intervene to uphold that code of conduct.