feat(chain)!: add take convenience method to Append trait

This is useful if the caller wishes to use the type as a staging area.

This is breaking as `Append` has a `Default` bound now.
This commit is contained in:
志宇
2024-06-14 23:21:19 +08:00
parent 1eca568be5
commit feb27df180
3 changed files with 17 additions and 12 deletions

View File

@@ -114,12 +114,21 @@ pub trait AnchorFromBlockPosition: Anchor {
}
/// Trait that makes an object appendable.
pub trait Append {
pub trait Append: Default {
/// Append another object of the same type onto `self`.
fn append(&mut self, other: Self);
/// Returns whether the structure is considered empty.
fn is_empty(&self) -> bool;
/// Take the value, replacing it with the default value.
fn take(&mut self) -> Option<Self> {
if self.is_empty() {
None
} else {
Some(core::mem::take(self))
}
}
}
impl<K: Ord, V> Append for BTreeMap<K, V> {