* implement const cbor encoding + decoding for basic types * implement map encoding and decoding * fix map test * all tests passing * dynamically sized arrays * smaller str encoding * swap array and list and add more documentation * move serialization and deserialization for each struct together * support both legacy and new assets * bump const serialize version * fix asset conversion code * pull out manganis symbol struct from tuble * test reading old asset versions * more list/array cleanup and bump rust version * fix clippy * switch cli opt port * install playwright deps * split cli-optimization package to avoid two dioxus' in the same crate * fix clippy * force the toast.png asset to be included in the linker stage #[used] has platform depedant behavior * bundle both formats in the link section and only use the asset the cli changed * remove sudo which doesn't exist on windows * add binstall to the playwright workflow * separate bin target for the old cli * lockfile * cargo update to get versions shaken out * notes on binstalls, add back `.read()` for compat * use 0.8.0-alpha.0 for const-serialize instead of 0.8 this ensures we can still publish breaking changes on 0.8 without taking over the full version * fix clippy in example * small debug nits * update rust-overlay in nix * fix flake? * migrate to new structure * just comment out binstalls * just remove old test harness --------- Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
62 lines
1.5 KiB
Rust
62 lines
1.5 KiB
Rust
use const_serialize_07 as const_serialize;
|
|
use const_serialize_08::SerializeConst;
|
|
|
|
use crate::{AssetOptions, AssetOptionsBuilder};
|
|
|
|
/// The builder for a folder asset.
|
|
#[derive(
|
|
Debug,
|
|
Eq,
|
|
PartialEq,
|
|
PartialOrd,
|
|
Clone,
|
|
Copy,
|
|
Hash,
|
|
SerializeConst,
|
|
const_serialize::SerializeConst,
|
|
serde::Serialize,
|
|
serde::Deserialize,
|
|
)]
|
|
#[const_serialize(crate = const_serialize_08)]
|
|
pub struct FolderAssetOptions {}
|
|
|
|
impl Default for FolderAssetOptions {
|
|
fn default() -> Self {
|
|
Self::default()
|
|
}
|
|
}
|
|
|
|
impl FolderAssetOptions {
|
|
/// Create a new folder asset builder
|
|
pub const fn new() -> AssetOptionsBuilder<FolderAssetOptions> {
|
|
AssetOptions::folder()
|
|
}
|
|
|
|
/// Create a default folder asset options
|
|
pub const fn default() -> Self {
|
|
Self {}
|
|
}
|
|
}
|
|
|
|
impl AssetOptions {
|
|
/// Create a new folder asset builder
|
|
///
|
|
/// ```rust
|
|
/// # use manganis::{asset, Asset, AssetOptions};
|
|
/// const _: Asset = asset!("/assets", AssetOptions::folder());
|
|
/// ```
|
|
pub const fn folder() -> AssetOptionsBuilder<FolderAssetOptions> {
|
|
AssetOptionsBuilder::variant(FolderAssetOptions::default())
|
|
}
|
|
}
|
|
|
|
impl AssetOptionsBuilder<FolderAssetOptions> {
|
|
/// Convert the options into options for a generic asset
|
|
pub const fn into_asset_options(self) -> AssetOptions {
|
|
AssetOptions {
|
|
add_hash: false,
|
|
variant: crate::AssetVariant::Folder(self.variant),
|
|
}
|
|
}
|
|
}
|