From: Steve Myers Date: Sat, 15 Jun 2024 02:07:51 +0000 (-0500) Subject: Merge bitcoindevkit/bdk#1473: Remove `persist` submodule X-Git-Tag: v1.0.0-alpha.13~1 X-Git-Url: http://internal-gitweb-vhost/script/%22https:/struct.ScriptPath.html?a=commitdiff_plain;h=410ba173e455edefd1c374d43f8cb2313f4bee43;p=bdk Merge bitcoindevkit/bdk#1473: Remove `persist` submodule a0bf45bef1b53f8aec273f7fe89915f3d41974c0 docs: remove PersistBackend from docs, Cargo.toml and wallet README.md (Steve Myers) feb27df180938759670afd2c9cd15529a22c4772 feat(chain)!: add `take` convenience method to `Append` trait (志宇) 1eca568be5bb0c234fa1cea2eb7f9424f60974eb feat!: rm `persist` submodule (志宇) Pull request description: ### Description @LLFourn suggested these changes which greatly simplifies the amount of code we have to maintain and removes the `async-trait` dependency. We remove `PersistBackend`, `PersistBackendAsync`, `StageExt` and `StageExtAsync` completely. Instead, we introduce `Wallet::take_staged(&mut self) -> Option`. The original intention to keep a staging area (`StageExt`, `StageExtAsync`) is to enforce: 1. The caller will not persist an empty changeset. 2. The caller does not take the staged changeset if the database (`PersistBackend`) fails. We achieve `1.` by returning `None` if the staged changeset is empty. `2.` is not too important. The caller can try figure out what to do with the changeset if persisting to db fails. ### Notes to the reviewers I added a `take` convenience method to the `Append` trait. I thought it would be handy for the caller to do a staging area with this. ### Changelog notice * Remove `persist` submodule from `bdk_chain`. * Change `Wallet` to outsource it's persistence logic by introducing `Wallet::take_staged`. * Add `take` convenience method to `Append` trait. ### Checklists #### All Submissions: * [x] I've signed all my commits * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md) * [x] I ran `cargo fmt` and `cargo clippy` before committing #### New Features: ~* [ ] I've added tests for the new feature~ * [x] I've added docs for the new feature ACKs for top commit: notmandatory: ACK a0bf45bef1b53f8aec273f7fe89915f3d41974c0 evanlinjin: self-ACK a0bf45bef1b53f8aec273f7fe89915f3d41974c0 Tree-SHA512: 38939ab446c84d9baecd4cd36a7b66add5a121212ad5e06ade04a60f7903133dd9a20219e230ab8a40404c47e07b946ccd43085572d71c3a2a80240a2223a500 --- 410ba173e455edefd1c374d43f8cb2313f4bee43