Rust 带锈的单元测试

Rust 带锈的单元测试,rust,Rust,我创建了一个具有目录结构的小型数学库 mathslib->src->lib.rs->转换/stats/trig/base 所有模块都声明为pub,函数也声明为pub 我只为一个函数编写了下面的测试,但是当我运行货物测试时,我遇到了一个无法解决该函数的错误(E0425) 从我在文档中看到的情况来看,这应该没问题,但显然不是 所讨论的函数如下所示 pub fn kelvin_to_celcius(k: f32) -> (bool, f32) { if k < 0f32 {

我创建了一个具有目录结构的小型数学库

mathslib->
src
->
lib.rs
->转换/stats/trig/base

所有模块都声明为
pub
,函数也声明为
pub

我只为一个函数编写了下面的测试,但是当我运行
货物测试
时,我遇到了一个无法解决该函数的错误(E0425)

从我在文档中看到的情况来看,这应该没问题,但显然不是

所讨论的函数如下所示

pub fn kelvin_to_celcius(k: f32) -> (bool, f32)
{
    if k < 0f32
    {
        return (false, k);
    }
    else
    {
        return (true, k - 273.15);
    }
}
pub fn kelvin_to_celcius(k:f32)->(布尔,f32)
{
如果k<0f32
{
返回(假,k);
}
其他的
{
返回(正确,k-273.15);
}
}

您的函数不在范围内

假设您的模块布局如下所示:

pub fn kelvin_to_celcius(k: f32) -> (bool, f32)
{
    if k < 0f32
    {
        return (false, k);
    }
    else
    {
        return (true, k - 273.15);
    }
}

#[cfg(test)]
mod TemperatureTests {
    ...
}
#[cfg(test)]
mod TemperatureTests { 
    use super::*; // <--- use everything declared in the parent module
    ...
}
pub fn kelvin_to_celcius(k:f32)->(布尔,f32)
{
如果k<0f32
{
返回(假,k);
}
其他的
{
返回(正确,k-273.15);
}
}
#[cfg(测试)]
mod温度测试{
...
}
然后,您需要将该功能纳入测试模块的范围。这样做的惯用方法如下:

pub fn kelvin_to_celcius(k: f32) -> (bool, f32)
{
    if k < 0f32
    {
        return (false, k);
    }
    else
    {
        return (true, k - 273.15);
    }
}

#[cfg(test)]
mod TemperatureTests {
    ...
}
#[cfg(test)]
mod TemperatureTests { 
    use super::*; // <--- use everything declared in the parent module
    ...
}
#[cfg(测试)]
mod TemperatureTests{

使用super::*;//
使用MathsLib::Conversions::Temperature;
温度
符号添加到模块的作用域中,但它不会在
温度
模块中添加任何符号。如果要这样做,您需要编写以下代码:

use MathsLib::Conversions::Temperature::*;

你能提供一个完整的例子,包括实际的错误信息吗?