Mercurial > hg
comparison rust/hg-cpython/src/dirstate/dirstate_map.rs @ 48044:d5528ac9b4f2
dirstate: Use the Rust implementation of DirstateItem when Rust is enabled
… instead of the C implementation, with C/Rust conversions at the FFI boundary
Differential Revision: https://phab.mercurial-scm.org/D11486
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Wed, 22 Sep 2021 11:33:29 +0200 |
parents | cedfe2606adf |
children | 32ef647821b2 |
comparison
equal
deleted
inserted
replaced
48043:3e69bef2031a | 48044:d5528ac9b4f2 |
---|---|
17 UnsafePyLeaked, | 17 UnsafePyLeaked, |
18 }; | 18 }; |
19 | 19 |
20 use crate::{ | 20 use crate::{ |
21 dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator}, | 21 dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator}, |
22 dirstate::make_dirstate_item, | 22 dirstate::item::DirstateItem, |
23 dirstate::non_normal_entries::{ | 23 dirstate::non_normal_entries::{ |
24 NonNormalEntries, NonNormalEntriesIterator, | 24 NonNormalEntries, NonNormalEntriesIterator, |
25 }, | 25 }, |
26 pybytes_deref::PyBytesDeref, | 26 pybytes_deref::PyBytesDeref, |
27 }; | 27 }; |
121 .borrow() | 121 .borrow() |
122 .get(HgPath::new(key.data(py))) | 122 .get(HgPath::new(key.data(py))) |
123 .map_err(|e| v2_error(py, e))? | 123 .map_err(|e| v2_error(py, e))? |
124 { | 124 { |
125 Some(entry) => { | 125 Some(entry) => { |
126 Ok(Some(make_dirstate_item(py, &entry)?)) | 126 Ok(Some(DirstateItem::new_as_pyobject(py, entry)?)) |
127 }, | 127 }, |
128 None => Ok(default) | 128 None => Ok(default) |
129 } | 129 } |
130 } | 130 } |
131 | 131 |
448 .borrow() | 448 .borrow() |
449 .get(key) | 449 .get(key) |
450 .map_err(|e| v2_error(py, e))? | 450 .map_err(|e| v2_error(py, e))? |
451 { | 451 { |
452 Some(entry) => { | 452 Some(entry) => { |
453 Ok(make_dirstate_item(py, &entry)?) | 453 Ok(DirstateItem::new_as_pyobject(py, entry)?) |
454 }, | 454 }, |
455 None => Err(PyErr::new::<exc::KeyError, _>( | 455 None => Err(PyErr::new::<exc::KeyError, _>( |
456 py, | 456 py, |
457 String::from_utf8_lossy(key.as_bytes()), | 457 String::from_utf8_lossy(key.as_bytes()), |
458 )), | 458 )), |
637 res: Result<(&HgPath, DirstateEntry), DirstateV2ParseError>, | 637 res: Result<(&HgPath, DirstateEntry), DirstateV2ParseError>, |
638 ) -> PyResult<Option<(PyBytes, PyObject)>> { | 638 ) -> PyResult<Option<(PyBytes, PyObject)>> { |
639 let (f, entry) = res.map_err(|e| v2_error(py, e))?; | 639 let (f, entry) = res.map_err(|e| v2_error(py, e))?; |
640 Ok(Some(( | 640 Ok(Some(( |
641 PyBytes::new(py, f.as_bytes()), | 641 PyBytes::new(py, f.as_bytes()), |
642 make_dirstate_item(py, &entry)?, | 642 DirstateItem::new_as_pyobject(py, entry)?, |
643 ))) | 643 ))) |
644 } | 644 } |
645 } | 645 } |
646 | 646 |
647 py_shared_iterator!( | 647 py_shared_iterator!( |