librashader/librashader-cache/src/cacheable.rs
2024-08-01 08:37:40 -04:00

29 lines
592 B
Rust

/// Trait for objects that are cacheable.
pub trait Cacheable {
fn from_bytes(bytes: &[u8]) -> Option<Self>
where
Self: Sized;
fn to_bytes(&self) -> Option<Vec<u8>>;
}
impl Cacheable for Vec<u8> {
fn from_bytes(bytes: &[u8]) -> Option<Self> {
Some(Vec::from(bytes))
}
fn to_bytes(&self) -> Option<Vec<u8>> {
Some(self.to_vec())
}
}
impl Cacheable for Option<Vec<u8>> {
fn from_bytes(bytes: &[u8]) -> Option<Self> {
Some(Some(Vec::from(bytes)))
}
fn to_bytes(&self) -> Option<Vec<u8>> {
self.clone()
}
}