use crate::database::{DatabaseEntry, DatabaseError, transaction_args::CompareAndSwapTransaction};
pub trait Mergeable: DatabaseEntry {
/// Merges [`Self`] into the `into` entry
///
/// This means the identifier of `to` will be preserved, while [`Self`] is deleted
/// All references to [`Self`] should be relinked to `into`
///
/// This function should be a single atomic transaction
fn tx_merge(
&self,
into: Self::Id,
cas_tx: &mut CompareAndSwapTransaction,
) -> Result<(), DatabaseError>;
}