It doesn't say that the equivalence holds universally, but qualifies it with:
As for your error, you haven't showed the exact code, but I suppose that you're matching on a reference to a tuple struct with a Result wrapping an owned non-CopyOk variant, in which case the plain d in the match pattern would try to move out of a borrow (an error), &d would not match structurally (also an error), while ref d would successfully borrow the wrapped value.
So the entire idea of ref here is to express that im not matching a reference (therefore i cannot use &) but im getting the reference of the thing after the match. Is that correct ? @inejge
Right. Apropos match, you should also pay attention to the cases where "match ergonomics"/"default binding modes" silently modifies match patterns, which can sometimes produce unintuitve results, cf #64586.