Passed reference with explicit lifetime is never 'unborrowed'

This is a fine place to ask n00b questions. Depending on your preferences, StackOverflow can also be a good place to do so.

Since 'b is a reference to self, which contains a reference of lifetime 'a, it is already necessary that 'b is a proper subset of 'a, or that 'a outlives 'b. If this weren't the case, then you could have an &'b self reference, and try to dereference self.value, and hit undefined behavior as you were dereference a value that was no longer live. So when you write the above example, the borrow checker has already that 'a outlives 'b.

There is a notation for making this explicit, which can be useful in some circumstances, though it isn't necessary here:

fn set<'b>(&'b mut self, v: &'a u32) where 'a: 'b

Read : in this context as "outlives": "'a outlives 'b".

This is perfectly correct to write, but it gives no more information than the borrow checker was already able to infer, so most people wouldn't write this. However, I mention it since you say your original problem was more complex, so it may have needed such an explicit relationship provided.

In fact, in this case lifetime elision can allow you to write this even more succinctly; there's an implicit lifetime parameter added for every input reference, so you don't have to write it out explicitly:

fn set(&mut self, v: &'a u32)