These are the contents of my src/lib.rs
file:
pub fn foo() {}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
foo();
}
}
When I run cargo test
, I get the following error:
error[E0425]: cannot find function `foo` in this scope
--> src/lib.rs:7:9
|
7 | foo();
| ^^^ not found in this scope
How do I call foo
from inside the test
module?
You could use super::
to refer to the parent module:
fn it_works() {
super::foo();
}
In Rust 2015, you can use ::
to refer to the root module of the crate:
fn it_works() {
::foo();
}
In Rust 2018, you can use crate::
to refer to the root module of the crate:
fn it_works() {
crate::foo();
}
Or, as foo
may be used repeatedly, you could use
it in the module:
mod tests {
use foo; // <-- import the `foo` from the root module
// or
use super::foo; // <-- import the `foo` from the parent module
fn it_works() {
foo();
}
}
For test modules, it's also common to import everything from the parent module:
mod tests {
use super::*; // <-- import everything from the parent module
fn it_works() {
foo();
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With