rust-discovery: takefullsample() core implementation
take_full_sample() browses the undecided set in both directions: from
its roots as well as from its heads.
Following what's done on the Python side, we alter update_sample()
signature to take a closure returning an iterator: either ParentsIterator
or an iterator over the children found in `children_cache`. These constructs
should probably be split off in a separate module.
This is a first concrete example where a more abstract graph notion (probably
a trait) would be useful, as this is nothing but an operation on the reversed
DAG.
A similar motivation in the context of the discovery
process would be to replace the call to dagops::range in
`add_missing_revisions()` with a simple iteration over descendents, again an
operation on the reversed graph.
Differential Revision: https://phab.mercurial-scm.org/D6424
{header}
<id>{urlbase}{url|urlescape}atom-log/tip/{file|escape}</id>
<link rel="self" href="{urlbase}{url|urlescape}atom-log/tip/{file|urlescape}"/>
<title>{repo|escape}: {file|escape} history</title>
{latestentry%feedupdated}
{entries%changelogentry}
</feed>