Rust 如何从阵列输入数据2<;f64>;到树上?

Rust 如何从阵列输入数据2<;f64>;到树上?,rust,kdtree,Rust,Kdtree,我有一个Ndaray阵列中的点云2,它是3x500。 我想使用KdTree板条箱从这些点制作kd树。 KdTree文档中有以下示例: 让尺寸=2; 让mut-kdtree=kdtree::new(维度); 但当我尝试时,我得到: 无法推断类型参数'A的类型` 考虑给予“树”显式的类型kdTrut::kdTrut::kdTre',其中指定了类型参数“a” 我不知道A、t和U应该是什么 要添加我尝试使用的点,请执行以下操作: pub-fn-add(&mut-self,点:U,数据:T)->结果

我有一个Ndaray阵列中的点云2,它是3x500。 我想使用KdTree板条箱从这些点制作kd树。

  • KdTree文档中有以下示例:
  • 让尺寸=2;
    让mut-kdtree=kdtree::new(维度);
    
    但当我尝试时,我得到:

    无法推断类型参数'A的类型`
    考虑给予“树”显式的类型kdTrut::kdTrut::kdTre',其中指定了类型参数“a”
    
    我不知道A、t和U应该是什么

  • 要添加我尝试使用的点,请执行以下操作:
  • pub-fn-add(&mut-self,点:U,数据:T)->结果
    

    但我不知道数据应该是什么。

    这是因为您只想运行以下命令:

    让尺寸=2;
    让mut kdtree=kdtree::new(维度);//kdtree类型是kdtree
    
    而不是:

    设a:([f64;2],usize)=([0f64,0f64],0);
    设b:([f64;2],usize)=([1f64,1f64],1);
    设c:([f64;2],usize)=([2f64,2f64],2);
    设d:([f64;2],usize)=([3f64,3f64],3);
    设尺寸=2;
    让mut kdtree=kdtree::new(维度);//kdTree类型是kdTree
    kdtree.add(&a.0,a.1).unwrap();
    kdtree.add(&b.0,b.1).unwrap();
    kdtree.add(&c.0,c.1).unwrap();
    添加(&d.0,d.1).unwrap();
    
    您可以将顶部代码更改为:

    让尺寸=2;
    //我们自己提供型号
    让mut-kdtree:kdtree=kdtree::new(维度);
    
    现在,这种情况发生在Rust如何在编译时推断

    编译器通常可以根据值以及如何使用它来推断我们想要使用的类型

    在第二段代码中,Rust能够通过查看我们的
    add
    方法来找出我们想要的
    kdtree
    类型,但是在第一种情况下没有发生这种情况,因为没有提供额外的信息

    第三段代码有效,因为我们显式地键入了
    kdtree
    的类型

    但我不知道数据应该是什么


    这里的
    数据:T
    是一个,可以是任何东西。

    这是因为您只想运行以下命令:

    让尺寸=2;
    让mut kdtree=kdtree::new(维度);//kdtree类型是kdtree
    
    而不是:

    设a:([f64;2],usize)=([0f64,0f64],0);
    设b:([f64;2],usize)=([1f64,1f64],1);
    设c:([f64;2],usize)=([2f64,2f64],2);
    设d:([f64;2],usize)=([3f64,3f64],3);
    设尺寸=2;
    让mut kdtree=kdtree::new(维度);//kdTree类型是kdTree
    kdtree.add(&a.0,a.1).unwrap();
    kdtree.add(&b.0,b.1).unwrap();
    kdtree.add(&c.0,c.1).unwrap();
    添加(&d.0,d.1).unwrap();
    
    您可以将顶部代码更改为:

    让尺寸=2;
    //我们自己提供型号
    让mut-kdtree:kdtree=kdtree::new(维度);
    
    现在,这种情况发生在Rust如何在编译时推断

    编译器通常可以根据值以及如何使用它来推断我们想要使用的类型

    在第二段代码中,Rust能够通过查看我们的
    add
    方法来找出我们想要的
    kdtree
    类型,但是在第一种情况下没有发生这种情况,因为没有提供额外的信息

    第三段代码有效,因为我们显式地键入了
    kdtree
    的类型

    但我不知道数据应该是什么

    这里的
    data:T
    是一个变量,可以是任何东西