gpt4 book ai didi

rust - 为什么这两个结构受生命周期影响的方式不同

转载 作者:行者123 更新时间:2023-11-29 08:28:08 25 4
gpt4 key购买 nike

这是一个跟进问题:How to fix: cannot infer an appropriate lifetime for automatic coercion .

我想知道为什么这两个结构在受生命周期影响的方式上有所不同。

示例 1

use http;

pub struct Request<'a> {
pub origin: &'a http::server::Request,
}

示例 2

use http;

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

它们看起来与我非常相似,除了第二个包含可变引用而第一个包含不可变引用。

但是,对于示例 2,我不能只使用生命周期作为引用。我必须也为该结构提供生命周期。

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

最佳答案

&'a T意味着您有对 T 的引用终身有效的对象'a .

T<'b>表示 T对象内部包含一个在整个生命周期内有效的对象 'b , 如 struct T<'b> { t: &'b U } .

&'a T<'b>因此是具有生命周期的引用 'aT<'b>对象。

ResponseWriter 的情况下, 它包含对 Request 的引用和 TcpStream ,而 Request不包含任何引用。

关于rust - 为什么这两个结构受生命周期影响的方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24292831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com