git_ref/store/general/handle/
mod.rs

1#![allow(dead_code)]
2use crate::{store, Namespace};
3
4#[derive(Clone)]
5pub(crate) enum State {
6    Loose { store: crate::file::Store },
7}
8
9impl crate::Store {
10    /// Return a new handle which sees all references if `namespace` is `None` or all read and write operations are limited
11    /// to the given `namespace` if `Some`.
12    pub fn to_handle(&self) -> store::Handle {
13        Self::new_handle_inner(&self.inner, None)
14    }
15
16    /// As above, but supports a namespace to be set
17    pub fn to_handle_namespaced(&self, namespace: Option<Namespace>) -> store::Handle {
18        Self::new_handle_inner(&self.inner, namespace)
19    }
20
21    fn new_handle_inner(state: &store::State, namespace: Option<Namespace>) -> store::Handle {
22        store::Handle {
23            state: match state {
24                store::State::Loose { store } => store::handle::State::Loose {
25                    store: {
26                        let mut store = store.clone();
27                        store.namespace = namespace;
28                        store
29                    },
30                },
31            },
32        }
33    }
34}
35
36///
37pub mod find;
38
39mod iter {
40    // impl store::Handle {
41    //     pub fn iter<'p, 's>(&'s self, packed: Option<&'p packed::Buffer>) -> std::io::Result<LooseThenPacked<'p, 's>> {
42    // }
43}