~repos /rust-embed

#rust#proc-macro#http

git clone https://pyrossh.dev/repos/rust-embed.git
Discussions: https://groups.google.com/g/rust-embed-devs

rust macro which loads files into the rust binary at compile time during release and loads the file from the fs during dev.


Files changed (2) hide show
  1. examples/actix.rs +4 -13
  2. src/lib.rs +6 -2
examples/actix.rs CHANGED
@@ -3,8 +3,8 @@ extern crate actix_web;
3
3
  extern crate rust_embed;
4
4
  extern crate mime_guess;
5
5
 
6
- use actix_web::{App, HttpRequest, HttpResponse, server};
7
6
  use actix_web::http::Method;
7
+ use actix_web::{server, App, HttpRequest, HttpResponse};
8
8
  use mime_guess::guess_mime_type;
9
9
 
10
10
  #[derive(RustEmbed)]
@@ -13,11 +13,7 @@ struct Asset;
13
13
 
14
14
  fn handle_embedded_file(path: &str) -> HttpResponse {
15
15
  match Asset::get(path) {
16
- Some(content) => {
17
- HttpResponse::Ok()
18
- .content_type(guess_mime_type(path).as_ref())
16
+ Some(content) => HttpResponse::Ok().content_type(guess_mime_type(path).as_ref()).body(content),
19
- .body(content)
20
- }
21
17
  None => HttpResponse::NotFound().body("404 Not Found"),
22
18
  }
23
19
  }
@@ -32,13 +28,8 @@ fn dist(req: HttpRequest) -> HttpResponse {
32
28
  }
33
29
 
34
30
  fn main() {
35
- server::new(|| {
36
- App::new().route("/", Method::GET, index).route(
31
+ server::new(|| App::new().route("/", Method::GET, index).route("/dist/{_:.*}", Method::GET, dist))
37
- "/dist/{_:.*}",
38
- Method::GET,
39
- dist,
40
- )
41
- }).bind("127.0.0.1:8000")
32
+ .bind("127.0.0.1:8000")
42
33
  .unwrap()
43
34
  .run();
44
35
  }
src/lib.rs CHANGED
@@ -7,9 +7,9 @@ extern crate syn;
7
7
  extern crate walkdir;
8
8
 
9
9
  use proc_macro::TokenStream;
10
- use syn::*;
11
10
  use quote::Tokens;
12
11
  use std::path::Path;
12
+ use syn::*;
13
13
 
14
14
  #[cfg(debug_assertions)]
15
15
  fn generate_assets(ident: &syn::Ident, folder_path: String) -> quote::Tokens {
@@ -115,7 +115,11 @@ fn impl_rust_embed(ast: &syn::DeriveInput) -> Tokens {
115
115
  }
116
116
  };
117
117
  if !Path::new(&folder_path).exists() {
118
+ panic!(
118
- panic!("#[derive(RustEmbed)] folder '{}' does not exist. cwd: '{}'", folder_path, std::env::current_dir().unwrap().to_str().unwrap());
119
+ "#[derive(RustEmbed)] folder '{}' does not exist. cwd: '{}'",
120
+ folder_path,
121
+ std::env::current_dir().unwrap().to_str().unwrap()
122
+ );
119
123
  };
120
124
  generate_assets(ident, folder_path)
121
125
  }