lyra-engine/lyra-resource/src/resource.rs

29 lines
667 B
Rust
Raw Normal View History

2023-09-12 18:25:33 +00:00
use std::sync::Arc;
use uuid::Uuid;
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum ResourceState {
Loading,
Ready,
}
#[derive(Clone)]
pub struct Resource<T: Send + Sync + 'static> {
pub path: String,
pub data: Option<Arc<T>>,
pub uuid: Uuid,
pub state: ResourceState,
}
impl<T: Send + Sync + 'static> Resource<T> {
/// Create the resource with data, its assumed the state is `Ready`
pub fn with_data(path: &str, data: T) -> Self {
Self {
path: path.to_string(),
data: Some(Arc::new(data)),
uuid: Uuid::new_v4(),
state: ResourceState::Ready,
}
}
}