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 execbit
$ . "$TESTDIR/helpers-testrepo.sh"
$ cd "`dirname "$TESTDIR"`"
look for python scripts without the execute bit
$ testrepohg files 'set:**.py and not exec() and grep(r"^#!.*?python")'
[1]
look for python scripts with execute bit but not shebang
$ testrepohg files 'set:**.py and exec() and not grep(r"^#!.*?python")'
[1]
look for shell scripts with execute bit but not shebang
$ testrepohg files 'set:**.sh and exec() and not grep(r"^#!.*(ba)?sh")'
[1]
look for non scripts with no shebang
$ testrepohg files 'set:exec() and not **.sh and not **.py and not grep(r"^#!")'
[1]