From patchwork Tue Apr 12 16:04:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D12522: rust-dirstatemap: use `&HgPath` instead of `HgPathBuf` in `copy_map_insert` From: phabricator X-Patchwork-Id: 50870 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Tue, 12 Apr 2022 16:04:35 +0000 Alphare created this revision. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REVISION SUMMARY No reason to require an owned path here. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D12522 AFFECTED FILES rust/hg-core/src/dirstate_tree/dirstate_map.rs rust/hg-cpython/src/dirstate/dirstate_map.rs CHANGE DETAILS To: Alphare, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/rust/hg-cpython/src/dirstate/dirstate_map.rs b/rust/hg-cpython/src/dirstate/dirstate_map.rs --- a/rust/hg-cpython/src/dirstate/dirstate_map.rs +++ b/rust/hg-cpython/src/dirstate/dirstate_map.rs @@ -23,13 +23,10 @@ pybytes_deref::PyBytesDeref, }; use hg::{ - dirstate::StateMapIter, - dirstate_tree::on_disk::DirstateV2ParseError, - dirstate_tree::owning::OwningDirstateMap, - revlog::Node, - utils::files::normalize_case, - utils::hg_path::{HgPath, HgPathBuf}, - DirstateEntry, DirstateError, DirstateParents, EntryState, + dirstate::StateMapIter, dirstate_tree::on_disk::DirstateV2ParseError, + dirstate_tree::owning::OwningDirstateMap, revlog::Node, + utils::files::normalize_case, utils::hg_path::HgPath, DirstateEntry, + DirstateError, DirstateParents, EntryState, }; // TODO @@ -411,8 +408,8 @@ self.inner(py) .borrow_mut() .copy_map_insert( - HgPathBuf::from_bytes(key.data(py)), - HgPathBuf::from_bytes(value.data(py)), + HgPath::new(key.data(py)), + HgPath::new(value.data(py)), ) .map_err(|e| v2_error(py, e))?; Ok(py.None()) diff --git a/rust/hg-core/src/dirstate_tree/dirstate_map.rs b/rust/hg-core/src/dirstate_tree/dirstate_map.rs --- a/rust/hg-core/src/dirstate_tree/dirstate_map.rs +++ b/rust/hg-core/src/dirstate_tree/dirstate_map.rs @@ -1284,8 +1284,8 @@ pub fn copy_map_insert( &mut self, - key: HgPathBuf, - value: HgPathBuf, + key: &HgPath, + value: &HgPath, ) -> Result, DirstateV2ParseError> { self.with_dmap_mut(|map| { let node = DirstateMap::get_or_insert_node( @@ -1299,7 +1299,10 @@ if node.copy_source.is_none() { map.nodes_with_copy_source_count += 1 } - Ok(node.copy_source.replace(value.into()).map(Cow::into_owned)) + Ok(node + .copy_source + .replace(value.to_owned().into()) + .map(Cow::into_owned)) }) }