我如何告诉编译器一个生命周期必须长于另一个生命周期?
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct Tokens<'a> {
buffer: String,
list: Vec<Token<'a>>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Token<'a> {
term: &'a str,
}
yield 率
error: lifetime may not live long enough
--> src/pipeline/tokenizers/test.rs:6:5
|
3 | #[derive(Serialize, Deserialize, Debug)]
| ----------- lifetime `'de` defined here
4 | pub struct Tokens<'a> {
| -- lifetime `'a` defined here
5 | buffer: String,
6 | list: Vec<Token<'a>>,
| ^^^^ requires that `'de` must outlive `'a`
|
= help: consider adding the following bound: `'de: 'a`
在上面的代码中,token.Term:&;str将始终引用一段tokens.Buffer.我不确定该如何具体说明这种关系.我也不确定如何添加请求的绑定.
这会奏效吗?如果是这样的话,神奇的语法是什么?