Skip to content
Snippets Groups Projects
  • Georges Racinet's avatar
    b08c5fbe
    rust: blanket implementation of Graph for Graph references · b08c5fbe
    Georges Racinet authored
    The need comes from the fact that `AncestorsIterator` and many
    Graph-related algorithms take ownership of the `Graph` they work with.
    This, in turn is due to them needing to accept the `Index` instances
    that are provided by the Python layers (that neither rhg nor `RHGitaly`
    use, of course): the fact that nowadays the Python layer holds an object
    that is itself implemented in Rust does not change the core problem that
    they cannot be tracked by the borrow checker.
    
    Even though it looks like cloning `Changelog` would be cheap, it seems
    hard to guarantee that on the long run. The object is already too rich
    for us to be comfortable with it, when using references is the most
    natural and guaranteed way of proceeding.
    
    The added test seems a bit superfleous, but it will act as a reminder
    that this feature is really useful until something in the Mercurial code
    base actually uses it.
    b08c5fbe
    History
    rust: blanket implementation of Graph for Graph references
    Georges Racinet authored
    The need comes from the fact that `AncestorsIterator` and many
    Graph-related algorithms take ownership of the `Graph` they work with.
    This, in turn is due to them needing to accept the `Index` instances
    that are provided by the Python layers (that neither rhg nor `RHGitaly`
    use, of course): the fact that nowadays the Python layer holds an object
    that is itself implemented in Rust does not change the core problem that
    they cannot be tracked by the borrow checker.
    
    Even though it looks like cloning `Changelog` would be cheap, it seems
    hard to guarantee that on the long run. The object is already too rich
    for us to be comfortable with it, when using references is the most
    natural and guaranteed way of proceeding.
    
    The added test seems a bit superfleous, but it will act as a reminder
    that this feature is really useful until something in the Mercurial code
    base actually uses it.