Rust 为什么借阅检查者认为内容的寿命不够长?

Rust 为什么借阅检查者认为内容的寿命不够长?,rust,lifetime,borrow-checker,borrowing,Rust,Lifetime,Borrow Checker,Borrowing,我还是个新手,我有这个功能: 编辑:据我所知,这是一个更新版本的函数,具有相同的问题 pub fn new\u from\u file\u path(path:&str)->解析器{ 让path_buf:PathBuf=PathBuf::from(path); 让绝对路径:PathBuf=std::fs::规范化(path_buf).unwrap(); let data:String=std::fs::read_to_String(绝对路径).unwrap(); 让clone=data.clon

我还是个新手,我有这个功能:

编辑:据我所知,这是一个更新版本的函数,具有相同的问题

pub fn new\u from\u file\u path(path:&str)->解析器{
让path_buf:PathBuf=PathBuf::from(path);
让绝对路径:PathBuf=std::fs::规范化(path_buf).unwrap();
let data:String=std::fs::read_to_String(绝对路径).unwrap();
让clone=data.clone();
让s_切片:&str=&clone[…];
返回解析器::从_字符串_数据(s_切片)中新建_;
}
下面是新的_from_string_data()函数的实现

pub fn new\u from\u string\u data(数据:&str)->解析器{
让parser=parser::new(data.chars());
返回解析器;
}
这是解析器的结构定义:

pub结构分析器,
}
这是我收到的错误信息的屏幕截图


如果需要任何帮助,请告知我是否需要更多信息。

new\u from\u string\u data
函数返回一个与输入参数
data
具有相同生存期的
解析器


new\u from\u file\u path
的情况下,
data
s\u slice
,它是函数
new\u from\u file\u path
拥有的字符串
clone
的一部分。因此,返回的
解析器
将引用
克隆
,当从函数
new\u from\u file\u路径
str::chars()
返回需要显式生存期的迭代器结构(可能我自己还没有阅读完整的结构定义)引用传递到
chars()的数据(
pub-struct-Chars-parserc你能添加你试图构建这段代码时得到的错误消息吗?如果我不得不猜测的话,我会说它是错误的,因为
内容的生存期不是
静态的
标记器
之前结束。从技术上说不可能确定,因为这个问题不包含一个,但我可以n实际上保证
标记器
正在存储对
内容的引用
,因此当
内容
在函数末尾被删除时,
标记器
将失效。你不能仅仅通过声称某个东西是
'静态
,它实际上必须是
'静态
nd
Chars
不是。你可以研究关于同一基本问题的另一个观点。@Locke看到修改后的问题我猜你是在返回对堆栈数据的引用,尝试将数据传递给解析器,使其接受字符串,这样它将接受数据