use crate::disk::data_block::{Block, DataBlock}; use crate::disk::inode::Inode; pub struct CachedInode { pub inode: Inode, pub index: usize, pub dirty: bool, } #[derive(Clone)] pub struct CachedBlock { pub block: T, pub index: usize, pub dirty: bool, } impl CachedBlock { fn cast(&self) -> CachedBlock { unsafe { std::mem::transmute_copy(&self) } } } pub fn convert_mut(input_block: &mut CachedBlock) -> &mut CachedBlock { let ptr = input_block as *const CachedBlock as *mut u8; let block = ptr.cast::>(); unsafe { &mut *block } } pub fn convert(input_block: &CachedBlock) -> &CachedBlock { let ptr = input_block as *const CachedBlock as *mut u8; let block = ptr.cast::>(); unsafe { &*block } }