Rust 如何从不同的模块导入两个同名的类型?

Rust 如何从不同的模块导入两个同名的类型?,rust,Rust,结构提供了一些有用的采样代码,而结构提供了其他东西,如pmf()等等 我想两者都用;这可能吗 使用rand_distr::Poisson; 使用statrs::distribution::Poisson; vscode中存在错误: 错误:名称'Poisson'已定义多次 标签:此处以前导入的'Poisson'类型 注意:`Poisson`只能在此模块的类型命名空间中定义一次 标签:此处以前导入的'Poisson'类型 警告:未使用的导入:`rand_Disr::Poisson` 特别是货运报

结构提供了一些有用的采样代码,而结构提供了其他东西,如
pmf()
等等

我想两者都用;这可能吗

使用rand_distr::Poisson;
使用statrs::distribution::Poisson;
vscode中存在错误:

错误:名称'Poisson'已定义多次
标签:此处以前导入的'Poisson'类型
注意:`Poisson`只能在此模块的类型命名空间中定义一次
标签:此处以前导入的'Poisson'类型
警告:未使用的导入:`rand_Disr::Poisson`
特别是货运报告

error[E0252]: the name `Poisson` is defined multiple times
 --> src/main.rs:3:37
  |
1 | use rand_distr::{Poisson, Distribution};
  |                  ------- previous import of the type `Poisson` here
2 | use rand::distributions::Distribution;
3 | use statrs::distribution::{Discrete,Poisson};// as statrs_Poisson};
  |                                     ^^^^^^^ `Poisson` reimported here
代码中的
Poisson
的所有实例现在都被视为
statrs::distribution::Poisson
,即使我试图“完全命名它们”

let p_one = rand_distr::Poisson::new(rate_one_baseline).unwrap();
let v = p_one.sample(&mut rand::thread_rng());
失败,声称没有
sample
方法

解决方案 下面的答案是正确的。这个例子由于两个重叠的导入而变得复杂,所以我不得不重命名两个
use

//坏了:
使用随机分布:{Poisson,Distribution};
使用rand::distributions::Distribution//提供pmf()
使用statrs::distribution::{Discrete,Poisson};//实施分配
//好:
使用随机分布:{Poisson,Distribution};
使用rand::distributions::Distribution作为;
使用statrs::distribution::{Discrete,Poisson作为statrs\u Poisson};
工作示例
使用随机分布:{Poisson,Distribution};
使用rand::distributions::Distribution作为;
使用statrs::distribution::{Discrete,Poisson作为statrs\u Poisson};
fn main(){
设poi=rand_distr::Poisson::new(2.0).unwrap();
让poi_statrs=statrs_Poisson::new(2.0).unwrap();
//兰杜区
//是的:
设x1=poi.sample(&mut rand::thread_rng());
//没有:
//设_y1=poi.pmf(0);
println!(“poi1:{}”,x1);
//statrs
//是的:
设x2=poi_statrs.pmf(0);
println!(“poi2:{}”,x2);
//没有:
//让_y2=poi_statrs.sample(&mut rand::thread_rng());
}
使用不同的名称:

use rand_distr::Poisson;
use statrs::distribution::Poisson as statrs_Poisson;
然后,如果要使用第二个(从
statrs
导入),请使用
statrs\u Poisson
,而不是
Poisson
,如
statrs\u Poisson::pmf()
使用不同的名称:

use rand_distr::Poisson;
use statrs::distribution::Poisson as statrs_Poisson;

然后,当您想要使用第二个(从
statrs
导入)时,请使用
statrs\u Poisson
,而不是
Poisson
,如
statrs\u Poisson::pmf()

请您提出问题并粘贴您得到的准确和完整的错误-这将有助于我们了解问题所在,以便我们能够提供最好的帮助。有时,试图解释错误消息是很棘手的,而这实际上是错误消息的另一个重要部分。请使用直接运行编译器的消息,而不是IDE生成的消息,IDE可能会试图为您解释错误。请回答您的问题并粘贴您得到的确切和完整的错误-这将有助于我们了解问题所在,以便我们能够提供最好的帮助。有时,试图解释错误消息是很棘手的,而这实际上是错误消息的另一个重要部分。请使用直接运行编译器的消息,而不是IDE生成的消息,IDE可能试图为您解释错误。按建议工作。对于那些严格遵循sample/pmf问题的人,还必须
使用rand::distributions::Distribution as u;使用rand::distributions::Distribution as u;