changeset 42801:1a535313ad1b

rust-dirstate: remove excessive clone() of parameter and return value I think pass-by-ref is preferred in general.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 17 Aug 2019 16:33:05 +0900
parents 79561843729a
children 2e1f74cc3350
files rust/hg-core/src/dirstate/dirstate_map.rs rust/hg-cpython/src/dirstate/dirstate_map.rs
diffstat 2 files changed, 11 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/rust/hg-core/src/dirstate/dirstate_map.rs	Sat Aug 17 18:06:08 2019 +0900
+++ b/rust/hg-core/src/dirstate/dirstate_map.rs	Sat Aug 17 16:33:05 2019 +0900
@@ -68,7 +68,7 @@
         self.file_fold_map = None;
         self.non_normal_set.clear();
         self.other_parent_set.clear();
-        self.set_parents(DirstateParents {
+        self.set_parents(&DirstateParents {
             p1: NULL_ID,
             p2: NULL_ID,
         })
@@ -253,9 +253,9 @@
     pub fn parents(
         &mut self,
         file_contents: &[u8],
-    ) -> Result<DirstateParents, DirstateError> {
+    ) -> Result<&DirstateParents, DirstateError> {
         if let Some(ref parents) = self.parents {
-            return Ok(parents.clone());
+            return Ok(parents);
         }
         let parents;
         if file_contents.len() == PARENT_SIZE * 2 {
@@ -274,11 +274,11 @@
             return Err(DirstateError::Parse(DirstateParseError::Damaged));
         }
 
-        self.parents = Some(parents.to_owned());
-        Ok(parents.clone())
+        self.parents = Some(parents);
+        Ok(self.parents.as_ref().unwrap())
     }
 
-    pub fn set_parents(&mut self, parents: DirstateParents) {
+    pub fn set_parents(&mut self, parents: &DirstateParents) {
         self.parents = Some(parents.clone());
         self.dirty_parents = true;
     }
@@ -298,7 +298,7 @@
         )?;
 
         if !self.dirty_parents {
-            self.set_parents(parents.to_owned());
+            self.set_parents(&parents);
         }
 
         Ok(Some(parents))
@@ -320,9 +320,9 @@
         Ok(packed)
     }
 
-    pub fn build_file_fold_map(&mut self) -> FileFoldMap {
+    pub fn build_file_fold_map(&mut self) -> &FileFoldMap {
         if let Some(ref file_fold_map) = self.file_fold_map {
-            return file_fold_map.to_owned();
+            return file_fold_map;
         }
         let mut new_file_fold_map = FileFoldMap::new();
         for (filename, DirstateEntry { state, .. }) in self.state_map.borrow()
@@ -335,7 +335,7 @@
             }
         }
         self.file_fold_map = Some(new_file_fold_map);
-        self.file_fold_map.to_owned().unwrap()
+        self.file_fold_map.as_ref().unwrap()
     }
 }
 
--- a/rust/hg-cpython/src/dirstate/dirstate_map.rs	Sat Aug 17 18:06:08 2019 +0900
+++ b/rust/hg-cpython/src/dirstate/dirstate_map.rs	Sat Aug 17 16:33:05 2019 +0900
@@ -243,7 +243,7 @@
 
         self.inner(py)
             .borrow_mut()
-            .set_parents(DirstateParents { p1, p2 });
+            .set_parents(&DirstateParents { p1, p2 });
         Ok(py.None())
     }