1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-12-20 23:26:44 +00:00
Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
Find a file
Aaron Hill b36fdc46db Remove several usages of 'unsafe' (#968)
* Replace UnsafeCell in DateServiceInner with Cell

The previous API was extremely dangerous - calling `get_ref()`
followed by `reset()` would trigger instant UB, without requiring
any `unsafe` blocks in the caller.

By making DateInner `Copy`, we can use a normal `Cell` instead
of an `UnsafeCell`. This makes it impossible to cause UB (or even panic)
with the API.

* Split unsafe block HttpServiceHandlerResponse

Also add explanation of the safety of the usage of `unsafe`

* Replace UnsafeCell with RefCell in PayloadRef

This ensures that a mistake in the usage of 'get_mut' will cause
a panic, not undefined behavior.
2019-07-18 04:45:17 +06:00
actix-cors nightly clippy warnings 2019-07-17 15:53:51 +06:00
actix-files nightly clippy warnings 2019-07-17 15:53:51 +06:00
actix-framed nightly clippy warnings 2019-07-17 15:53:51 +06:00
actix-http Remove several usages of 'unsafe' (#968) 2019-07-18 04:45:17 +06:00
actix-identity nightly clippy warnings 2019-07-17 15:53:51 +06:00
actix-multipart Remove several usages of 'unsafe' (#968) 2019-07-18 04:45:17 +06:00
actix-session nightly clippy warnings 2019-07-17 15:53:51 +06:00
actix-web-actors clippy warnings 2019-07-17 15:08:30 +06:00
actix-web-codegen clippy warnings 2019-07-17 15:08:30 +06:00
awc nightly clippy warnings 2019-07-17 15:53:51 +06:00
examples Allow to use any service as default service 2019-04-13 22:25:00 -07:00
src nightly clippy warnings 2019-07-17 15:53:51 +06:00
test-server clippy warnings 2019-07-17 15:08:30 +06:00
tests more tests 2019-04-17 17:48:25 -07: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 disable travis cargo cache 2019-07-01 11:33:11 +06:00
Cargo.toml nightly clippy warnings 2019-07-17 15:53:51 +06:00
CHANGES.md prepare actix-web release 2019-07-17 12:07:12 +06:00
CODE_OF_CONDUCT.md code of conduct 2018-01-21 15:29:02 -08: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 Extractor configuration Migration (#937) 2019-06-24 07:16:04 +06:00
README.md update bench link 2019-07-11 14:45:58 +06:00
rustfmt.toml copy actix-web2 2019-03-01 22:51:32 -08:00

Actix web Build Status codecov crates.io Join the chat at https://gitter.im/actix/actix

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

Documentation & community resources

Example

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

fn index(info: web::Path<(u32, String)>) -> impl Responder {
    format!("Hello {}! id:{}", info.1, info.0)
}

fn main() -> std::io::Result<()> {
    HttpServer::new(
        || App::new().service(
              web::resource("/{id}/{name}/index.html").to(index)))
        .bind("127.0.0.1:8080")?
        .run()
}

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.