diff --git a/src/datastructures/string.rs b/src/datastructures/string.rs index e1eb0eb..6881442 100644 --- a/src/datastructures/string.rs +++ b/src/datastructures/string.rs @@ -41,6 +41,7 @@ impl Str { } } +// TODO: remove these impls for all datatypes impl FilePointer { pub fn set(self, transaction: &mut TransactionHandle, s: &str) -> FilePointer { let new_str = transaction.read::(self).set(transaction, s); diff --git a/src/transaction.rs b/src/transaction.rs index 4db78d2..8ed7559 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -136,6 +136,12 @@ impl<'t, R> TransactionHandle<'t, R> { (FilePointer::from_range(range), data) } + pub fn set(&mut self, at: FilePointer, value: T) -> FilePointer { + let (ptr, data) = self.modify(at); + *data = value; + ptr + } + pub fn allocate_range(&mut self, length: u64) -> (FileRange, &mut [u8]) { unsafe { let range = self.db.allocate(length);