Trait shipyard::BorrowInfo
source · pub unsafe trait BorrowInfo {
// Required methods
fn borrow_info(info: &mut Vec<TypeInfo>);
fn enable_tracking(
enable_tracking_fn: &mut Vec<fn(_: &AllStorages) -> Result<(), GetStorage>>,
);
}
Expand description
Explains to a workload which storage are borrowed by a system.
§Safety
Must accurately list everything borrowed.
§Example of manual implementation:
use shipyard::{BorrowInfo, info::TypeInfo, track, View, UniqueView};
struct CameraView<'v> {
camera: UniqueView<'v, Camera>,
position: View<'v, Position>,
}
// SAFE: All storages info is recorded.
unsafe impl BorrowInfo for CameraView<'_> {
fn borrow_info(info: &mut Vec<TypeInfo>) {
<UniqueView<'_, Camera>>::borrow_info(info);
<View<'_, Position>>::borrow_info(info);
}
fn enable_tracking(
_: &mut Vec<
for<'a> fn(&'a shipyard::AllStorages) -> Result<(), shipyard::error::GetStorage>,
>,
) {}
}
Required Methods§
sourcefn borrow_info(info: &mut Vec<TypeInfo>)
fn borrow_info(info: &mut Vec<TypeInfo>)
This information is used during workload creation to determine which systems can run in parallel.
A borrow error might happen if the information is not correct.
sourcefn enable_tracking(
enable_tracking_fn: &mut Vec<fn(_: &AllStorages) -> Result<(), GetStorage>>,
)
fn enable_tracking( enable_tracking_fn: &mut Vec<fn(_: &AllStorages) -> Result<(), GetStorage>>, )
Enable tracking on the World
where this storage is borrowed.
Object Safety§
This trait is not object safe.