~repos /rust-embed
git clone https://pyrossh.dev/repos/rust-embed.git
rust macro which loads files into the rust binary at compile time during release and loads the file from the fs during dev.
de8830ce
—
Mark Drobnak 3 years ago
Update Actix Web to 4.0
- Cargo.toml +1 -1
- examples/actix.rs +10 -22
Cargo.toml
CHANGED
|
@@ -52,7 +52,7 @@ rust-embed-impl = { version = "6.2.0", path = "impl"}
|
|
|
52
52
|
rust-embed-utils = { version = "7.2.0", path = "utils"}
|
|
53
53
|
|
|
54
54
|
include-flate = { version = "0.1", optional = true, features = ["stable"] }
|
|
55
|
-
actix-web = { version = "
|
|
55
|
+
actix-web = { version = "4", optional = true }
|
|
56
56
|
mime_guess = { version = "2", optional = true }
|
|
57
57
|
hex = { version = "0.4.3", optional = true }
|
|
58
58
|
tokio = { version = "1.0", optional = true, features = ["macros", "rt-multi-thread"] }
|
examples/actix.rs
CHANGED
|
@@ -1,43 +1,31 @@
|
|
|
1
|
-
use actix_web::body::Body;
|
|
2
|
-
use actix_web::{web, App, HttpResponse, HttpServer};
|
|
1
|
+
use actix_web::{web, App, HttpResponse, HttpServer, Responder};
|
|
3
2
|
use mime_guess::from_path;
|
|
4
3
|
use rust_embed::RustEmbed;
|
|
5
4
|
|
|
6
|
-
use std::borrow::Cow;
|
|
7
|
-
|
|
8
5
|
#[derive(RustEmbed)]
|
|
9
6
|
#[folder = "examples/public/"]
|
|
10
7
|
struct Asset;
|
|
11
8
|
|
|
12
9
|
fn handle_embedded_file(path: &str) -> HttpResponse {
|
|
13
10
|
match Asset::get(path) {
|
|
14
|
-
Some(content) =>
|
|
11
|
+
Some(content) => HttpResponse::Ok()
|
|
15
|
-
let body: Body = match content.data {
|
|
16
|
-
Cow::Borrowed(bytes) => bytes.into(),
|
|
17
|
-
Cow::Owned(bytes) => bytes.into(),
|
|
18
|
-
};
|
|
19
|
-
|
|
12
|
+
.content_type(from_path(path).first_or_octet_stream().as_ref())
|
|
20
|
-
|
|
13
|
+
.body(content.data.into_owned()),
|
|
21
14
|
None => HttpResponse::NotFound().body("404 Not Found"),
|
|
22
15
|
}
|
|
23
16
|
}
|
|
24
17
|
|
|
18
|
+
#[actix_web::get("/")]
|
|
25
|
-
fn index() ->
|
|
19
|
+
async fn index() -> impl Responder {
|
|
26
20
|
handle_embedded_file("index.html")
|
|
27
21
|
}
|
|
28
22
|
|
|
23
|
+
#[actix_web::get("/dist/{_:.*}")]
|
|
29
|
-
fn dist(path: web::Path<String>) ->
|
|
24
|
+
async fn dist(path: web::Path<String>) -> impl Responder {
|
|
30
|
-
handle_embedded_file(
|
|
25
|
+
handle_embedded_file(path.as_str())
|
|
31
26
|
}
|
|
32
27
|
|
|
33
28
|
#[actix_web::main]
|
|
34
29
|
async fn main() -> std::io::Result<()> {
|
|
35
|
-
HttpServer::new(|| {
|
|
36
|
-
App::new()
|
|
37
|
-
.service(web::resource("/").route(web::get().to(index)))
|
|
38
|
-
|
|
30
|
+
HttpServer::new(|| App::new().service(index).service(dist)).bind("127.0.0.1:8000")?.run().await
|
|
39
|
-
})
|
|
40
|
-
.bind("127.0.0.1:8000")?
|
|
41
|
-
.run()
|
|
42
|
-
.await
|
|
43
31
|
}
|