标签: rust-cargo

是否可以从私有远程git获取Cargo fetch依赖项?

我在一个ssh友好的实验室机器上有一个帐户,我存储了很多私人项目,所以我可以从多台计算机访问它们(它允许我只使用我的几个私人Github存储库来处理多个人将要处理的事情).

Rust似乎很有能力通过使用像这样的东西来获取本地和公共数据

[dependencies.foo]
git = "https://github.com/bar/foo"

[dependencies.baz]
path = "/path/to/baz"
Run Code Online (Sandbox Code Playgroud)

但我还没有找到一种方法让它使用ssh git工作(例如git = "git@github.com:bar/foo",或者在我的情况下labmachine:bar/foo).我有无密码/ keygen ssh设置,如果这有帮助.

如果不存在,这不是什么大问题.目前我只是手动克隆存储库和使用path = ../foo,只要我保持我的目录结构相同,并记住pull在我的所有机器上手动所有依赖项.但是,如果我可以设置Cargo来做这件事会让事情变得容易多了,特别是如果我只需要在我的笔记本电脑上快速演示一些东西.

rust rust-cargo

13
推荐指数
2
解决办法
2533
查看次数

如何访问通过`cargo install`安装的Rust/Cargo项目中包含的资产?

我有一个包含一些相关资产(Lua脚本)的项目,我需要在运行时找到它.这可能意味着两件事:

  • 在开发期间(例如cargo run),我想找到它相对于源
  • 通过via安装时cargo install,资产也应该安装在某个地方,并且已安装的可执行文件版本应该找到已安装的资产.

我知道使用类似的方法include_str!()将文本文件编译成二进制文件,但在这种情况下我不想这样做.

据我所知,cargo install 目前没有任何支持安装除可执行文件之外的任何东西,这是第一个问题,尽管我不介意有一个包装器安装脚本来帮助.

rust rust-cargo

13
推荐指数
1
解决办法
949
查看次数

如何递归测试目录下的所有包装箱?

有些项目包括多个包,这使得在每个包中手动运行所有测试变得麻烦.

是否有一种方便的递归运行方式cargo test

testing rust rust-cargo

13
推荐指数
2
解决办法
424
查看次数

如何在 Cargo 构建脚本中使用外部板条箱?

我有这个文件结构

\n\n
Test\n\xe2\x94\x82   .gitignore\n\xe2\x94\x82   build.rs\n\xe2\x94\x82   Cargo.toml\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80.vscode\n\xe2\x94\x82       tasks.json\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80src\n\xe2\x94\x82       main.rs\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有这个 Cargo.toml

\n\n
[package]\nname = "test"\nversion = "0.1.0"\nauthors = ["xtricman"]\nedition = "2018"\n\n# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html\n\n[dependencies]\nregex = "*"\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有这个 build.rs

\n\n
fn main() {\n    let mt = regex::Regex::new(r"_[1-9][0-9]+.rs|_0.rs\\z").unwrap().find("gdf_980.rs");\n    let mts = if mt.is_some() {\n        println!("{}", mt.unwrap().as_str());\n    } else {\n        println!("None");\n    };\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想在构建脚本中使用正则表达式板条箱,但出现编译错误

\n\n
[package]\nname = "test"\nversion = "0.1.0"\nauthors = ["xtricman"]\nedition = "2018"\n\n# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html\n\n[dependencies]\nregex = "*"\n
Run Code Online (Sandbox Code Playgroud)\n\n

Cargo 只支持 …

rust rust-cargo

13
推荐指数
1
解决办法
4246
查看次数

我可以根据平台设置 Cargo 项目的默认功能吗?

default 是否可以使功能列表依赖于您的平台Cargo.toml?我想使用功能来选择依赖于平台的依赖项。

我会想象这样的事情:

[features]
# on Unix
default = ["feature-a"]
# not on Unix
default = ["feature-b"]

feature-a = ["dep-a"]
feature-b = ["dep-b"]

[dependencies]
dep-a = { version = "*", optional = true }
dep-b = { version = "*", optional = true }
Run Code Online (Sandbox Code Playgroud)

我试过了:

  • 使用[target.'cfg(unix)'.features]不起作用,它被忽略:

    [target.'cfg(unix)'.features]
    default = ["feature-a"]
    # -- snip --
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用build.rs脚本根据cfg条件启用功能只能部分起作用。依赖关系解析是在运行之前完成的build.rs,因此这不会导入其中启用的功能的可选依赖关系。此示例不会导入dep-a

    fn main() {
        #[cfg(unix)]
        println!("cargo:rustc-cfg=feature=\"feature-a\"");
        // -- snip --
    }
    
    Run Code Online (Sandbox Code Playgroud)

这可以在 Rust …

rust rust-cargo

13
推荐指数
1
解决办法
3833
查看次数

如何为新 Cargo 项目设置默认作者?

使用 创建新项目时cargo new,我希望 Cargo.toml 文件自动包含预定义authors字段。

Rust书中说

接下来的四行设置 Cargo 编译程序所需的配置信息:名称、版本、编写者以及要使用的 Rust 版本。Cargo 从您的环境中获取您的姓名和电子邮件信息,因此如果该信息不正确,请立即修复信息,然后保存文件。

实在是太模糊了,所以我就去查了一下。首先,我尝试将CARGO_NAME和添加CARGO_EMAIL到我的环境变量中。没用。

然后我尝试在配置文件的字段中添加变量name和,并得知它已被弃用。email[cargo-new].cargo/config.toml

还有其他方法可以做到这一点吗?我做错什么了吗?

[package]
name = "hello_world"
version = "0.1.0"
edition = "2018"

authors = ["foo <bar@gmail.com>"] # Add this line automatically

[dependencies]
Run Code Online (Sandbox Code Playgroud)

我在 Arch Linux 上使用工具链rustupnightly

rust rust-cargo rustup

13
推荐指数
1
解决办法
5507
查看次数

我如何获得货物测试承保?

当我想测试 C++ 覆盖率时,我可以使用 构建我的程序-fprofile-arcs -ftest-coverage,运行所有测试,然后运行gcov以获得覆盖率。

然而,当谈到 Rust 时,我完全迷失了。我想要做的是运行以下测试(在我的 Mac 上),并覆盖路径中的所有 Rust 代码components/raftstore

cargo test --package tests --test failpoints cases::test_normal
cargo test --package tests --test failpoints cases::test_bootstrap
cargo test --package tests --test failpoints cases::test_compact_log
Run Code Online (Sandbox Code Playgroud)

这篇文章来看,它说先运行cargo test --no-run,然后运行kcov。然而,当我真正这样做时,kcov 会永远阻塞。

然后我找到了一个叫“谁提供”的东西 。但是,当我像我所做的那样运行时,我收到错误cargo kcov--testcargo kcov --test failpoints cases::test_normalcargo test

error: cargo subcommand failure
note: cargo test exited with code exit status: 101
error: no test target named `failpoints` …
Run Code Online (Sandbox Code Playgroud)

unit-testing code-coverage rust rust-cargo kcov

13
推荐指数
2
解决办法
6760
查看次数

如何在不关闭程序的情况下捕获恐慌

我需要在程序运行时出现恐慌并且不关闭程序。例如,如何在这里捕获恐慌并打印 \xe2\x80\x9cHello, World\xe2\x80\x9d?:

\n
fn main() {\n    let v = vec![1, 2, 3];\n\n    v[99];\n    println!("Hello, World");\n}\n
Run Code Online (Sandbox Code Playgroud)\n

rust rust-cargo

13
推荐指数
2
解决办法
8571
查看次数

如何通过Cargo生成文档时包含私有模块?

我目前正在与Rust和Cargo合作开展一个项目.它运行良好,但我遇到一个小问题:对于代码重用,我的大多数项目都在lib crate中.在这个箱子里,很多东西都是私人的.所以当我这样做的时候cargo doc,我只有公共的,出口的东西的文件......这实际上很棒,因为很容易看出什么是出口的,什么不是.

但我不得不承认:我错过了整个项目的完整文档,用于开发目的......

rust rust-cargo

12
推荐指数
4
解决办法
1414
查看次数

有没有办法在gdb或lldb中直接运行由Cargo构建的程序?

有没有办法立即运行Cargo构建的程序gdbcargo有很多功能,可以运行程序,所以看起来似乎有道理.

预期的命令就像是cargo debug.

debugging gdb rust lldb rust-cargo

12
推荐指数
1
解决办法
287
查看次数

标签 统计

rust ×10

rust-cargo ×10

code-coverage ×1

debugging ×1

gdb ×1

kcov ×1

lldb ×1

rustup ×1

testing ×1

unit-testing ×1