use std::sync::Arc;
use crate::asset::AssetData;
use crate::manager::AssetManagerContext;
use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum AssetSaveError {
#[error("Unsupported asset type")]
UnsupportedType,
#[error("Serialization error: {0}")]
Serialization(anyhow::Error),
#[error(transparent)]
Other(anyhow::Error),
}
pub trait AssetDataSaver {
fn asset_to_bytes(
&self,
asset: &dyn AssetData,
context: Option<Arc<dyn AssetManagerContext>>,
) -> Result<Vec<u8>, AssetSaveError>;
}