rust: less set lookups in AncestorsIterator
This uses the boolean return of `HashSet::insert()` to factor
pairs of contains()/insert() into a single insert()
On the mozilla-central repository (450k changesets), I get about a bit more
than 10% better medians in perfancestors (taking the mean of three runs)
Best run for parent changeset:
! wall 0.106474 comb 0.110000 user 0.110000 sys 0.000000 (median of 93)
Best run for this changeset:
! wall 0.093191 comb 0.090000 user 0.090000 sys 0.000000 (median of 100)
Differential Revision: https://phab.mercurial-scm.org/D5942
#require test-repo pyflakes hg10
$ . "$TESTDIR/helpers-testrepo.sh"
run pyflakes on all tracked files ending in .py or without a file ending
(skipping binary file random-seed)
$ cat > test.py <<EOF
> print(undefinedname)
> EOF
$ pyflakes test.py 2>/dev/null | "$TESTDIR/filterpyflakes.py"
test.py:1: undefined name 'undefinedname'
$ cd "`dirname "$TESTDIR"`"
$ testrepohg locate 'set:**.py or grep("^#!.*python")' \
> -X hgext/fsmonitor/pywatchman \
> -X mercurial/pycompat.py -X contrib/python-zstandard \
> -X mercurial/thirdparty/cbor \
> -X mercurial/thirdparty/concurrent \
> -X mercurial/thirdparty/zope \
> 2>/dev/null \
> | xargs pyflakes 2>/dev/null | "$TESTDIR/filterpyflakes.py"