summaryrefslogtreecommitdiff
path: root/shared/src/loader.rs
diff options
context:
space:
mode:
Diffstat (limited to 'shared/src/loader.rs')
-rw-r--r--shared/src/loader.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/shared/src/loader.rs b/shared/src/loader.rs
new file mode 100644
index 0000000..0172265
--- /dev/null
+++ b/shared/src/loader.rs
@@ -0,0 +1,13 @@
+use crate::{helper::ReadWrite, packets::Resource};
+use anyhow::Result;
+use std::io::Cursor;
+
+pub trait ResLoader: Send + Sync {
+ fn get_raw(&self, res: Resource) -> impl Future<Output = Result<Vec<u8>>> + Send;
+ fn get<R: ReadWrite + Sync>(
+ &self,
+ res: &Resource<R>,
+ ) -> impl Future<Output = Result<R>> + Send {
+ async { R::read(&mut Cursor::new(self.get_raw(res.to_generic()).await?)) }
+ }
+}