distill_loader/
lib.rs

1#![warn(rust_2018_idioms, rust_2018_compatibility)]
2
3/// *feature:* `handle`. Handles provide automatic reference counting of assets, similar to [Rc](`std::rc::Rc`).
4#[cfg(feature = "handle")]
5pub mod handle;
6/// [`LoaderIO`](crate::io::LoaderIO) provides data requested by [`Loader`](crate::loader::Loader).
7pub mod io;
8/// [`Loader`] loads assets into engine-implemented [`AssetStorage`](crate::storage::AssetStorage)s.
9pub mod loader;
10#[cfg(feature = "packfile_io")]
11pub mod packfile_io;
12/// *feature:* `rpc_io`. `RpcIO` is an implementation of [`LoaderIO`](crate::io::LoaderIO) which communicates with `distill_daemon`
13/// to load and hot reload assets. Intended for development workflows.
14#[cfg(feature = "rpc_io")]
15pub mod rpc_io;
16/// [`AssetStorage`](crate::storage::AssetStorage) is implemented by engines to store loaded asset data.
17pub mod storage;
18
19pub use crossbeam_channel;
20pub use distill_core::{AssetRef, AssetTypeId, AssetUuid};
21pub use loader::Loader;
22#[cfg(feature = "packfile_io")]
23pub use packfile_io::PackfileReader;
24#[cfg(feature = "rpc_io")]
25pub use rpc_io::RpcIO;
26pub use storage::LoadHandle;
27
28pub type Result<T> = std::result::Result<T, Box<dyn std::error::Error + Send + 'static>>;
29
30#[cfg(feature = "handle")]
31#[macro_export]
32macro_rules! if_handle_enabled {
33    ($($tt:tt)*) => {
34        $($tt)*
35    };
36}
37
38#[cfg(not(feature = "handle"))]
39#[macro_export]
40#[doc(hidden)]
41macro_rules! if_handle_enabled {
42    ($($tt:tt)*) => {};
43}