diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-08-10 19:06:46 +0200 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-08-10 19:06:46 +0200 |
| commit | 63cfcbe7a7745b276de58ec92e0141b958c44feb (patch) | |
| tree | 990e33a83756e27187033579ee2f85d5c79169d5 /src/sheet/map.rs | |
| parent | b747ca8af52129876b577a4f20f7105a05c6b002 (diff) | |
use unsafe blocks instead of mutexes
Diffstat (limited to 'src/sheet/map.rs')
| -rw-r--r-- | src/sheet/map.rs | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/sheet/map.rs b/src/sheet/map.rs index b2cdbf2..8d3fecc 100644 --- a/src/sheet/map.rs +++ b/src/sheet/map.rs @@ -1,28 +1,25 @@ -use std::sync::{Arc, RwLock}; - use mlua::prelude::*; use super::{cell::Cell, Sheet}; pub trait LuaMap { fn lua_map( - &self, + &mut self, func: LuaFunction<'_>, range: Vec<(usize, usize)>, ) -> Result<(), LuaError>; } -impl LuaMap for Arc<RwLock<Sheet>> { +impl LuaMap for Sheet { fn lua_map( - &self, + &mut self, func: LuaFunction<'_>, range: Vec<(usize, usize)>, ) -> Result<(), LuaError> { - let mut this = self.write().unwrap(); - let mut sheet = this.clone(); + let mut sheet = self.clone(); for (row, column) in range.iter() { - let cellref = this.get_ref(*row, *column); + let cellref = self.get_ref(*row, *column); match func.call::<_, Cell>(cellref) { Ok(cell) => sheet.set_cell(*row, *column, cell), @@ -30,7 +27,7 @@ impl LuaMap for Arc<RwLock<Sheet>> { } } - this.apply(sheet); + self.apply(sheet); Ok(()) } |