如何在 Rust 中使用条件编译宏的示例

2024-06-22

我已经关注了相当多 https://doc.rust-lang.org/reference/attributes.html#conditional-compilation of 文档 https://doc.rust-lang.org/stable/rust-by-example/attribute/cfg.html并试图重用一个例子 https://doc.rust-lang.org/book/first-edition/conditional-compilation.html,但我无法让我的代码工作。

我的 Cargo.toml 看起来像这样:

[package]
name = "Blahblah"
version = "0.3.0"
authors = ["ergh <[email protected] /cdn-cgi/l/email-protection"]
[dependencies]

[[bin]]
name = "target"
path = "src/main.rs"

[features]
default=["mmap_enabled"]
no_mmap=[]
mmap_enabled=[]

我想根据我传递给的功能配置,使用与 mmap 不同的缓冲区源在本地测试我的代码cargo build命令。我的代码中有这个:

if cfg!(mmap_enabled) {
    println!("mmap_enabled bro!");
    ...
}
if cfg!(no_mmap) {
    println!("now it's not");
    ...
}

编译器看不到任何一个中的代码if声明机构,所以我知道这两个cfg!语句的评估结果为 false。为什么?

我读了Rust 0.10 中的条件编译? https://stackoverflow.com/questions/24297154/conditional-compilation-in-rust/我知道它不是完全重复,因为我正在寻找一个有效的示例。


测试功能的正确方法是feature = "name",正如你所看到的您链接的文档 https://doc.rust-lang.org/book/first-edition/conditional-compilation.html如果你滚动一下:

至于如何启用或禁用这些开关,如果您使用的是 Cargo, 他们被设置在[features] section https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section你的Cargo.toml:

[features]
# no features by default
default = []

# Add feature "foo" here, then you can use it. 
# Our "foo" feature depends on nothing else.
foo = []

当你这样做时,Cargo 会传递一个标志rustc:

--cfg feature="${feature_name}"

这些的总和cfg标志将决定哪些被激活, 因此,哪些代码被编译。我们来看这段代码:

#[cfg(feature = "foo")]
mod foo {
}

在你的情况下使用cfg!宏,这将映射到cfg!(feature = "foo").

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rust 中使用条件编译宏的示例 的相关文章

随机推荐

  • 如何打开 .swiftmodule 文件

    我想检查某个公共内容 swiftmodule来自 iOS 框架的文件 Here https lists swift org pipermail swift users Week of Mon 20160111 000827 html htt
  • Objective c 中的属性复制并保留

    我从苹果文档中读到的保留会将保留计数增加 1 而释放将减少 1 这对我来说非常清楚 但在复制和保留的情况下我有点困惑 让我用我正在尝试的代码来解释 财产 property nonatomic retain NSMutableString a
  • 使用 Mongoid 将整个模型设为只读

    我看到 Mongoid 支持只读属性 有没有办法将整个文档或整个集合 模型类标记为只读 您可以访问fields类属性并将哈希的键映射到attr readonly 例如 class Model include Mongoid Document
  • VBA 错误代码需要对象 --- 经过三次检查但仍然不起作用

    下面的注释行继续向我返回错误Run Time Error 424 Object Required 作为自学课程的一部分 我正在研究此问题 并且我已经进行了三次检查 以确保我正确输入代码并且仍然返回此错误 我尝试在此处查看此错误的其他示例 但
  • Phaser 3 spritesheet 未在 iOS 上显示 - 显示黑色矩形

    我有一个使用 Phaser 3 构建的项目 奇怪的是它没有显示 spritesheet 它显示为黑色矩形 它只发生在移动设备上 在模拟器上运行和在移动 safari 上运行 在我的 Mac 上 它显示正常 chrome 和 safari C
  • 如何仅使用 PIL Image 有条件地修改每个像素的像素值

    我想将所有像素 所有 r g b 的像素值减少 100 那么如果将像素值更新为 255 所有 r g b 其中 r g b 且 r gt 127 我尝试过使用 CV2 和 numpy 它工作正常 但是我被要求仅使用纯 PIL 图像 CV2
  • 在python中检查文件属性

    我想使用 python 检查目录中每个文件的存档位 到目前为止 我已经得到了以下内容 但我无法让它正常工作 该脚本的想法是能够查看所有具有存档位的文件 Thanks coding latin 1 import os win32file wi
  • 了解 KeyValue 嵌入式数据存储与文件系统

    我有一个关于文件系统使用的基本问题 我想使用嵌入式 KeyValue 存储 它非常面向写入 持续 说我的价值大小是 a 10K b 1M 并且读取和更新的数量相等 我可以简单地创建包含值及其名称作为键的文件吗 它不会像使用 LevelDB
  • extractin/构建增强程序选项

    我已成功安装 boost 编译二进制文件并构建 bcp 我还能够使用 bcp 提取正则表达式库 完成此操作后 我在下面找到了一个 gcc gen sh 脚本和一堆 makefile my exported boost regex libs
  • 跨连接列的全文搜索?

    我是自由文本搜索的新手 所以请原谅新手问题 假设我有以下全文索引 Create FullText Index on Contacts FirstName LastName Organization Key Index PK Contacts
  • 如何最大程度地减少 UDP 数据包丢失

    我每秒接收约 3000 个 UDP 数据包 每个数据包的大小约为 200 字节 我编写了一个 java 应用程序 它侦听这些 UDP 数据包并将数据写入文件 然后服务器以先前指定的速率发送 15000 条消息 写入文件后 它仅包含约 350
  • Writeln 能够支持 Unicode 吗?

    考虑这个程序 APPTYPE CONSOLE begin Writeln Z end 使用 Consolas 字体的控制台上的输出是 Z Windows 控制台非常有能力支持 Unicode 如该程序所示 APPTYPE CONSOLE u
  • 四边形到矩形变换

    我想将四边形图像转换为我知道这些顶点的矩形图像 例如 在下图中 我知道坐标 X1 Y1 X4 Y4 和 x1 y1 x2 y2 并且我想将其转换为矩形 如何获得与四边形图像中的 X Y 坐标相对应的矩形图像中的 x y 坐标 gt Y gt
  • 构建 Ad Hoc iOS 应用程序时 OSStatus 错误 -67028

    当我尝试在 iOS 上为仅限 iPhone 的应用程序进行临时分发的存档构建时 出现错误 该应用程序使用正确的证书进行签名 并具有正确的配置文件 与也能够正确签名的朋友进行了检查 因此这不是代码签名问题 每当我尝试使用 Xcode 存档面板
  • 在 Recyclerview 上播放视频时遇到问题

    我在 RecyclerView 中有一个 VideoView 我希望最终有一个可以在 Recyclerview 上播放的视频列表 我决定从一个视频开始 然后再制作多个视频 我似乎无法在 Recyclerview 中播放任何视频 当我在手机上
  • magrittr 管道内的 enquo()

    我只是想了解这里出了什么问题 在第一种情况 工作 中 我分配enquo ted 变量的参数 在第二种情况下 我直接在调用中使用带引号的参数mutate library dplyr df lt tibble x 1 5 y 1 5 z 1 5
  • Java中的选择排序算法

    我在对数组进行排序时遇到一些问题 我正在尝试按升序对其进行排序 我的任务是从用户那里获取一系列整数并将它们存储到一个数组中 然后按升序将它们显示给用户 我很高兴从用户那里获取输入 将其存储在数组中并将其显示回来 我能够运行我的代码并获得我想
  • 从最终用户处获取 Internet Explorer 安全设置

    据报告 我们的网络应用程序存在问题 这些问题似乎只发生在一个客户的站点上 出于诊断目的 有什么方法可以让客户向您发送他们的 IE 安全自定义设置吗 例如在 IE 8 中 工具 gt Internet 选项 gt 安全选项卡 对于 Inter
  • 如何使用 C# 将数据从存储在 FTP 服务器上的 ZIP 文件导入到数据库

    此代码从 FTP 服务器导入 void dat 文件 现在 void dat 位于 archive zip 文件下 那么如何从数据库中的 archive zip 中提取并导入数据 void dat 呢 WebClient request n
  • 如何在 Rust 中使用条件编译宏的示例

    我已经关注了相当多 https doc rust lang org reference attributes html conditional compilation of 文档 https doc rust lang org stable