diff -r 992f0d6e7f33 -r 8042856c90b6 mercurial/revlog.py --- a/mercurial/revlog.py Wed Dec 11 18:10:20 2019 +0100 +++ b/mercurial/revlog.py Thu Dec 12 18:31:17 2019 +0100 @@ -106,6 +106,7 @@ parsers = policy.importmod('parsers') rustancestor = policy.importrust('ancestor') rustdagop = policy.importrust('dagop') +rustrevlog = policy.importrust('revlog') # Aliased for performance. _zlibdecompress = zlib.decompress @@ -351,6 +352,12 @@ return p +class rustrevlogio(revlogio): + def parseindex(self, data, inline): + index, cache = super(rustrevlogio, self).parseindex(data, inline) + return rustrevlog.MixedIndex(index), cache + + class revlog(object): """ the underlying revision storage object @@ -585,6 +592,8 @@ self._storedeltachains = True self._io = revlogio() + if rustrevlog is not None and self.opener.options.get('rust.index'): + self._io = rustrevlogio() if self.version == REVLOGV0: self._io = revlogoldio() try: