我在Rust代码中遇到了与生存期相关的编译错误.以下是导致错误的代码:
fn to_pointer_vec(ptrs: &[*const dyn ToString]) -> Vec<*const dyn ToString> {
let mut vec: Vec<*const dyn ToString> = Vec::new();
for &ptr in ptrs {
vec.push(ptr);
}
vec
}
错误消息如下:
--> src/table/merger.rs:78:9
|
73 | fn to_pointer_vec(ptrs: &[*const dyn ToString]) -> Vec<*const dyn ToString> {
| - let's call the lifetime of this reference `'1`
...
78 | vec
| ^^^ returning this value requires that `'1` must outlive `'static`
|
help: to declare that the trait object captures data from argument `ptrs`, you can add an explicit `'_` lifetime bound
|
73 | fn to_pointer_vec(ptrs: &[*const dyn ToString]) -> Vec<*const dyn ToString + '_> {
| ++++
我不明白为什么特征对象指针有生存期限制.