Show More
@@ -28,17 +28,28 b' where' | |||
|
28 | 28 | C: FromIterator<Revision>, |
|
29 | 29 | I: RevlogIndex, |
|
30 | 30 | { |
|
31 | rev_pyiter_collect_or_else(py, revs, index, |r| { | |
|
32 | PyErr::new::<GraphError, _>(py, ("InvalidRevision", r.0)) | |
|
33 | }) | |
|
34 | } | |
|
35 | ||
|
36 | /// Same as [`rev_pyiter_collect`], giving control on returned errors | |
|
37 | pub fn rev_pyiter_collect_or_else<C, I>( | |
|
38 | py: Python, | |
|
39 | revs: &PyObject, | |
|
40 | index: &I, | |
|
41 | invalid_rev_error: impl FnOnce(PyRevision) -> PyErr + Copy, | |
|
42 | ) -> PyResult<C> | |
|
43 | where | |
|
44 | C: FromIterator<Revision>, | |
|
45 | I: RevlogIndex, | |
|
46 | { | |
|
31 | 47 | revs.iter(py)? |
|
32 | 48 | .map(|r| { |
|
33 | 49 | r.and_then(|o| match o.extract::<PyRevision>(py) { |
|
34 | 50 | Ok(r) => index |
|
35 | 51 | .check_revision(UncheckedRevision(r.0)) |
|
36 |
.ok_or_else(|| |
|
|
37 | PyErr::new::<GraphError, _>( | |
|
38 | py, | |
|
39 | ("InvalidRevision", r.0), | |
|
40 | ) | |
|
41 | }), | |
|
52 | .ok_or_else(|| invalid_rev_error(r)), | |
|
42 | 53 | Err(e) => Err(e), |
|
43 | 54 | }) |
|
44 | 55 | }) |
General Comments 0
You need to be logged in to leave comments.
Login now