Rust 如何将项从函数参数推送到向量(从函数参数推送到向量)-不同的生存期问题

Rust 如何将项从函数参数推送到向量(从函数参数推送到向量)-不同的生存期问题,rust,lifetime,Rust,Lifetime,我需要把一个项目推到一个向量上。但项和向量都是函数参数 要复制的简单代码:- 结构点{ x:i32, y:i32 } fn main(){ 让点:Vec=Vec!(); 设起点=点{x:1,y:2}; fn填充点(点:&mut Vec,点:&F){ //一些条件和循环 点。推(点); } 填充点(多点和起点); } 错误:- | 13 | fn fill_points<F>(points: &mut Vec<&F>, point: &

我需要把一个项目推到一个向量上。但项和向量都是函数参数

要复制的简单代码:-

结构点{
x:i32,
y:i32
}
fn main(){
让点:Vec=Vec!();
设起点=点{x:1,y:2};
fn填充点(点:&mut Vec,点:&F){
//一些条件和循环
点。推(点);
}
填充点(多点和起点);
}
错误:-

   |
13 |     fn fill_points<F>(points: &mut Vec<&F>, point: &F ){
   |                                        --          -- these two types are declared with different lifetimes...
14 |         // Some conditions
15 |         points.push(point);
   |                     ^^^^^ ...but data from `point` flows into `points` here
|
13 | fn填充点(点:&mut Vec,点:&F){
|--这两种类型的声明具有不同的生存期。。。
14 |//某些条件
15 |点。推(点);
|^^^^^……但来自“点”的数据在此处流入“点”

操场URL:-

您需要添加一个生存期参数:

struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let start_point = Point { x: 1, y: 2 };
    let mut points: Vec<&Point> = vec![];

    fn fill_points<'a, F>(points: &mut Vec<&'a F>, point: &'a F) {
        // Some conditions
        points.push(point);
    }

    fill_points(&mut points, &start_point);
}
结构点{
x:i32,
y:i32,
}
fn main(){
设起点=点{x:1,y:2};
让多个点:Vec=Vec![];
fn填充点,点:&'a F){
//一些条件
点。推(点);
}
填充点(多点和起点);
}

(基于@Stargateur的简化代码)

您需要终生注释。谢谢@Stargateur@apatniv谢谢!问题似乎已经解决了。我想您可以关闭它,甚至可以自己发布答案,@rameshkitsirihettiarachchi:)