Batch insert operations with rollback on any failure
(&mut self, items: Vec<(K, V)>)
| 95 | |
| 96 | /// Batch insert operations with rollback on any failure |
| 97 | pub fn batch_insert(&mut self, items: Vec<(K, V)>) -> ModifyResult<Vec<Option<V>>> |
| 98 | where |
| 99 | K: Clone, |
| 100 | V: Clone, |
| 101 | { |
| 102 | let mut results = Vec::new(); |
| 103 | let mut inserted_keys = Vec::new(); |
| 104 | |
| 105 | for (key, value) in items { |
| 106 | match self.try_insert(key.clone(), value) { |
| 107 | Ok(old_value) => { |
| 108 | results.push(old_value); |
| 109 | inserted_keys.push(key); |
| 110 | } |
| 111 | Err(e) => { |
| 112 | // Rollback all successful insertions |
| 113 | for rollback_key in inserted_keys { |
| 114 | self.remove(&rollback_key); |
| 115 | } |
| 116 | return Err(e); |
| 117 | } |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | Ok(results) |
| 122 | } |
| 123 | |
| 124 | // get_many method moved to get_operations.rs module |
| 125 |