具有多个二进制文件的无效代码警告?

荒野

我注意到,为了使一段代码不被分类为无效代码,必须从所有二进制文件中都可以访问该代码。例子:

Cargo.toml:
[[bin]]
name = "main_one"
path = "src/main_one.rs"
[[bin]]
name = "main_two"
path = "src/main_two.rs"

main_one.rs:
mod utils;
fn main() {
    print!("Hello, ");
    utils::function_in_question();
}


main_two.rs:
mod utils;
fn main() {
    print!("Hello, ");
    // utils::function_in_question();
}


utils.rs:
pub fn function_in_question() {
    println!("world!");
}

function_in_question即使从可以访问,它也会报告为无效代码main_one.rs取消注释可解决此问题。如果仅存在于中,则也可以使用main_two.rs

尽管此行为背后有一定的道理,但是让VSCode一直抱怨这一点实在令人遗憾,而且Clippy的输出也被这些警告所淹没。是否有解决方案至少可以在全球范围内抑制死代码?应避免使用货物工作区对整个项目进行重组。

特伦特

发生这种情况是因为您不只编译utils.rs一次,而是编译了两次,首先作为的一部分,main_one然后作为的一部分main_two

我熟悉的模式是将通用项放入lib.rs,默认情况下将其编译成与您的项目同名的库箱。然后,不要使用来将它们包含在每个二进制文件中mod,只需使用库箱即可。

# Cargo.toml
[package]
name = "my_crate" # <- will be the name of the library crate
version = "0.1.0"

[dependencies]

# No need for [[bin]] sections if you put the binary sources in src/bin
// src/lib.rs
pub fn function_in_question() {
    println!("world!");
}
// src/bin/main_one.rs
fn main() {
    print!("Hello, ");
    my_crate::function_in_question();
}
// src/bin/main_two.rs
fn main() {
    print!("Hello, ");
    // my_crate::function_in_question();
}

库箱仅被编译一次,并且由于function_in_question是箱的公共API的一部分,因此您不会看到任何无效代码警告。

请注意,如果将二进制文件放入[[bin]]Cargo.toml不需要src/bin看到这个问题更多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有无效签名的无效二进制文件

来自分类Dev

从具有多个二进制文件的源文件创建 debian 包

来自分类Dev

具有强命名二进制文件的CefSharp

来自分类Dev

应用提交:无效的二进制文件-无效的签名

来自分类Dev

应用提交:无效的二进制文件-无效的签名

来自分类Dev

错误:对二进制==无效的操作数(具有“结构演示”和“结构演示”)

来自分类Dev

对二进制*无效的操作数(具有'int'和'int *')

来自分类Dev

机器语言,二进制代码和二进制文件之间的区别

来自分类Dev

ITMS 9000:您上传的二进制文件无效

来自分类Dev

C无效二进制文件中的错误消息

来自分类Dev

二进制文件被拒绝,因为无效的符号链接,有什么想法吗?

来自分类Dev

Bash:具有二进制范围的循环,保持控制值二进制

来自分类Dev

具有向量多个条件的C ++二进制搜索

来自分类Dev

在R中将具有多个级别的因子变量转换为二进制

来自分类Dev

在Python中将文件转换为二进制代码

来自分类Dev

从二进制文件获取源代码

来自分类Dev

让木马代码执行包装的二进制文件

来自分类Dev

从二进制文件获取代码转储

来自分类Dev

代码样式,无需修改二进制文件

来自分类Dev

签名二进制文件(不是代码签名)

来自分类Dev

压缩不包括二进制文件的源代码

来自分类Dev

预处理程序中的代码是否有条件输入二进制文件?

来自分类Dev

二进制文件如何“二进制”?

来自分类Dev

Python-读取具有偏移量和结构的二进制文件

来自分类Dev

从二进制文件安装Erlang和epmd具有循环依赖性

来自分类Dev

从二进制文件安装Erlang和epmd具有循环依赖性

来自分类Dev

如何在二进制文件中从具有偏移量的输入写入字节?

来自分类Dev

允许用户仅运行具有root权限/特权的特定二进制文件

来自分类Dev

如何在Linux Mint中安装具有二进制文件的程序?

Related 相关文章

  1. 1

    具有无效签名的无效二进制文件

  2. 2

    从具有多个二进制文件的源文件创建 debian 包

  3. 3

    具有强命名二进制文件的CefSharp

  4. 4

    应用提交:无效的二进制文件-无效的签名

  5. 5

    应用提交:无效的二进制文件-无效的签名

  6. 6

    错误:对二进制==无效的操作数(具有“结构演示”和“结构演示”)

  7. 7

    对二进制*无效的操作数(具有'int'和'int *')

  8. 8

    机器语言,二进制代码和二进制文件之间的区别

  9. 9

    ITMS 9000:您上传的二进制文件无效

  10. 10

    C无效二进制文件中的错误消息

  11. 11

    二进制文件被拒绝,因为无效的符号链接,有什么想法吗?

  12. 12

    Bash:具有二进制范围的循环,保持控制值二进制

  13. 13

    具有向量多个条件的C ++二进制搜索

  14. 14

    在R中将具有多个级别的因子变量转换为二进制

  15. 15

    在Python中将文件转换为二进制代码

  16. 16

    从二进制文件获取源代码

  17. 17

    让木马代码执行包装的二进制文件

  18. 18

    从二进制文件获取代码转储

  19. 19

    代码样式,无需修改二进制文件

  20. 20

    签名二进制文件(不是代码签名)

  21. 21

    压缩不包括二进制文件的源代码

  22. 22

    预处理程序中的代码是否有条件输入二进制文件?

  23. 23

    二进制文件如何“二进制”?

  24. 24

    Python-读取具有偏移量和结构的二进制文件

  25. 25

    从二进制文件安装Erlang和epmd具有循环依赖性

  26. 26

    从二进制文件安装Erlang和epmd具有循环依赖性

  27. 27

    如何在二进制文件中从具有偏移量的输入写入字节?

  28. 28

    允许用户仅运行具有root权限/特权的特定二进制文件

  29. 29

    如何在Linux Mint中安装具有二进制文件的程序?

热门标签

归档