gpt4 book ai didi

struct - 如何为包含引用的结构实现 AsRef

转载 作者:行者123 更新时间:2023-12-03 11:26:22 28 4
gpt4 key购买 nike

如果我有一个包含这样的引用的结构:

struct Struct<'a> {
reference: &'a str
}

如何为 Struct 实现 AsRef?我试过这个:

impl<'a> AsRef<Struct<'a>> for Struct<'a> {
fn as_ref(&self) -> &Struct {
self
}
}

但未能满足编译要求:

cannot infer an appropriate lifetime for lifetime parameter in generic type due to conflicting requirements

最佳答案

fn as_ref(&self) -> &Struct编译器必须推断返回类型中的(隐式)泛型生命周期,但未能这样做。编译器期待一个 Struct<'a>但签名 promise 一个免费参数。这就是为什么你得到

      expected fn(&Struct<'a>) -> &Struct<'a>
found fn(&Struct<'a>) -> &Struct<'_> // '_ is some anonymous lifetime,
// which needs to come from somewhere

解决方法是修改签名返回Struct<'a>而不是 Struct .更短更清晰:

impl<'a> AsRef<Struct<'a>> for Struct<'a> {
fn as_ref(&self) -> &Self { // Self is Struct<'a>, the type for which we impl AsRef
self
}
}

关于struct - 如何为包含引用的结构实现 AsRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59091727/

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