This is a follow up question to: How to fix: cannot infer an appropriate lifetime for automatic coercion.
I wonder why do these both structs differ in the way they are affected by lifetimes.
Example 1
use http;
pub struct Request<'a> {
pub origin: &'a http::server::Request,
}
Example 2
use http;
pub struct Response<'a, 'b> {
pub origin: &'a mut http::server::ResponseWriter<'b>,
}
They look pretty much similar to me except that the second one holds a mutable reference whereas the first one holds an immutable reference.
However, for Example 2 I can't just use a lifetime for the reference. I must give a lifetime for the struct as well.
So, I wonder is there something inside the struct that causes such behavior or is it really because the one in the second example is a mutable reference. And if so, why exactly does that cause that.