1use const_serialize::SerializeConst;
2
3use crate::{CssAssetOptions, FolderAssetOptions, ImageAssetOptions, JsAssetOptions};
4
5#[derive(
7 Debug,
8 PartialEq,
9 PartialOrd,
10 Clone,
11 Copy,
12 Hash,
13 SerializeConst,
14 serde::Serialize,
15 serde::Deserialize,
16)]
17#[repr(C, u8)]
18#[non_exhaustive]
19pub enum AssetOptions {
20 Image(ImageAssetOptions),
22 Folder(FolderAssetOptions),
24 Css(CssAssetOptions),
26 Js(JsAssetOptions),
28 Unknown,
30}
31
32impl AssetOptions {
33 pub const fn extension(&self) -> Option<&'static str> {
35 match self {
36 AssetOptions::Image(image) => image.extension(),
37 AssetOptions::Css(_) => Some("css"),
38 AssetOptions::Js(_) => Some("js"),
39 AssetOptions::Folder(_) => None,
40 AssetOptions::Unknown => None,
41 }
42 }
43
44 pub const fn into_asset_options(self) -> Self {
46 self
47 }
48}