You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Rust的cfg条件编译排除wasm32架构下的代码?

在Rust中实现Wasm架构下的代码排除

Rust的条件编译系统可以轻松实现类似C语言#ifndef WASM的代码排除逻辑,主要有两种常用方式:

1. 属性宏标记非Wasm专属代码

用#[cfg(not(target_arch = "wasm32"))]属性,直接标记仅在非Wasm架构下编译的函数、模块或代码项,完全对应C的#ifndef WASM效果:

#[cfg(not(target_arch = "wasm32"))]
fn native_only_func() {
    // 这段代码只会在原生平台(非Wasm)编译执行
}

2. 代码块内的条件排除

如果是要在函数内部排除某段代码,直接利用cfg!宏的else分支即可——当目标不是wasm32时,执行else块里的内容:

// 示例:根据架构选择执行逻辑
if cfg!(target_arch = "wasm32") {
    wasm_specific_func();
} else {
    // 这里就是非Wasm环境专属代码,等价于C的#ifndef WASM包裹的内容
    native_only_func();
}

3. 组合条件的进阶用法

如果需要更复杂的判断(比如同时排除Wasm且满足其他特性),可以用all、any和not组合:

// 仅在非Wasm且开启了"native_features"特性时编译
#[cfg(all(not(target_arch = "wasm32"), feature = "native_features"))]
fn advanced_native_func() {
    // 专属逻辑
}

内容的提问来源于stack exchange,提问作者sak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:45:38