~repos /rust-embed

#rust#proc-macro#http

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.


4527045d pyrossh

1 year ago
lib: re-export RustEmbed as Embed
examples/actix.rs CHANGED
@@ -1,8 +1,8 @@
1
1
  use actix_web::{web, App, HttpResponse, HttpServer, Responder};
2
2
  use mime_guess::from_path;
3
- use rust_embed::RustEmbed;
3
+ use rust_embed::Embed;
4
4
 
5
- #[derive(RustEmbed)]
5
+ #[derive(Embed)]
6
6
  #[folder = "examples/public/"]
7
7
  struct Asset;
8
8
 
examples/axum-spa/main.rs CHANGED
@@ -3,12 +3,12 @@ use axum::{
3
3
  response::{Html, IntoResponse, Response},
4
4
  routing::Router,
5
5
  };
6
- use rust_embed::RustEmbed;
6
+ use rust_embed::Embed;
7
7
  use std::net::SocketAddr;
8
8
 
9
9
  static INDEX_HTML: &str = "index.html";
10
10
 
11
- #[derive(RustEmbed)]
11
+ #[derive(Embed)]
12
12
  #[folder = "examples/axum-spa/assets/"]
13
13
  struct Assets;
14
14
 
examples/axum.rs CHANGED
@@ -3,7 +3,7 @@ use axum::{
3
3
  response::{Html, IntoResponse, Response},
4
4
  routing::{get, Router},
5
5
  };
6
- use rust_embed::RustEmbed;
6
+ use rust_embed::Embed;
7
7
  use std::net::SocketAddr;
8
8
 
9
9
  #[tokio::main]
@@ -46,7 +46,7 @@ async fn not_found() -> Html<&'static str> {
46
46
  Html("<h1>404</h1><p>Not Found</p>")
47
47
  }
48
48
 
49
- #[derive(RustEmbed)]
49
+ #[derive(Embed)]
50
50
  #[folder = "examples/public/"]
51
51
  struct Asset;
52
52
 
examples/basic.rs CHANGED
@@ -1,6 +1,6 @@
1
- use rust_embed::RustEmbed;
1
+ use rust_embed::Embed;
2
2
 
3
- #[derive(RustEmbed)]
3
+ #[derive(Embed)]
4
4
  #[folder = "examples/public/"]
5
5
  struct Asset;
6
6
 
examples/poem.rs CHANGED
@@ -14,7 +14,7 @@ async fn main() -> Result<(), std::io::Error> {
14
14
  Ok(())
15
15
  }
16
16
 
17
- #[derive(rust_embed::RustEmbed)]
17
+ #[derive(rust_embed::Embed)]
18
18
  #[folder = "examples/public/"]
19
19
  struct Asset;
20
20
  pub(crate) struct StaticEmbed;
examples/rocket.rs CHANGED
@@ -3,13 +3,13 @@ extern crate rocket;
3
3
 
4
4
  use rocket::http::ContentType;
5
5
  use rocket::response::content::RawHtml;
6
- use rust_embed::RustEmbed;
6
+ use rust_embed::Embed;
7
7
 
8
8
  use std::borrow::Cow;
9
9
  use std::ffi::OsStr;
10
10
  use std::path::PathBuf;
11
11
 
12
- #[derive(RustEmbed)]
12
+ #[derive(Embed)]
13
13
  #[folder = "examples/public/"]
14
14
  struct Asset;
15
15
 
examples/salvo.rs CHANGED
@@ -12,7 +12,7 @@ async fn main() -> Result<(), std::io::Error> {
12
12
  Ok(())
13
13
  }
14
14
 
15
- #[derive(rust_embed::RustEmbed)]
15
+ #[derive(rust_embed::Embed)]
16
16
  #[folder = "examples/public/"]
17
17
  struct Asset;
18
18
 
examples/warp.rs CHANGED
@@ -1,7 +1,7 @@
1
- use rust_embed::RustEmbed;
1
+ use rust_embed::Embed;
2
2
  use warp::{http::header::HeaderValue, path::Tail, reply::Response, Filter, Rejection, Reply};
3
3
 
4
- #[derive(RustEmbed)]
4
+ #[derive(Embed)]
5
5
  #[folder = "examples/public/"]
6
6
  struct Asset;
7
7
 
readme.md CHANGED
@@ -21,7 +21,7 @@ The path resolution works as follows:
21
21
  - In `release` or when `debug-embed` feature is enabled, the folder path is resolved relative to where `Cargo.toml` is.
22
22
 
23
23
  ```rust
24
- #[derive(RustEmbed)]
24
+ #[derive(Embed)]
25
25
  #[folder = "examples/public/"]
26
26
  struct Asset;
27
27
  ```
@@ -98,7 +98,7 @@ Always embed the files in the binary, even in debug mode.
98
98
  Allow environment variables to be used in the `folder` path. Example:
99
99
 
100
100
  ```rust
101
- #[derive(RustEmbed)]
101
+ #[derive(Embed)]
102
102
  #[folder = "$CARGO_MANIFEST_DIR/foo"]
103
103
  struct Asset;
104
104
  ```
@@ -116,7 +116,9 @@ Matching is done on relative file paths, via [`globset`].
116
116
  Example:
117
117
 
118
118
  ```rust
119
+ use rust_embed::Embed;
120
+
119
- #[derive(RustEmbed)]
121
+ #[derive(Embed)]
120
122
  #[folder = "examples/public/"]
121
123
  #[include = "*.html"]
122
124
  #[include = "images/*"]
@@ -127,9 +129,9 @@ struct Asset;
127
129
  ## Usage
128
130
 
129
131
  ```rust
130
- use rust_embed::RustEmbed;
132
+ use rust_embed::Embed;
131
133
 
132
- #[derive(RustEmbed)]
134
+ #[derive(Embed)]
133
135
  #[folder = "examples/public/"]
134
136
  #[prefix = "prefix/"]
135
137
  struct Asset;
src/lib.rs CHANGED
@@ -21,9 +21,9 @@ pub extern crate rust_embed_utils as utils;
21
21
  ///
22
22
  /// This trait is meant to be derived like so:
23
23
  /// ```
24
- /// use rust_embed::RustEmbed;
24
+ /// use rust_embed::Embed;
25
25
  ///
26
- /// #[derive(RustEmbed)]
26
+ /// #[derive(Embed)]
27
27
  /// #[folder = "examples/public/"]
28
28
  /// struct Asset;
29
29
  ///
@@ -50,6 +50,8 @@ pub trait RustEmbed {
50
50
  fn iter() -> Filenames;
51
51
  }
52
52
 
53
+ pub use RustEmbed as Embed;
54
+
53
55
  /// An iterator over filenames.
54
56
  ///
55
57
  /// This enum exists for optimization purposes, to avoid boxing the iterator in
tests/include_exclude.rs CHANGED
@@ -1,6 +1,6 @@
1
- use rust_embed::RustEmbed;
1
+ use rust_embed::Embed;
2
2
 
3
- #[derive(RustEmbed)]
3
+ #[derive(Embed)]
4
4
  #[folder = "examples/public/"]
5
5
  struct AllAssets;
6
6
 
@@ -13,7 +13,7 @@ fn get_works() {
13
13
  assert_eq!(AllAssets::iter().count(), 7);
14
14
  }
15
15
 
16
- #[derive(RustEmbed)]
16
+ #[derive(Embed)]
17
17
  #[folder = "examples/public/"]
18
18
  #[include = "*.html"]
19
19
  #[include = "images/*"]
@@ -27,7 +27,7 @@ fn including_some_assets_works() {
27
27
  assert_eq!(IncludeSomeAssets::iter().count(), 4);
28
28
  }
29
29
 
30
- #[derive(RustEmbed)]
30
+ #[derive(Embed)]
31
31
  #[folder = "examples/public/"]
32
32
  #[exclude = "*.html"]
33
33
  #[exclude = "images/*"]
@@ -42,7 +42,7 @@ fn excluding_some_assets_works() {
42
42
  assert_eq!(ExcludeSomeAssets::iter().count(), 3);
43
43
  }
44
44
 
45
- #[derive(RustEmbed)]
45
+ #[derive(Embed)]
46
46
  #[folder = "examples/public/"]
47
47
  #[include = "images/*"]
48
48
  #[exclude = "*.txt"]
@@ -55,7 +55,7 @@ fn exclude_has_higher_priority() {
55
55
  assert_eq!(ExcludePriorityAssets::iter().count(), 2);
56
56
  }
57
57
 
58
- #[derive(RustEmbed)]
58
+ #[derive(Embed)]
59
59
  #[folder = "examples/public/symlinks"]
60
60
  #[include = "main.js"]
61
61
  struct IncludeSymlink;
tests/interpolated_path.rs CHANGED
@@ -1,7 +1,7 @@
1
- use rust_embed::RustEmbed;
1
+ use rust_embed::Embed;
2
2
 
3
3
  /// Test doc comment
4
- #[derive(RustEmbed)]
4
+ #[derive(Embed)]
5
5
  #[folder = "$CARGO_MANIFEST_DIR/examples/public/"]
6
6
  struct Asset;
7
7
 
@@ -26,7 +26,7 @@ fn iter_works() {
26
26
  fn trait_works_generic() {
27
27
  trait_works_generic_helper::<Asset>();
28
28
  }
29
- fn trait_works_generic_helper<E: rust_embed::RustEmbed>() {
29
+ fn trait_works_generic_helper<E: rust_embed::Embed>() {
30
30
  let mut num_files = 0;
31
31
  for file in E::iter() {
32
32
  assert!(E::get(file.as_ref()).is_some());
tests/lib.rs CHANGED
@@ -1,10 +1,14 @@
1
- use rust_embed::RustEmbed;
1
+ use rust_embed::{Embed, RustEmbed};
2
2
 
3
3
  /// Test doc comment
4
- #[derive(RustEmbed)]
4
+ #[derive(Embed)]
5
5
  #[folder = "examples/public/"]
6
6
  struct Asset;
7
7
 
8
+ #[derive(RustEmbed)]
9
+ #[folder = "examples/public/"]
10
+ struct AssetOld;
11
+
8
12
  #[test]
9
13
  fn get_works() {
10
14
  assert!(Asset::get("index.html").is_some(), "index.html should exist");
@@ -12,6 +16,14 @@ fn get_works() {
12
16
  assert!(Asset::get("images/llama.png").is_some(), "llama.png should exist");
13
17
  }
14
18
 
19
+ // Todo remove this test and rename RustEmbed trait to Embed on a new major release
20
+ #[test]
21
+ fn get_old_name_works() {
22
+ assert!(AssetOld::get("index.html").is_some(), "index.html should exist");
23
+ assert!(AssetOld::get("gg.html").is_none(), "gg.html should not exist");
24
+ assert!(AssetOld::get("images/llama.png").is_some(), "llama.png should exist");
25
+ }
26
+
15
27
  /// Using Windows-style path separators (`\`) is acceptable
16
28
  #[test]
17
29
  fn get_windows_style() {
@@ -35,7 +47,7 @@ fn iter_works() {
35
47
  fn trait_works_generic() {
36
48
  trait_works_generic_helper::<Asset>();
37
49
  }
38
- fn trait_works_generic_helper<E: rust_embed::RustEmbed>() {
50
+ fn trait_works_generic_helper<E: rust_embed::Embed>() {
39
51
  let mut num_files = 0;
40
52
  for file in E::iter() {
41
53
  assert!(E::get(file.as_ref()).is_some());
tests/metadata.rs CHANGED
@@ -1,8 +1,8 @@
1
- use rust_embed::{EmbeddedFile, RustEmbed};
1
+ use rust_embed::{Embed, EmbeddedFile};
2
2
  use sha2::Digest;
3
3
  use std::{fs, time::SystemTime};
4
4
 
5
- #[derive(RustEmbed)]
5
+ #[derive(Embed)]
6
6
  #[folder = "examples/public/"]
7
7
  struct Asset;
8
8
 
tests/metadata_only.rs CHANGED
@@ -1,6 +1,6 @@
1
- use rust_embed::{EmbeddedFile, RustEmbed};
1
+ use rust_embed::{Embed, EmbeddedFile};
2
2
 
3
- #[derive(RustEmbed)]
3
+ #[derive(Embed)]
4
4
  #[folder = "examples/public/"]
5
5
  #[metadata_only = true]
6
6
  struct Asset;
tests/mime_guess.rs CHANGED
@@ -1,6 +1,6 @@
1
- use rust_embed::{EmbeddedFile, RustEmbed};
1
+ use rust_embed::{Embed, EmbeddedFile};
2
2
 
3
- #[derive(RustEmbed)]
3
+ #[derive(Embed)]
4
4
  #[folder = "examples/public/"]
5
5
  struct Asset;
6
6
 
tests/path_traversal_attack.rs CHANGED
@@ -1,6 +1,6 @@
1
- use rust_embed::RustEmbed;
1
+ use rust_embed::Embed;
2
2
 
3
- #[derive(RustEmbed)]
3
+ #[derive(Embed)]
4
4
  #[folder = "examples/public/"]
5
5
  struct Assets;
6
6
 
@@ -12,7 +12,7 @@ fn path_traversal_attack_fails() {
12
12
  assert!(Assets::get("../basic.rs").is_none());
13
13
  }
14
14
 
15
- #[derive(RustEmbed)]
15
+ #[derive(Embed)]
16
16
  #[folder = "examples/axum-spa/"]
17
17
  struct AxumAssets;
18
18
 
tests/prefix.rs CHANGED
@@ -1,6 +1,6 @@
1
- use rust_embed::RustEmbed;
1
+ use rust_embed::Embed;
2
2
 
3
- #[derive(RustEmbed)]
3
+ #[derive(Embed)]
4
4
  #[folder = "examples/public/"]
5
5
  #[prefix = "prefix/"]
6
6
  struct Asset;