我有一点代码,我正在与之斗争.这是一个小助手函数,应该向调用函数返回Vec<&str>
.不过,我似乎无法正确把握人生.
以下是代码片段:
fn take_symbol<'a>(ch: &'a str, current: &'a mut String) -> &'a mut TokenList<'a> {
let out = TokenList::<'a>::new();
out.push(current.as_str());
out.push(ch);
*current = String::new();
&mut out
}
编译器告诉我:error: 'out' does not live long enough
,引用必须在'a
的生存期内有效,但在我看来,它似乎是为'a
定义的.
我还try 将其改为:
let out = &mut TokenList::<'a>::new();
这不会改变任何错误消息.或者:
let out = &'a mut TokenList::<'a>::new();
编译器一点都不喜欢.
我如何定义out
人的一生是'a
人?
有关更多详细信息,以下是我对TokenList的定义:
pub type Token<'a> = &'a str;
pub type TokenList<'a> = Vec<Token<'a>>;