[2023.09.14]: Rust的条件编译

关于条件编译,我的记忆是10多年前,写C#的时代了,最近10年写Python和Javascript代码,虽然Javascript中也可以通过插件实现条件编译的效果,但是用起来太憋足了。当我在Yew的SSR开发模式中看到条件编译的配置时,倍感亲切。

我记忆深刻的条件编译,是当时写的一段C#代码,给一个函数加上了Debug模式的条件编译,然后导致了生产环境的一个报错。具体细节忘记了,现在想起来有点不可思议。

rust 复制代码
#[cfg(feature = "ssr")]
async fn post_data(data: &EditorData) -> String {
    ...
}

在上面的配置中,只有当Cargo.toml中的[features]中包含了"ssr",post_data这个函数才会被编译进来。另外,运行cargo clippy命令时,也需要加上--features=ssr,否则会报找不到post_data这个函数的错误。完整命令如下

bash 复制代码
cargo clippy --features=ssr

关于features,我在之前的[2023.09.11]: Yew的SSR中的Cargo.toml配置里面有提到。

Rust的条件编译显然比我10多年前了解的C#里面的条件编译要丰富,当然估计现在C#里面的条件编译变得很强了。大家可以参考官方文档

我在这里只调我感兴趣的一个例子来说一下,这也是来源于我10年前的痛苦回忆。

rust 复制代码
// This function is only included when either foo or bar is defined
#[cfg(any(foo, bar))]
fn needs_foo_or_bar() {
  // ...
}

今天的分享就到这里,关于条件编译的问题,大家可以在评论区留言讨论。

相关推荐
豐儀麟阁贵5 分钟前
9.5格式化字符串
java·开发语言·前端·面试
m0_7400437323 分钟前
Axios拦截器 -- 请求拦截器和响应拦截器
开发语言·前端·javascript
程序修理员41 分钟前
java+vue实现文件下载进度条
java·开发语言·vue.js
梁正雄1 小时前
10、Python面向对象编程-2
开发语言·python
Jo乔戈里1 小时前
Python复制文件到剪切板
开发语言·python
任子菲阳1 小时前
学Java第五十三天——IO综合练习(1)
java·开发语言·爬虫
繁华似锦respect1 小时前
单例模式出现多个单例怎么确定初始化顺序?
java·开发语言·c++·单例模式·设计模式·哈希算法·散列表
码农很忙1 小时前
让复杂AI应用构建像搭积木:Spring AI Alibaba Graph深度指南与源码拆解
开发语言·人工智能·python
渡我白衣1 小时前
计算机组成原理(1):计算机发展历程
java·运维·开发语言·网络·c++·笔记·硬件架构
霸王大陆1 小时前
《零基础学 PHP:从入门到实战》模块十:从应用到精通——掌握PHP进阶技术与现代化开发实战-4
开发语言·php