Rust 标准基准测试模块`未解析的导入`crate::some_module`

问题描述

我有一个二进制项目,里面有很多内部模块来组织功能

我正在努力让 Criterion 为基准工作。

错误

error[E0432]: unresolved import `crate::some_module`
 --> benches/benchmarks.rs:3:5
  |
3 | use crate::some_module;
  |     ^^^^^^^^^^^^^^^^^^ no `some_module` in the root

error: aborting due to prevIoUs error

最小示例.ziphttps://drive.google.com/file/d/1TASKI9_ODJniamHp3RBRscoflabPT-kP/view?usp=sharing

我当前的最小示例如下:

.
├── Cargo.lock
├── Cargo.toml
├── src/
│   ├── main.rs
│   └── some_module/
│       ├── mod.rs
│       └── some_module_file.rs
└── benches/
    └── benchmarks.rs

Cargo.toml

[package]
name = "criterion-bin-test"
version = "0.1.0"
authors = ["Jonathan <jonthanwoollettlight@gmail.com>"]
edition = "2018"

# See more keys and their deFinitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[dev-dependencies]
criterion = "0.3"

[[bench]]
name = "benchmarks"
harness = false

main.rs

mod some_module;

fn main() {
    println!("Hello,world!");

    println!("{}",some_module::some_mod_file::two());
}

mod.rs

pub mod some_mod_file;

some_module_file

pub fn two() -> i32 {
    2
}

benchmarks.rs

use criterion::{black_Box,criterion_group,criterion_main,Criterion};

use crate::some_module;

fn fibonacci(n: u64) -> u64 {
    match n {
        0 => 1,1 => 1,n => fibonacci(n-1) + fibonacci(n-2),}
}

fn criterion_benchmark(c: &mut Criterion) {
    c.bench_function("fib 20",|b| b.iter(|| fibonacci(black_Box(20))));
}

criterion_group!(benches,criterion_benchmark);
criterion_main!(benches);

错误出现在 use crate::some_module 上,我无法弄清楚如何将 Criterion 基准应用于内部模块。非常感谢这里的任何帮助。

我当前项目中的测试处理为:

.
├── Cargo.lock
├── Cargo.toml
├── src/
|   ├── main.rs
.   ├── tests.rs
    . some_module/
        ├── mod.rs
        ├── tests.rs
        .

允许 use crate::some_module

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)