irmin/
metadata.rs

1use crate::internal::*;
2
3/// Wrapper around irmin trees
4pub struct Metadata<'a> {
5    pub ptr: *mut IrminMetadata,
6    pub repo: UntypedRepo<'a>,
7}
8
9impl<'a> Drop for Metadata<'a> {
10    fn drop(&mut self) {
11        unsafe { irmin_metadata_free(self.ptr) }
12    }
13}
14
15impl<'a> Metadata<'a> {
16    /// Default metadata value for the given repo
17    pub fn default<T: Contents>(repo: &'a Repo<T>) -> Result<Metadata<'a>, Error> {
18        let m = unsafe { irmin_metadata_default(repo.ptr) };
19        check!(repo.ptr, m);
20        Ok(Metadata {
21            ptr: m,
22            repo: UntypedRepo::new(repo),
23        })
24    }
25}