gpt4 book ai didi

rust - 如何在 AsRef 上使用生命周期

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

我很难理解如何在下面的代码中使用生命周期。我知道明确的生命周期对于帮助编译器理解它何时可以保存/释放数据是必要的,但在这种特殊情况下, url.serialize() 生成一个匿名字符串,我不太确定如何来解决这个问题。

impl AsRef<str> for RequestUri {
#[inline]
fn as_ref(&self) -> &str {
match self {
&RequestUri::AbsoluteUri(ref url) => url.serialize().as_ref()
}
}
}

最佳答案

AsRef 的文档状态:

A cheap, reference-to-reference conversion.

但是,您的代码不是引用到引用的转换,也不是“便宜”的(对于“便宜”的某些解释)。

你没有告诉我们 RequestUri::AbsoluteUriurl.serialize 来自什么库,所以我只能猜测它返回一个 String。任何调用 serialize 的人都可以取得字符串的所有权,也可以让它被丢弃。

在您的示例中,您使用 String 并对其调用 as_ref,这会返回一个 &str。但是,没有任何东西拥有 String。一旦该 block 结束,该 String 将被删除,任何引用都将无效。

使用您提供的信息无法解决您向我们提出的问题。

关于rust - 如何在 AsRef 上使用生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32062866/

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