I have a binary project with a lot of internal modules to organise functionality.
I'm trying to get Criterion working for benchmarks.
The error:
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
Minimal example .zip: https://drive.google.com/file/d/1TASKI9_ODJniamHp3RBRscoflabPT-kP/view?usp=sharing
My current minimal example looks like:
.
├── 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);
The error arises on use crate::some_module, and I cannot figure out how to apply Criterion benchmarks to internal module.
Tests in my current project are handled as:
.
├── Cargo.lock
├── Cargo.toml
├── src/
|   ├── main.rs
.   ├── tests.rs
    . some_module/
        ├── mod.rs
        ├── tests.rs
        .
Which allows for use crate::some_module.
 
     
    