manganis_core/
folder.rs

1use const_serialize_07 as const_serialize;
2use const_serialize_08::SerializeConst;
3
4use crate::{AssetOptions, AssetOptionsBuilder};
5
6/// The builder for a folder asset.
7#[derive(
8    Debug,
9    Eq,
10    PartialEq,
11    PartialOrd,
12    Clone,
13    Copy,
14    Hash,
15    SerializeConst,
16    const_serialize::SerializeConst,
17    serde::Serialize,
18    serde::Deserialize,
19)]
20#[const_serialize(crate = const_serialize_08)]
21pub struct FolderAssetOptions {}
22
23impl Default for FolderAssetOptions {
24    fn default() -> Self {
25        Self::default()
26    }
27}
28
29impl FolderAssetOptions {
30    /// Create a new folder asset builder
31    pub const fn new() -> AssetOptionsBuilder<FolderAssetOptions> {
32        AssetOptions::folder()
33    }
34
35    /// Create a default folder asset options
36    pub const fn default() -> Self {
37        Self {}
38    }
39}
40
41impl AssetOptions {
42    /// Create a new folder asset builder
43    ///
44    /// ```rust
45    /// # use manganis::{asset, Asset, AssetOptions};
46    /// const _: Asset = asset!("/assets", AssetOptions::folder());
47    /// ```
48    pub const fn folder() -> AssetOptionsBuilder<FolderAssetOptions> {
49        AssetOptionsBuilder::variant(FolderAssetOptions::default())
50    }
51}
52
53impl AssetOptionsBuilder<FolderAssetOptions> {
54    /// Convert the options into options for a generic asset
55    pub const fn into_asset_options(self) -> AssetOptions {
56        AssetOptions {
57            add_hash: false,
58            variant: crate::AssetVariant::Folder(self.variant),
59        }
60    }
61}