summaryrefslogtreecommitdiff
path: root/shared/src/loader.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-27 14:38:31 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-27 14:38:31 +0100
commit9f16507564354422b64e437e547d8403b22b70c7 (patch)
treea2d3fee9be8c626b1832df1fa4d8aa8b6c253b3d /shared/src/loader.rs
parentd48ff95ec3739b8179b0e0f5b07d5c89f8f5b33f (diff)
downloadweareserver-9f16507564354422b64e437e547d8403b22b70c7.tar
weareserver-9f16507564354422b64e437e547d8403b22b70c7.tar.bz2
weareserver-9f16507564354422b64e437e547d8403b22b70c7.tar.zst
lay a foundation for subresource listings
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?)) }
+ }
+}