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;因为函数是在特定的trait中定义的。按照建议工作。对于那些严格遵循sample/pmf问题的人,还必须使用rand::distributions::Distribution as u;因为函数是在该特定特性中定义的。