~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.
087fb35a
—
Bernardo 7 years ago
avoid panics in rocket example
- examples/rocket.rs +10 -4
examples/rocket.rs
CHANGED
|
@@ -26,11 +26,17 @@ fn index<'r>() -> response::Result<'r> {
|
|
|
26
26
|
#[get("/dist/<file..>")]
|
|
27
27
|
fn dist<'r>(file: PathBuf) -> response::Result<'r> {
|
|
28
28
|
let filename = file.display().to_string();
|
|
29
|
-
let ext = file.as_path().extension().and_then(OsStr::to_str).expect("Could not get file extension");
|
|
30
|
-
let content_type = ContentType::from_extension(ext).expect("Could not get file content type");
|
|
31
|
-
Asset::get(&filename
|
|
29
|
+
Asset::get(&filename).map_or_else(
|
|
32
30
|
|| Err(Status::NotFound),
|
|
31
|
+
|d| {
|
|
32
|
+
let ext = file
|
|
33
|
+
.as_path()
|
|
34
|
+
.extension()
|
|
35
|
+
.and_then(OsStr::to_str)
|
|
36
|
+
.ok_or(Status::new(400, "Could not get file extension"))?;
|
|
37
|
+
let content_type = ContentType::from_extension(ext).ok_or(Status::new(400, "Could not get file content type"))?;
|
|
33
|
-
|
|
38
|
+
response::Response::build().header(content_type).sized_body(Cursor::new(d)).ok()
|
|
39
|
+
},
|
|
34
40
|
)
|
|
35
41
|
}
|
|
36
42
|
|