summaryrefslogtreecommitdiff
path: root/src/sheet/map.rs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-08-10 19:06:46 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-08-10 19:06:46 +0200
commit63cfcbe7a7745b276de58ec92e0141b958c44feb (patch)
tree990e33a83756e27187033579ee2f85d5c79169d5 /src/sheet/map.rs
parentb747ca8af52129876b577a4f20f7105a05c6b002 (diff)
use unsafe blocks instead of mutexes
Diffstat (limited to 'src/sheet/map.rs')
-rw-r--r--src/sheet/map.rs15
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(())
}