Skip to content

Commit 0008af8

Browse files
committed
disable unstable features
1 parent f3093ac commit 0008af8

File tree

3 files changed

+36
-13
lines changed

3 files changed

+36
-13
lines changed

src/ext.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::cell::RefCell;
12
use std::ffi::c_void;
23

34
use pyo3::exceptions::PyValueError;
@@ -15,6 +16,7 @@ use pyo3::FromPyPointer;
1516
use crate::entry::Value;
1617
use crate::storage::Storage;
1718
use crate::storage::MGR;
19+
use crate::storage::StorageManager;
1820

1921
#[pyclass]
2022
pub struct KVStorage {
@@ -101,7 +103,8 @@ impl KVStorage {
101103

102104
pub unsafe fn put(&mut self, key: String, val: &PyAny) -> PyResult<()> {
103105
if self.isview {
104-
MGR.with_borrow_mut(|mgr| mgr.put_key(key.clone()));
106+
MGR.with(|mgr: &RefCell<StorageManager>| mgr.borrow_mut().put_key(key.clone()));
107+
// MGR.with_borrow_mut(|mgr| mgr.put_key(key.clone()));
105108
}
106109
if val.is_none() {
107110
self.storage.put(key, Value::Empty);

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#![feature(local_key_cell_methods)]
2-
#![feature(let_chains)]
1+
// #![feature(local_key_cell_methods)]
2+
// #![feature(let_chains)]
33

44
pub mod entry;
55
pub mod storage;

src/storage.rs

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ fn tree_revision<T: Into<Value>>(mut tree: RefMut<Tree>, key: u64, val: T) {
2222
}
2323

2424
fn tree_rollback(mut tree: RefMut<Tree>, key: u64) {
25-
if let Some(need_del) = tree.get_mut(&key).map(|e| e.rollback().is_err()) && need_del{
26-
tree.remove(&key);
25+
if let Some(need_del) = tree.get_mut(&key).map(|e| e.rollback().is_err()) {
26+
if need_del {
27+
tree.remove(&key);
28+
}
2729
}
2830
}
2931

@@ -85,28 +87,46 @@ impl Storage {
8587
}
8688

8789
pub fn enter(&mut self) {
88-
MGR.with_borrow_mut(|m| {
90+
MGR.with(|m| {
8991
for (k, v) in self.tree().iter() {
90-
if m.tls.borrow().contains_key(&k) {
91-
tree_revision(m.tls.borrow_mut(), *k, v.clone_value());
92+
if m.borrow_mut().tls.borrow().contains_key(&k) {
93+
tree_revision(m.borrow_mut().tls.borrow_mut(), *k, v.clone_value());
9294
} else {
93-
m.tls.borrow_mut().insert(*k, v.clone());
95+
m.borrow_mut().tls.borrow_mut().insert(*k, v.clone());
9496
}
9597
}
9698
let keys = self.tree().keys().cloned().collect();
97-
m.stack.push(RefCell::new(keys));
99+
m.borrow_mut().stack.push(RefCell::new(keys));
98100
});
101+
// MGR.with_borrow_mut(|m| {
102+
// for (k, v) in self.tree().iter() {
103+
// if m.tls.borrow().contains_key(&k) {
104+
// tree_revision(m.tls.borrow_mut(), *k, v.clone_value());
105+
// } else {
106+
// m.tls.borrow_mut().insert(*k, v.clone());
107+
// }
108+
// }
109+
// let keys = self.tree().keys().cloned().collect();
110+
// m.stack.push(RefCell::new(keys));
111+
// });
99112
self.isview += 1;
100113
}
101114

102115
pub fn exit(&mut self) {
103-
MGR.with_borrow_mut(|m| {
104-
if let Some(keys) = m.stack.pop() {
116+
MGR.with(|m| {
117+
if let Some(keys) = m.borrow_mut().stack.pop() {
105118
keys.borrow()
106119
.iter()
107-
.for_each(|k| tree_rollback(m.tls.borrow_mut(), *k));
120+
.for_each(|k| tree_rollback(m.borrow_mut().tls.borrow_mut(), *k));
108121
}
109122
});
123+
// MGR.with_borrow_mut(|m| {
124+
// if let Some(keys) = m.stack.pop() {
125+
// keys.borrow()
126+
// .iter()
127+
// .for_each(|k| tree_rollback(m.tls.borrow_mut(), *k));
128+
// }
129+
// });
110130
self.isview -= 1;
111131
}
112132

0 commit comments

Comments
 (0)