gpt4 book ai didi

generics - 使用 AsRef 返回包含在输入包装器类型中的引用

转载 作者:行者123 更新时间:2023-12-03 11:25:56 24 4
gpt4 key购买 nike

我有一个围绕 &str 的包装器来保持不变量。当我尝试返回一个新的包装器时,该包装器基本上将参数包装的相同数据包装到函数中( playground ),我收到“无法返回引用函数参数 s 的值”

struct MyStrWrapper<'a> {
raw: &'a str,
}

impl AsRef<str> for MyStrWrapper<'_> {
fn as_ref(&self) -> &str {
&self.raw
}
}

fn my_function<'inp>(s: MyStrWrapper<'inp>) -> MyStrWrapper<'inp> {
MyStrWrapper {
raw: &s.as_ref()[1..],
}
}

索引与错误无关,但当我使用 s.raw 而不是通过 as_ref() 直接访问成员时它会起作用。有没有什么好的方法可以避免 rawmy_function 可见?

最佳答案

您可以将 s 作为具有相同生命周期 ( Playground ) 的引用传递:

fn my_function<'inp>(s: &'inp MyStrWrapper<'inp>) -> MyStrWrapper<'inp> 

然后调用引用:

my_function(&s);

关于generics - 使用 AsRef 返回包含在输入包装器类型中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65751137/

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