~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.


087fb35a Bernardo

7 years ago
avoid panics in rocket example
Files changed (1) hide show
  1. 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.clone()).map_or_else(
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
- |d| response::Response::build().header(content_type).sized_body(Cursor::new(d)).ok(),
38
+ response::Response::build().header(content_type).sized_body(Cursor::new(d)).ok()
39
+ },
34
40
  )
35
41
  }
36
42