memory_serve/
load.rs

1#[allow(unused)]
2use crate as memory_serve;
3
4/// Include the generated asset manifest and construct a `MemoryServe` struct.
5#[macro_export]
6macro_rules! load {
7    () => {{
8        use memory_serve::{Asset, MemoryServe};
9
10        let assets: &[(&str, &[Asset])] =
11            include!(concat!(env!("OUT_DIR"), "/memory_serve_assets.rs"));
12
13        if assets.is_empty() {
14            panic!("No assets found, did you call a load_directory* function from your build.rs?");
15        }
16
17        MemoryServe::new(assets[0].1)
18    }};
19    ($title:expr) => {{
20        use memory_serve::{Asset, MemoryServe};
21
22        let assets: &[(&str, &[Asset])] =
23            include!(concat!(env!("OUT_DIR"), "/memory_serve_assets.rs"));
24
25        let selected_assets = assets
26            .into_iter()
27            .find(|(n, _)| *n == $title)
28            .map(|(_, a)| *a)
29            .unwrap_or_default();
30
31        if selected_assets.is_empty() {
32            panic!("No assets found, did you call a load_directory* function from your build.rs?");
33        }
34
35        MemoryServe::new(selected_assets)
36    }};
37}