1
0
mirror of https://github.com/fafhrd91/actix-web synced 2024-11-27 17:52:56 +01:00
Actix web is a small, pragmatic, and extremely fast rust web framework. https://actix.rs
Go to file
Aaron Hill 276a5a3ee4
Replace UnsafeCell with Cell in DateServiceInner (#1325)
* Replace `UnsafeCell` with `Cell` in `DateServiceInner`

This ensures that it's impossible to cause undefined behavior by
accidentally violating Rust's aliasing rules (e.g. passing a closure to
`set_date` which ends up invoking `reset` or `update` on the inner
`DateServiceInner`).

There might be a tiny amount of overhead from copying the `Option<(Date,
Instant)>` rather than taking a reference, but it shouldn't be
measurable.

Since the wrapped type is `Copy`, a `Cell` can be used, avoiding the
runtime overhead of a `RefCell`.

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-29 21:05:08 +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 Replace UnsafeCell with Cell in DateServiceInner (#1325) 2020-01-29 21:05:08 +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 Rename HttpServer::start() to HttpServer::run() 2019-12-22 17:12:22 +04: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.