fix(store): Remove lifetime

Remove gratuitous use of lifetimes in the main persistence struct
This commit is contained in:
LLFourn 2024-01-19 10:34:37 +11:00
parent 0a2a57060b
commit 0bee46e75b
No known key found for this signature in database
GPG Key ID: A27093B54DA11F65
2 changed files with 15 additions and 15 deletions

View File

@ -15,13 +15,13 @@ use crate::{bincode_options, EntryIter, FileError, IterError};
/// ///
/// The changesets are the results of altering a tracker implementation (`T`). /// The changesets are the results of altering a tracker implementation (`T`).
#[derive(Debug)] #[derive(Debug)]
pub struct Store<'a, C> { pub struct Store<C> {
magic: &'a [u8], magic_len: usize,
db_file: File, db_file: File,
marker: PhantomData<C>, marker: PhantomData<C>,
} }
impl<'a, C> PersistBackend<C> for Store<'a, C> impl<C> PersistBackend<C> for Store<C>
where where
C: Append + serde::Serialize + serde::de::DeserializeOwned, C: Append + serde::Serialize + serde::de::DeserializeOwned,
{ {
@ -38,7 +38,7 @@ where
} }
} }
impl<'a, C> Store<'a, C> impl<C> Store<C>
where where
C: Append + serde::Serialize + serde::de::DeserializeOwned, C: Append + serde::Serialize + serde::de::DeserializeOwned,
{ {
@ -48,7 +48,7 @@ where
/// the `Store` in the future with [`open`]. /// the `Store` in the future with [`open`].
/// ///
/// [`open`]: Store::open /// [`open`]: Store::open
pub fn create_new<P>(magic: &'a [u8], file_path: P) -> Result<Self, FileError> pub fn create_new<P>(magic: &[u8], file_path: P) -> Result<Self, FileError>
where where
P: AsRef<Path>, P: AsRef<Path>,
{ {
@ -67,7 +67,7 @@ where
.open(file_path)?; .open(file_path)?;
f.write_all(magic)?; f.write_all(magic)?;
Ok(Self { Ok(Self {
magic, magic_len: magic.len(),
db_file: f, db_file: f,
marker: Default::default(), marker: Default::default(),
}) })
@ -83,7 +83,7 @@ where
/// [`FileError::InvalidMagicBytes`] error variant will be returned. /// [`FileError::InvalidMagicBytes`] error variant will be returned.
/// ///
/// [`create_new`]: Store::create_new /// [`create_new`]: Store::create_new
pub fn open<P>(magic: &'a [u8], file_path: P) -> Result<Self, FileError> pub fn open<P>(magic: &[u8], file_path: P) -> Result<Self, FileError>
where where
P: AsRef<Path>, P: AsRef<Path>,
{ {
@ -99,7 +99,7 @@ where
} }
Ok(Self { Ok(Self {
magic, magic_len: magic.len(),
db_file: f, db_file: f,
marker: Default::default(), marker: Default::default(),
}) })
@ -111,7 +111,7 @@ where
/// ///
/// [`open`]: Store::open /// [`open`]: Store::open
/// [`create_new`]: Store::create_new /// [`create_new`]: Store::create_new
pub fn open_or_create_new<P>(magic: &'a [u8], file_path: P) -> Result<Self, FileError> pub fn open_or_create_new<P>(magic: &[u8], file_path: P) -> Result<Self, FileError>
where where
P: AsRef<Path>, P: AsRef<Path>,
{ {
@ -132,7 +132,7 @@ where
/// always iterate over all entries until `None` is returned if you want your next write to go /// always iterate over all entries until `None` is returned if you want your next write to go
/// at the end; otherwise, you will write over existing entries. /// at the end; otherwise, you will write over existing entries.
pub fn iter_changesets(&mut self) -> EntryIter<C> { pub fn iter_changesets(&mut self) -> EntryIter<C> {
EntryIter::new(self.magic.len() as u64, &mut self.db_file) EntryIter::new(self.magic_len as u64, &mut self.db_file)
} }
/// Loads all the changesets that have been stored as one giant changeset. /// Loads all the changesets that have been stored as one giant changeset.

View File

@ -29,7 +29,7 @@ pub type KeychainChangeSet<A> = (
local_chain::ChangeSet, local_chain::ChangeSet,
indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<Keychain>>, indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<Keychain>>,
); );
pub type Database<'m, C> = Persist<Store<'m, C>, C>; pub type Database<C> = Persist<Store<C>, C>;
#[derive(Parser)] #[derive(Parser)]
#[clap(author, version, about, long_about = None)] #[clap(author, version, about, long_about = None)]
@ -646,14 +646,14 @@ where
} }
#[allow(clippy::type_complexity)] #[allow(clippy::type_complexity)]
pub fn init<'m, CS: clap::Subcommand, S: clap::Args, C>( pub fn init<CS: clap::Subcommand, S: clap::Args, C>(
db_magic: &'m [u8], db_magic: &[u8],
db_default_path: &str, db_default_path: &str,
) -> anyhow::Result<( ) -> anyhow::Result<(
Args<CS, S>, Args<CS, S>,
KeyMap, KeyMap,
KeychainTxOutIndex<Keychain>, KeychainTxOutIndex<Keychain>,
Mutex<Database<'m, C>>, Mutex<Database<C>>,
C, C,
)> )>
where where
@ -681,7 +681,7 @@ where
index.add_keychain(Keychain::Internal, internal_descriptor); index.add_keychain(Keychain::Internal, internal_descriptor);
} }
let mut db_backend = match Store::<'m, C>::open_or_create_new(db_magic, &args.db_path) { let mut db_backend = match Store::<C>::open_or_create_new(db_magic, &args.db_path) {
Ok(db_backend) => db_backend, Ok(db_backend) => db_backend,
// we cannot return `err` directly as it has lifetime `'m` // we cannot return `err` directly as it has lifetime `'m`
Err(err) => return Err(anyhow::anyhow!("failed to init db backend: {:?}", err)), Err(err) => return Err(anyhow::anyhow!("failed to init db backend: {:?}", err)),