Rust 为什么这两种结构受生命周期影响的方式不同

Rust 为什么这两种结构受生命周期影响的方式不同,rust,lifetime,Rust,Lifetime,这是以下问题的后续问题: 我想知道为什么这两种结构受生命周期影响的方式不同 示例1 use http; pub struct Request<'a> { pub origin: &'a http::server::Request, } 使用http; 发布结构请求, } 它们看起来与我非常相似,只是第二个包含可变引用,而第一个包含不可变引用 然而,例如2,我不能仅仅用生命周期作为参考。我也必须给结构一个生命周期 所以,我想知道结构内部是否有什么东西导致了这种行为

这是以下问题的后续问题:

我想知道为什么这两种结构受生命周期影响的方式不同

示例1

use http;

pub struct Request<'a> {
    pub origin: &'a http::server::Request,
}
使用http;
发布结构请求,
}
它们看起来与我非常相似,只是第二个包含可变引用,而第一个包含不可变引用


然而,例如2,我不能仅仅用生命周期作为参考。我也必须给结构一个生命周期


所以,我想知道结构内部是否有什么东西导致了这种行为,或者是因为第二个示例中的引用是可变的。如果是这样的话,为什么会这样呢。

&a T
意味着您有一个对
T
对象的引用,该对象在
'a
的生命周期内有效


因此,
T
是对a
T的生命周期
'a
的引用,但是,例如2,我不能仅使用生命周期作为引用。我还必须为结构提供生命周期。“你的意思是,如果你检查
ResponseWriter
的定义,你会发现它包含一个引用。我猜是这样的回答作者:啊,太棒了。在它的定义中,它被一个生命周期参数化。所以我必须考虑到这一点。有道理!如果有人愿意加上它作为答案,我很乐意接受:)可能重复(一般来说,如果你有一个稍微额外的问题,这只是一个澄清的请求,最好保持在同一个问题中。)
use http;

pub struct Response<'a, 'b> {
    pub origin: &'a mut http::server::ResponseWriter<'b>,
}