首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在测试/test.rs文件中无法识别在src/main.rs中定义的类型

在测试/test.rs文件中无法识别在src/main.rs中定义的类型,这是因为测试文件和主文件是分开编译的,测试文件无法直接访问主文件中的私有类型和函数。为了解决这个问题,可以在主文件中使用pub关键字将需要在测试文件中使用的类型和函数标记为公共的,以便测试文件可以访问到它们。

另外,还可以使用模块的方式来组织代码,将需要在测试文件中使用的类型和函数放在一个公共的模块中,并在测试文件中引入该模块。这样测试文件就可以访问到主文件中定义的类型和函数了。

举例来说,假设在src/main.rs中定义了一个名为MyType的类型,我们想在测试文件中使用它。可以按照以下步骤进行操作:

  1. 在src/main.rs中将MyType标记为公共的,可以使用pub关键字:pub struct MyType { ... }
  2. 在src/main.rs中将需要在测试文件中使用的函数标记为公共的,同样使用pub关键字:pub fn my_function() { ... }
  3. 在测试文件test.rs中引入主文件中的模块:use crate::main::*;。这里的main是指src/main.rs文件所在的模块。
  4. 现在就可以在测试文件test.rs中使用主文件中定义的类型和函数了,例如:let my_type = MyType::new();

需要注意的是,测试文件和主文件需要在同一个包(crate)中,即它们应该在同一个目录下,并且在同一个包的根目录下有一个名为lib.rsmain.rs的文件作为入口文件。

推荐的腾讯云相关产品:腾讯云函数(云原生无服务器计算服务),详情请参考腾讯云函数产品介绍。腾讯云函数提供了无服务器的计算能力,可以方便地进行函数级别的测试和部署。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python接口测试一个用例文件调用另一个用例文件定义方法

简单说明 进行接口测试时,经常会遇到不同接口间传递参数情况,即一个接口某个参数需要取另一个接口返回值; 平常写脚本过程,我经常会在同一个py文件,把相关接口调用方法都写好,这样同一个文件能够很方便进行调用...; 后来随着功能增多,写其他py文件时,有时也会先调用某个相同接口来获取参数; 如果在每个py文件中都写一遍调用某个接口方法,会显得很啰嗦,也不好维护,并且以后万一提供数据那个接口发生变化...,需要调整很多地方; 所以,当我们一个用例py文件写好某个接口调用方法,后续如果在其他py文件也要用到这个接口返回值,则直接引用先前py文件定义接口调用方法即可。...): """创建活动-测试用例""" def setUp(self): ……………… 一些必要初始化工作,例如读取配置文件、调用其他方法等...id,这个id就是由test_A.py文件CreateActivity类下 push_file_download 方法生成; 所以这里要先调用push_file_download方法,对应第

2.8K40

Rust模块系统

当我们使用 cargo new 创建一个包时候会发现,Cargo 创建 Cargo.toml 文件并没有提到 src/main.rs,这是因为 Cargo 遵循一个约定: src...通过使用模块,我们可以将相关定义分组到一起,并指出他们为什么相关。 3.2 模块树 前面提到,src/main.rssrc/lib.rs 叫做 crate root。...front_of_house 模块移动到属于它自己文件 src/front_of_house.rs : 改变 crate 根文件 src/lib.rs 或 src/main.rs,通过声明 front_of_house...目录和一个包含 hosting 模块定义 src/front_of_house/hosting.rs 文件: pub fn add_to_waitlist() {} 【注】Rust 私有性规则不但应用于模块...如果我们一个结构体定义前面使用了 pub,这个结构体会变成公有的,但是这个结构体字段仍然是私有的。如果要将字段公有化,则还需要分别在字段前使用 pub 关键字。

43630

听GPT 讲Rust源代码--srctools(18)

:表示标记唯一标识符,用于标记树引用特定标记。它是公共(pub)结构体,但省略了其余定义,因此无法提供更多详细信息。 SyntaxContext(pub, ...)...rust-analyzerxtaskmain.rs文件定义了主要入口函数,负责处理命令行参数和调度任务。它启动并管理各个子任务,包括编译、运行测试、格式化代码等。...除了任务调度,main.rs文件还负责加载并执行各个子任务代码。每个子任务对应一个单独Rust源代码文件,如compile.rs、fmt.rs和test.rs等,这些文件实现了具体功能逻辑。...File: rust/src/tools/tier-check/src/main.rs Rust源代码rust/src/tools/tier-check/src/main.rs文件,主要实现了一个名为...其中最重要是"Tier"结构体,它用于表示Rust编译层级信息,包括层级名称、编译测试状态、编译测试说明等。 定义函数:文件定义了一些用于处理编译层级函数。

13210

听GPT 讲Rust源代码--srctools(19)

具体来说,main.rs文件首先会根据预定义Windows头文件定义和函数原型生成对应Rust代码表示。.../unicode/src/main.rsmain.rs文件作用是运行Unicode相关基准测试。...总体来说,main.rs文件作用是通过运行一系列性能测试来评估Rust语言对Unicode字符处理性能。它生成包含不同类型字符序列测试用例,并针对这些测试用例执行一系列字符串操作性能测试。... slice_get_unchecked 模块 main.rs 文件,首先导入了一些必要库和模块。然后,定义了一个测试函数 bench_slice_get_unchecked。...例如,这个 trait 定义了 dynamic_drop 方法,用于回收过程调用类型析构函数。 总之,tag_gc.rs 文件实现了 Miri 工具垃圾回收功能。

14810

听GPT 讲Rust源代码--srctools(40)

总结起来,rust/src/tools/jsondocck/src/main.rs文件Command结构体和CommandKind枚举定义了工具执行命令及其类型,而main函数则定义了工具入口逻辑...此外,lib.rs文件还包含了一些测试用例,用于验证解码函数正确性和稳定性。...File: rust/src/tools/x/src/main.rs Rust源代码,rust/src/tools/x/src/main.rs文件作用是定义x工具入口函数。...另外,FileHash 枚举类型表示文件哈希类型,它有以下几个变体: Sha256:SHA-256哈希 Custom:自定义哈希 这些枚举类型用于描述文件哈希值类型,以及清单文件相关信息。...File: rust/src/tools/build-manifest/src/main.rs Rust源代码,rust/src/tools/build-manifest/src/main.rs这个文件作用是生成构建清单

15810

听GPT 讲Rust Cargo源代码(2)

File: cargo/crates/mdman/src/main.rs Rust Cargo源代码,cargo/crates/mdman/src/main.rs这个文件作用是实现了一个用于管理...File: cargo/benches/capture/src/main.rs cargo/benches/capture/src/main.rs 是 Rust Cargo 一个文件,其作用是实现对测试功能捕获方法进行基准测试... Cargo 项目中,基准测试是一种用于衡量代码性能和吞吐量特殊类型测试。在这个文件,我们可以定义一个或多个基准测试,并使用捕获方法来捕获和测量这些基准测试性能。...这些报告可以帮助我们更好地理解基准测试性能结果。 综上所述,cargo/benches/capture/src/main.rs 作用是定义和实现捕获方法来进行基准测试。...File: cargo/src/bin/cargo/main.rs Rust构建工具Cargo源代码,cargo/src/bin/cargo/main.rs文件是整个Cargo命令行工具入口点

8410

听GPT 讲Rust源代码--srcbootstrap

Unknown:表示未知C编译器。当无法确定使用C编译器时,将使用该值。 cc_detect.rs文件,通过一系列逻辑和算法来检测C编译器。...定义常量: main.rs定义了一些用于配置编译器常量,例如文件名、Rustc命令行参数等。 定义子命令: 通过使用clap库,main.rs定义了一些子命令,这些子命令用于控制编译器不同行为。...由于无法直接查看你引用具体Rust源代码,因此无法给出准确回答。但是根据命名规范来看,name可能是某个库或工具名称,Src可能是源码库相关配置或操作结构。...Target包含了目标的类型(如二进制文件还是库文件)、源码文件路径、编译选项等信息。 这些结构体metadata.rs文件定义,用于表示Rust编译器在编译、构建和输出过程相关信息。...它负责分布式测试运行测试,并处理相关网络通信。 Rustdoc: 这个结构体定义了文档生成工具。它负责将Rust代码文档注释提取出来,并生成可阅读文档页面。

41270

【Rust学习】01_入门

env:Path Linux 和 macOS ,使用:$ echo $PATH如果这一切都是正确,并且 Rust 仍然无法正常工作,那么您可以提交issue或者到Rust 社区寻求帮助。...运行 rustup doc 以浏览器打开本地文档。 每当标准库提供类型或函数时,您不确定它作用或如何使用它,请使用应用程序编程接口 (API) 文档来了解!Hello, World!...您将看到 Cargo 为我们生成了两个文件和一个目录:一个 Cargo.toml 文件和一个包含 main.rs 文件 src 目录。...到目前为止,我们项目和 Cargo 生成项目之间别在于,Cargo 将代码放在了 src 目录下,而我们顶部目录下有一个 Cargo.toml 配置文件。...如果要对代码运行时间进行基准测试,请确保使用目标/版本可执行文件运行 cargo build --release 和基准测试

7700

Rust中使用模块组织代码

今天,通过 Github 或中心化代码分发网站,我们可以轻松一个软件工程同时引入世界各地开发者开发代码,我们与同事同一个工程目录下并行开发不同程序功能,或者不拷贝代码前提下将一个工程代码另一个工程复用...默认情况下,src/main.rs 是与 Package 同名二进制 Crate 入口文件,因此我们可以说我们现在有一个 my-project Package 以及一个二进制 my-project...如果我们 src 目录同时包含 main.rs 和 lib.rs,那么我们将在这个 Package 同时得到一个二进制 Crate 和一个库 Crate,这在开发一些基础库时非常有用,例如你使用...("{}", mod1::CrateEnum::Item as u32); } ---- 结构体可见性 结构体字段和方法默认是私有的,通过加上 pub 修饰语可使得结构体字段和方法可以定义结构体模块之外被访问...("{}", mod1::MESSAGE); } 将模块映射到文件夹 当一个文件包含 mod.rs 文件时,该文件夹可以被作为一个模块: src ├── main.rs └── mod1 └

54510

Rust代码组织:packagecratemod

main2.rs src里,再加2个文件lib.rs及main2.rs,内容如下: lib.rs pub fn foo(){ println!...从最后2行输出来看,运行main.rs方法,即:main2.rsmain函数,并未识别成入口,继续折腾,src下创建目录bin,然后把main.rs以及main2.rs都移动到bin目录...a,然后里面还嵌套了模块b 然后main方法里,尝试调用a模块方法,以及其子模块b方法 编译一下,会发现各种报错: ---------------------------------------...可以先记一条规则 :如果模块x与main方法一个.rs文件,且x处于最外层,main方法可以调用x方法。...(); crate::a::b::foo_b(); 是等效,就好比,文件d:\a\b\1.txt,如果我们当前已经d:\根目录下, a\b\1.txt d:\a\b\1.txt .

1.5K10

Rust错误处理

rust,触发不可恢复错误使用panic即可。 触发panic可以分为被动触发和主动调用两种方式。 被动触发 下面是一个被动触发panic例子。...=1` environment variable to display a backtrace 它告诉我们,main 函数所在线程崩溃了,发生代码位置是 src/main.rs 第 8 行第 5...Result枚举类型 它被定义为如下: enum Result { Ok(T), Err(E), } 泛型参数 T 代表成功时存入正确值类型,存放方式是 Ok(T),E..., error) }, }; } 代码很清晰,对打开文件 Result 类型进行匹配取值,如果是成功,则将 Ok(file) 存放文件句柄 file 赋值给...标准库定义 From 特征,该特征有一个方法 from,用于把一个类型转成另外一个类型,? 可以自动调用该方法,然后进行隐式类型转换。

66020

编写rust测试程序

Rust ,单元测试惯例是将测试代码模块跟待测试正常代码放入同一个文件,例如 src/lib.rs 文件中有如下代码: pub fn add_two(a: i32) -> i32 {...例如: cargo test --test integration_test 二进制包集成测试 目前来说,Rust 只支持对 lib 类型包进行集成测试,对于二进制包例如 src/main.rs 是无能为力...原因在于,我们无法在其它包中使用 use 引入二进制包,而只有 lib 类型包才能被引入,例如 src/lib.rs。...这就是为何我们需要将代码逻辑从 src/main.rs 剥离出去放入 lib 包,例如很多 Rust 项目中都同时有 src/main.rssrc/lib.rs ,前者只保留代码主体脉络部分...这样,我们就可以对 lib 包具体实现进行集成测试,由于 main.rs 主体脉络足够简单,当集成测试通过时,意味着 main.rs 相应调用代码也将正常运行。

1.2K20

Rust学习笔记之包、Crate和模块

$ ls my-project/src main.rs 当我们输入了这条命令,Cargo 会给我们包创建一个 Cargo.toml 文件。...查看 Cargo.toml 内容,会发现并没有提到 src/main.rs,因为 Cargo 遵循一个约定: ❝ src/main.rs 就是一个「与包同名」二进制 cratebinary crate...这个树还展示了一些模块互为「兄弟」 ,即它们被定义同一模块内。 ---- 路径用于引用模块树 Rust 使用路径方式模块树中找到一个项位置,就像在文件系统使用路径一样。...如果 Breakfast 没有这样函数,我们将无法 eat_at_restaurant 创建 Breakfast 实例,因为我们不能在 eat_at_restaurant 设置私有字段 seasonal_fruit...在这个例子,crate 根文件src/lib.rs,这也同样适用于以 src/main.rs 为 crate 根文件二进制 crate 项。

91010
领券