|
@@ -23,8 +23,8 @@ impl Clerk {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
pub fn get<K: AsRef<str>>(&mut self, key: K) -> Option<String> {
|
|
pub fn get<K: AsRef<str>>(&mut self, key: K) -> Option<String> {
|
|
|
- let (init, inner) = (&self.init, &mut self.inner);
|
|
|
|
|
- init.call_once(|| inner.commit_sentinel());
|
|
|
|
|
|
|
+ let inner = self.init_once();
|
|
|
|
|
+
|
|
|
let key = key.as_ref();
|
|
let key = key.as_ref();
|
|
|
loop {
|
|
loop {
|
|
|
match inner.get(key.to_owned(), Default::default()) {
|
|
match inner.get(key.to_owned(), Default::default()) {
|
|
@@ -39,8 +39,8 @@ impl Clerk {
|
|
|
key: K,
|
|
key: K,
|
|
|
value: V,
|
|
value: V,
|
|
|
) -> Option<()> {
|
|
) -> Option<()> {
|
|
|
- let (init, inner) = (&self.init, &mut self.inner);
|
|
|
|
|
- init.call_once(|| inner.commit_sentinel());
|
|
|
|
|
|
|
+ let inner = self.init_once();
|
|
|
|
|
+
|
|
|
let key = key.as_ref();
|
|
let key = key.as_ref();
|
|
|
let value = value.as_ref();
|
|
let value = value.as_ref();
|
|
|
inner.put(key.to_owned(), value.to_owned(), Default::default())
|
|
inner.put(key.to_owned(), value.to_owned(), Default::default())
|
|
@@ -51,12 +51,18 @@ impl Clerk {
|
|
|
key: K,
|
|
key: K,
|
|
|
value: V,
|
|
value: V,
|
|
|
) -> Option<()> {
|
|
) -> Option<()> {
|
|
|
- let (init, inner) = (&self.init, &mut self.inner);
|
|
|
|
|
- init.call_once(|| inner.commit_sentinel());
|
|
|
|
|
|
|
+ let inner = self.init_once();
|
|
|
|
|
+
|
|
|
let key = key.as_ref();
|
|
let key = key.as_ref();
|
|
|
let value = value.as_ref();
|
|
let value = value.as_ref();
|
|
|
inner.append(key.to_owned(), value.to_owned(), Default::default())
|
|
inner.append(key.to_owned(), value.to_owned(), Default::default())
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ pub fn init_once(&mut self) -> &mut ClerkInner {
|
|
|
|
|
+ let (init, inner) = (&self.init, &mut self.inner);
|
|
|
|
|
+ init.call_once(|| inner.commit_sentinel());
|
|
|
|
|
+ &mut self.inner
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
pub struct ClerkInner {
|
|
pub struct ClerkInner {
|