#[cfg()]是 Rust 中的一个属性,用于根据配置条件来选择性地包含或排除代码。cfg是 "configuration" 的缩写,用于控制在不同的构建环境或平台上编译和执行不同的代码块。 #[cfg()]属性可以用于函数、结构体、枚举、模块、模块导入等各种代码元素,以及条件编译块(#[cfg()]包围的代码块)。它使用一个或多个条件...
参考:https://doc.rust-lang.org/stable/rust-by-example/attribute/cfg.html 示例 属性配置 #[cfg(target_os ="linux")]fnare_you_on_linux() {println!("You are running linux!"); }// target_os 是 rust 自动传递的#[cfg(not(target_os ="linux"))]fnare_you_on_linux() {println!("You ...
box关键字会调用Rust内部的exchange_malloc和box_free方法来管理内存。 #[cfg(not(test))]#[lang ="exchange_malloc"]#[inline]unsafefnexchange_malloc(size:usize,align:usize)->*mutu8{ifsize==0{alignas*mutu8}else{letlayout=Layout::from_size_align_unchecked(size,align);letptr=alloc(layout);if!ptr...
// 仅当目标系统为Linux 的时候才会编译 #[cfg(target_os = "linux")] fn are_you_on_linux() { println!("linux!") } // 仅当目标系统不是Linux 时才会编译 #[cfg(not(target_os = "linux"))] fn are_you_on_linux() { println!("not linux!") } fn main() { are_you_on_linux();...
单个标识符代表属性名,后面跟着一个逗号隔开的子属性的列表,如#[cfg(and(unix, not(windows)))] 在#后面还可以紧跟一个!,比如#![feature(box_syntax)],这表示这个属性是应用于它所在的这个Item。而如果没有!则表示这个属性仅应用于紧接着的那个Item。
#[cfg_attr(not(test), lang = "String")] pub struct String { vec: Vec<u8>, } #[stable(feature = "rust1", since = "1.0.0")] #[cfg_attr(not(test), rustc_diagnostic_item = "Vec")] #[rustc_insignificant_dtor] pub struct Vec<T, #[unstable(feature = "allocator_api", issue...
#[cfg(not(test))]#[lang="exchange_malloc"]#[inline]unsafe fnexchange_malloc(size:usize,align:usize)->*mut u8{ifsize==0{alignas*mut u8}else{letlayout=Layout::from_size_align_unchecked(size,align);letptr=alloc(layout);if!ptr.is_null(){ptr}else{handle_alloc_error(layout)}}}#[cfg_at...
("Hello, world!");pause();Status::SUCCESS}#[cfg(not(test))]#[panic_handler]fnpanic_handler(info:&core::panic::PanicInfo)->!{zfi::eprintln!("{info}");loop{}}#[cfg(not(test))]#[global_allocator]staticALLOCATOR:zfi::PoolAllocator=zfi:PoolAllocator;...
// src/libcore/str/mod.rs#[lang = "str"]#[cfg(not(test))]implstr{// ...#[stable(feature = "rust1", since = "1.0.0")]#[rustc_const_stable(feature = "const_str_len", since = "1.32.0")]#[inline]pubconstfnlen(&self)->usize{self.as_bytes().len()}// ...#[stable(fe...
{ loop {} } // rust_eh_personality #[no_mangle] #[cfg(not(test))] extern fn rust_eh_personality() {} 这个加上 Author Yangff commented May 26, 2024 • edited 不过就算不加,用了nightly的话我这里也可以进到这一步 linux-no-std: xmake f note: install or modify (m) these ...