diff --git a/lyra-resource/src/loader/mod.rs b/lyra-resource/src/loader/mod.rs index 06d13df..63fef55 100644 --- a/lyra-resource/src/loader/mod.rs +++ b/lyra-resource/src/loader/mod.rs @@ -29,7 +29,7 @@ impl From for LoaderError { } } -pub trait ResourceLoader: Send + Sync { +pub trait ResourceLoader { /// Returns the extensions that this loader supports. fn extensions(&self) -> &[&str]; /// Returns the mime types that this loader supports. diff --git a/lyra-resource/src/resource.rs b/lyra-resource/src/resource.rs index 331d5f8..2dbb2a6 100644 --- a/lyra-resource/src/resource.rs +++ b/lyra-resource/src/resource.rs @@ -9,7 +9,7 @@ pub enum ResourceState { } #[derive(Clone)] -pub struct Resource { +pub struct Resource { pub path: String, pub data: Option>, pub uuid: Uuid, @@ -19,7 +19,7 @@ pub struct Resource { /// A helper type to make it easier to use resources pub type ResHandle = Arc>; -impl Resource { +impl Resource { /// Create the resource with data, its assumed the state is `Ready` pub fn with_data(path: &str, data: T) -> Self { Self { diff --git a/lyra-resource/src/resource_manager.rs b/lyra-resource/src/resource_manager.rs index 23f16da..0224269 100644 --- a/lyra-resource/src/resource_manager.rs +++ b/lyra-resource/src/resource_manager.rs @@ -65,6 +65,14 @@ impl ResourceManager { } } + /// Registers a loader to the manager. + pub fn register_loader(&mut self) + where + L: ResourceLoader + Default + 'static + { + self.loaders.push(Arc::new(L::default())); + } + pub fn request(&mut self, path: &str) -> Result>, RequestError> { match self.resources.get(&path.to_string()) { Some(res) => {