I think I half understand.
I suppose the intention of this is to say that the error returned from source
can last longer than the error of which it is the source? That would make sense. Concretely, it cannot hold references into the downstream error. So if this wasn't there, the implied lifetime would be something like this, which is too constraining:
fn<'a> not_source(&'a self) -> &'a dyn Error;
The returned error need not, itself, live forever (in the way a static string does) but it must be capable of living arbitrarily long, because it does not hold references to anything that dies sooner than the object itself?
Is this talking about the difference between
&'static dyn Error
versus
&(dyn Error + 'static)
I feel like this could be clearer in the book...