← Back to context

Comment by stouset

2 days ago

Maybe I’m misunderstanding, but why is that not possible with a

    Fn(_: T) -> T

As sibling notes, it is. It's very rarely seen though.

One place you might see something like it is if an API takes ownership, but returns it on error; you see the error side carry the resource you gave it, so you could try again.

How is that different to

  Fn(_: &mut T)

?

  • In the former the caller does not retain access to T until Fn returns.

    • I think I'm lost. If I give a mutable reference to a function... I can't access it (even read it) until it returns, no?

      What is different?

      1 reply →

    • That's true of mutable references too though isn't it? In fact lots of people have suggested they should really have been called "exclusive references", since you can actually mutate some objects through non-exclusive references (called "interior mutability" normally).