{{ partial "header" . }}
rust's powerful actor system and most fun web framework
Forget about stringly typed objects, from request to response, everything has types.
Actix provides a lot of features out of box. WebSockets, HTTP/2, pipelining etc.
Easily create your own libraries that any Actix application can use.
Actix is blazingly fast. Check yourself.
Handler functions in actix can return a wide range of objects that
implement the Responder
trait. This makes it a breeze
to return consistent responses from your APIs.
Actix comes with a powerful extractor system that extracts data from the incoming HTTP request and passes it to your view functions. Not only does this make for a convenient API but it also means that your view functions can be synchronous code and still benefit from asynchronous IO handling.
{{ highlight `#[derive(Deserialize)] struct Event { timestamp: f64, kind: String, tags: VecHandling multipart/urlencoded form data is easy. Just define a structure that can be deserialized and actix will handle the rest.
{{ highlight `#[derive(Deserialize)] struct Register { username: String, country: String, } fn register(data: FormAn actix app comes with a URL routing system that lets you match on URLs and invoke individual handlers. For extra flexibility scopes can be used.
{{ highlight `fn index(req: HttpRequest) -> impl Responder { "Hello from the index page" } fn hello(req: HttpRequest) -> impl Responder { format!("Hello {}!", req.match_info().get("name").unwrap()) } fn main() { App::new() .resource("/", |r| r.method(Method::Get).with(index)) .resource("/hello/{name}", |r| r.method(Method::Get).with(hello)) .finish(); }` "rust" "" }}