相关疑难解决方法(0)

带有库和二进制文件的Rust包?

我想制作一个包含可重用库(实现大部分程序)的Rust包,以及使用它的可执行文件.

假设我没有混淆Rust模块系统中的任何语义,我的Cargo.toml文件应该是什么样的?

rust rust-cargo

132
推荐指数
4
解决办法
4万
查看次数

我可以只为集成测试和/或基准测试公开对象吗?

正如The Book所建议的那样,我已将板条箱中的集成测试移动到一个tests目录中。但是,其中一些测试使用了我不想导出到 crate 之外的函数,而且我无法再在集成测试文件夹中使用它们。我也将它们用于非测试目的,因此它们也需要在测试之外进行编译。我尝试使用 的变体pub(restricted),但无法使其工作。理想情况下,我想要像pub(tests).

目录树(相关位):

my_crate
|- src
   |- parser.rs
|- tests
   |- parsing.rs
|- benches
   |- parsing.rs
Run Code Online (Sandbox Code Playgroud)

测试/解析.rs:

extern crate my_crate;

use my_crate::parser::foo;

#[test]
fn temp() {
    foo();
}
Run Code Online (Sandbox Code Playgroud)

长凳/解析.rs:

#![feature(test)]
extern crate test;
extern crate my_crate;

use test::Bencher;
use my_crate::parser::foo;

#[bench]
fn temp(b: &mut Bencher) {
    b.iter(|| { foo(); });
}
Run Code Online (Sandbox Code Playgroud)

我目前的解决方法是pub在文档 ( #[doc(hidden)])中使相关对象保持可见和不可见,但这并没有传达正确的意图。我可以出于集成测试/基准测试的目的公开对象吗?

integration-testing module rust rust-cargo

6
推荐指数
1
解决办法
1305
查看次数

为集成测试和基准测试提供共享实用程序功能的惯用方法是什么?

我有Rust项目,包括集成测试(在/testsdir中)和基准测试(在/benchesdir中).在测试和长凳中我需要一些实用功能,但它们与我的箱子本身无关,所以我不能把它们放在/utils目录中.

处理这种情况的惯用方法是什么?

testing benchmarking rust rust-cargo

3
推荐指数
2
解决办法
884
查看次数

无法在集成测试中导入模块

我正在尝试在Rust中配置一个示例项目.

我的结构是:

  • src/potter.rs
  • tests/tests.rs

和我的 Cargo.toml

[package]
name = "potter"
version = "0.1.0"
authors = ["my name"]
[dependencies]
Run Code Online (Sandbox Code Playgroud)

我的potter.rs包含:

pub mod potter {
    pub struct Potter {

    }

    impl Potter  {
        pub fn new() -> Potter {
         return Potter {};
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我的tests.rs包含:

use potter::Potter;

    #[test]
    fn it_works() {

        let pot = potter::Potter::new();
        assert_eq!(2 + 2, 4);
    }
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

error[E0432]: unresolved import `potter`
 --> tests/tests.rs:1:5
  |
1 | use potter::Potter;
  |     ^^^^^^ Maybe a missing …
Run Code Online (Sandbox Code Playgroud)

rust

3
推荐指数
1
解决办法
1988
查看次数

如何从`src`目录之外的目录导入模块?

我在学习如何访问模块时陷入困境。我正在尝试插入除 之外的文件srcsrc。它不起作用并且给了我一个错误。这是我的项目树。

$ Project1
.
|-- src
|       |-- main.rs
|   |--FolderinSrcFolder 
|       |--folderinsrcmodule.rs    
|
|--anothersrc
|   |--mod.rs
|
|-- rootmodule.rs
|-- Cargo.toml
|-- Cargo.lock
Run Code Online (Sandbox Code Playgroud)

我怎样才能访问anothersrc/mod.rs src/main.rs?我如何rootmodule.rs访问src/main.rs

我已经阅读了 Rust 文档。

module rust rust-cargo

0
推荐指数
1
解决办法
2528
查看次数