diff --git a/src/bloxel/storage/bloxel_array.rs b/src/bloxel/storage/bloxel_array.rs index 7484068..b07a2c4 100644 --- a/src/bloxel/storage/bloxel_array.rs +++ b/src/bloxel/storage/bloxel_array.rs @@ -23,7 +23,7 @@ impl BloxelArray { Self { size, data } } - pub fn from_fn(size: USize3, f: impl Fn(IVec3) -> T) -> Self { + pub fn from_fn(size: USize3, mut f: impl FnMut(IVec3) -> T) -> Self { let f = |(x, y, z)| f(IVec3::new(x as i32, y as i32, z as i32)); let data = Array3::from_shape_fn(size, f); Self { size, data } diff --git a/src/bloxel/storage/bloxel_store.rs b/src/bloxel/storage/bloxel_store.rs index abe0a42..3c49417 100644 --- a/src/bloxel/storage/bloxel_store.rs +++ b/src/bloxel/storage/bloxel_store.rs @@ -12,7 +12,7 @@ pub trait BloxelStore { pub trait BloxelStoreMut: BloxelStore { fn set(&mut self, pos: IVec3, value: T) -> Result; - fn update(&mut self, f: impl Fn(IVec3, T) -> T) { + fn update(&mut self, mut f: impl FnMut(IVec3, T) -> T) { let (w, h, d) = self.size().into(); for prod in Hom3FCartProd::new(0..w, 0..h, 0..d) { let pos = UVec3::from(prod).as_ivec3();