Crates.io | always-assert |
lib.rs | always-assert |
version | 0.2.0 |
source | src |
created_at | 2021-01-26 17:51:33.454843 |
updated_at | 2024-01-23 11:35:29.272431 |
description | Recoverable assertions for long-running robust applications |
homepage | |
repository | https://github.com/matklad/always-assert |
max_upload_size | |
id | 346948 |
size | 19,642 |
Recoverable assertions, inspired by the use of assert()
in SQLite.
use always_assert::never;
fn apply_transaction(&mut self, tx: Transaction) -> Result<(), TransactionAborted> {
let delta = self.compute_delta(&tx);
if never!(!self.check_internal_invariant(&delta)) {
// Ok, something in this transaction messed up our internal state.
// This really shouldn't be happening, and this signifies a bug.
// Luckily, we can recover by just rejecting the transaction.
return abort_transaction(tx);
}
self.commit(delta);
Ok(())
}