rust/hg-cpython/src/dirstate/dirs_multiset.rs
author Simon Sapin <simon.sapin@octobus.net>
Mon, 20 Sep 2021 13:16:36 +0200
changeset 48021 627cd8f33db0
parent 47944 e02f9af7aed1
child 49914 58074252db3c
permissions -rw-r--r--
rust: Remove support for passing a dict to the Rust pathutil.dirs() That is only used by the Python dirstatemap, which not used when Rust is enabled. This allows removing the private `extract_dirstate` function which creates `DirstateEntry` values. This in turn will make easier upcoming changes to `DirstateEntry`. Differential Revision: https://phab.mercurial-scm.org/D11460
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42746
b3518b0baa47 rust-dirstate: create dirstate submodule in hg-cpython
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42609
diff changeset
     1
// dirs_multiset.rs
42303
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     2
//
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     3
// Copyright 2019 Raphaël Gomès <rgomes@octobus.net>
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     4
//
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     5
// This software may be used and distributed according to the terms of the
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     6
// GNU General Public License version 2 or any later version.
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     7
42746
b3518b0baa47 rust-dirstate: create dirstate submodule in hg-cpython
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42609
diff changeset
     8
//! Bindings for the `hg::dirstate::dirs_multiset` file provided by the
42303
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     9
//! `hg-core` package.
42746
b3518b0baa47 rust-dirstate: create dirstate submodule in hg-cpython
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42609
diff changeset
    10
b3518b0baa47 rust-dirstate: create dirstate submodule in hg-cpython
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42609
diff changeset
    11
use std::cell::RefCell;
42303
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    12
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    13
use cpython::{
48021
627cd8f33db0 rust: Remove support for passing a dict to the Rust pathutil.dirs()
Simon Sapin <simon.sapin@octobus.net>
parents: 47944
diff changeset
    14
    exc, ObjectProtocol, PyBytes, PyClone, PyDict, PyErr, PyObject, PyResult,
627cd8f33db0 rust: Remove support for passing a dict to the Rust pathutil.dirs()
Simon Sapin <simon.sapin@octobus.net>
parents: 47944
diff changeset
    15
    Python, UnsafePyLeaked,
42303
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    16
};
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    17
42887
706104dcb2c8 rust-cpython: replace dyn Iterator<..> of sequence with concrete type
Yuya Nishihara <yuya@tcha.org>
parents: 42851
diff changeset
    18
use hg::{
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    19
    utils::hg_path::{HgPath, HgPathBuf},
48021
627cd8f33db0 rust: Remove support for passing a dict to the Rust pathutil.dirs()
Simon Sapin <simon.sapin@octobus.net>
parents: 47944
diff changeset
    20
    DirsMultiset, DirsMultisetIter, DirstateMapError,
42887
706104dcb2c8 rust-cpython: replace dyn Iterator<..> of sequence with concrete type
Yuya Nishihara <yuya@tcha.org>
parents: 42851
diff changeset
    21
};
42303
e240bec26626 rust-dirstate: add rust-cpython bindings to the new parse/pack functions
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    22
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    23
py_class!(pub class Dirs |py| {
44234
bad4e7b361d2 rust-cpython: switch to upstreamed version of PySharedRefCell
Yuya Nishihara <yuya@tcha.org>
parents: 44233
diff changeset
    24
    @shared data inner: DirsMultiset;
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    25
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    26
    // `map` is either a `dict` or a flat iterator (usually a `set`, sometimes
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    27
    // a `list`)
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    28
    def __new__(
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    29
        _cls,
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    30
        map: PyObject,
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    31
    ) -> PyResult<Self> {
48021
627cd8f33db0 rust: Remove support for passing a dict to the Rust pathutil.dirs()
Simon Sapin <simon.sapin@octobus.net>
parents: 47944
diff changeset
    32
        let inner = if map.cast_as::<PyDict>(py).is_ok() {
627cd8f33db0 rust: Remove support for passing a dict to the Rust pathutil.dirs()
Simon Sapin <simon.sapin@octobus.net>
parents: 47944
diff changeset
    33
            let err = "pathutil.dirs() with a dict should only be used by the Python dirstatemap \
627cd8f33db0 rust: Remove support for passing a dict to the Rust pathutil.dirs()
Simon Sapin <simon.sapin@octobus.net>
parents: 47944
diff changeset
    34
                and should not be used when Rust is enabled";
627cd8f33db0 rust: Remove support for passing a dict to the Rust pathutil.dirs()
Simon Sapin <simon.sapin@octobus.net>
parents: 47944
diff changeset
    35
            return Err(PyErr::new::<exc::TypeError, _>(py, err.to_string()))
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    36
        } else {
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    37
            let map: Result<Vec<HgPathBuf>, PyErr> = map
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    38
                .iter(py)?
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    39
                .map(|o| {
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    40
                    Ok(HgPathBuf::from_bytes(
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    41
                        o?.extract::<PyBytes>(py)?.data(py),
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    42
                    ))
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    43
                })
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    44
                .collect();
42802
2e1f74cc3350 rust-dirstate: split DirsMultiset constructor per input type
Yuya Nishihara <yuya@tcha.org>
parents: 42752
diff changeset
    45
            DirsMultiset::from_manifest(&map?)
43863
bc7d8f45c3b6 rust-dirs: handle forgotten `Result`s
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43788
diff changeset
    46
                .map_err(|e| {
bc7d8f45c3b6 rust-dirs: handle forgotten `Result`s
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43788
diff changeset
    47
                    PyErr::new::<exc::ValueError, _>(py, e.to_string())
bc7d8f45c3b6 rust-dirs: handle forgotten `Result`s
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43788
diff changeset
    48
                })?
42748
7cae6bc29ff9 rust-parsers: switch to parse/pack_dirstate to mutate-on-loop
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42746
diff changeset
    49
        };
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    50
44234
bad4e7b361d2 rust-cpython: switch to upstreamed version of PySharedRefCell
Yuya Nishihara <yuya@tcha.org>
parents: 44233
diff changeset
    51
        Self::create_instance(py, inner)
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    52
    }
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    53
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    54
    def addpath(&self, path: PyObject) -> PyResult<PyObject> {
44233
281642cd1d04 rust-cpython: rename inner_shared() to inner()
Yuya Nishihara <yuya@tcha.org>
parents: 44203
diff changeset
    55
        self.inner(py).borrow_mut().add_path(
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    56
            HgPath::new(path.extract::<PyBytes>(py)?.data(py)),
43788
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    57
        ).and(Ok(py.None())).or_else(|e| {
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    58
            match e {
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    59
                DirstateMapError::EmptyPath => {
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    60
                    Ok(py.None())
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    61
                },
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    62
                e => {
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    63
                    Err(PyErr::new::<exc::ValueError, _>(
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    64
                        py,
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    65
                        e.to_string(),
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    66
                    ))
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    67
                }
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    68
            }
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    69
        })
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    70
    }
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    71
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    72
    def delpath(&self, path: PyObject) -> PyResult<PyObject> {
44233
281642cd1d04 rust-cpython: rename inner_shared() to inner()
Yuya Nishihara <yuya@tcha.org>
parents: 44203
diff changeset
    73
        self.inner(py).borrow_mut().delete_path(
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
    74
            HgPath::new(path.extract::<PyBytes>(py)?.data(py)),
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    75
        )
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    76
            .and(Ok(py.None()))
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    77
            .or_else(|e| {
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    78
                match e {
43788
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    79
                    DirstateMapError::EmptyPath => {
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    80
                        Ok(py.None())
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    81
                    },
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    82
                    e => {
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    83
                        Err(PyErr::new::<exc::ValueError, _>(
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    84
                            py,
43788
1fe2e574616e rust-dirs: address failing tests for `dirs` impl with a temporary fix
Rapha?l Gom?s <rgomes@octobus.net>
parents: 43430
diff changeset
    85
                            e.to_string(),
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    86
                        ))
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    87
                    }
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    88
                }
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    89
            })
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    90
    }
42752
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
    91
    def __iter__(&self) -> PyResult<DirsMultisetKeysIterator> {
44233
281642cd1d04 rust-cpython: rename inner_shared() to inner()
Yuya Nishihara <yuya@tcha.org>
parents: 44203
diff changeset
    92
        let leaked_ref = self.inner(py).leak_immutable();
42891
5ccc08d02280 rust-cpython: leverage py_shared_iterator::from_inner() where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 42889
diff changeset
    93
        DirsMultisetKeysIterator::from_inner(
42752
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
    94
            py,
43285
ffc1fbd7d1f5 rust-cpython: make PyLeakedRef operations relatively safe
Yuya Nishihara <yuya@tcha.org>
parents: 43284
diff changeset
    95
            unsafe { leaked_ref.map(py, |o| o.iter()) },
42752
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
    96
        )
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    97
    }
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    98
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
    99
    def __contains__(&self, item: PyObject) -> PyResult<bool> {
44233
281642cd1d04 rust-cpython: rename inner_shared() to inner()
Yuya Nishihara <yuya@tcha.org>
parents: 44203
diff changeset
   100
        Ok(self.inner(py).borrow().contains(HgPath::new(
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
   101
            item.extract::<PyBytes>(py)?.data(py).as_ref(),
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
   102
        )))
42537
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
   103
    }
ce94f9622acd rust-dirstate: add "dirs" rust-cpython binding
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42408
diff changeset
   104
});
42752
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   105
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   106
impl Dirs {
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   107
    pub fn from_inner(py: Python, d: DirsMultiset) -> PyResult<Self> {
44234
bad4e7b361d2 rust-cpython: switch to upstreamed version of PySharedRefCell
Yuya Nishihara <yuya@tcha.org>
parents: 44233
diff changeset
   108
        Self::create_instance(py, d)
42752
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   109
    }
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   110
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
   111
    fn translate_key(
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
   112
        py: Python,
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
   113
        res: &HgPathBuf,
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42891
diff changeset
   114
    ) -> PyResult<Option<PyBytes>> {
44973
26114bd6ec60 rust: do a clippy pass
Rapha?l Gom?s <rgomes@octobus.net>
parents: 44234
diff changeset
   115
        Ok(Some(PyBytes::new(py, res.as_bytes())))
42752
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   116
    }
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   117
}
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   118
42889
ea91a126c803 rust-cpython: rename py_shared_iterator_impl to py_shared_iterator
Yuya Nishihara <yuya@tcha.org>
parents: 42887
diff changeset
   119
py_shared_iterator!(
42752
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   120
    DirsMultisetKeysIterator,
44234
bad4e7b361d2 rust-cpython: switch to upstreamed version of PySharedRefCell
Yuya Nishihara <yuya@tcha.org>
parents: 44233
diff changeset
   121
    UnsafePyLeaked<DirsMultisetIter<'static>>,
42752
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   122
    Dirs::translate_key,
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   123
    Option<PyBytes>
30320c7bf79f rust-cpython: add macro for sharing references
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42750
diff changeset
   124
);