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}