2个版本 (1个稳定版)
使用旧的Rust 2015
1.0.0 | 2019年9月6日 |
---|---|
0.1.0 | 2019年9月1日 |
在开发工具中排名第1667
每月下载量795次
在qmetaobject中使用
14KB
19行代码,不包括注释
if_rust_version
宏,用于根据Rust版本启用或禁用代码
作者:Olivier Goffart
安装
API参考
if_rust_version! { >= 1.36 {
let mut x = std::mem::MaybeUninit::<u32>::uninit();
unsafe { x.as_mut_ptr().write(32); }
let xx = unsafe { x.assume_init() };
} else {
let mut xx : u32 = unsafe { mem::uninitialized() };
unsafe { ptr::write(&mut xx as *mut u32, 32); }
}}
2个版本 (1个稳定版)
if_rust_version! { >= 1.31 {
// just a identity macro that forward the item
macro_rules! const_fn { ($f:item) => { $f } }
} else {
// remove the 'const'
macro_rules! const_fn {
($(#[$m:meta])* const fn $($rest:tt)*) => { $(#[$m])* fn $($rest)* };
($(#[$m:meta])* pub const fn $($rest:tt)*) => {
$(#[$m])*
/// This function is a const fn from rust 1.31
pub fn $($rest)*
};
}
}}
const_fn!{
/// This function is const chen the compiler supports it
pub const fn hello(x : u32) -> u32 { x + 2 }
}
使用旧的Rust 2015
2019年9月6日
2019年9月1日
在开发工具中排名第1667
每月下载量795次
在qmetaobject中使用
rustversion 是一个属性宏,它有一个缺点,就是不能用于添加新语法的特性(例如:?
或 10u128
或 impl Trait
)。此外,属性宏最近才稳定下来,并且还不能扩展为表达式。更不用说开发过程式宏需要使用像 syn
这样的重型依赖。
还有一个提议的 RFC 2523,它建议允许通过 #[cfg(...)]
属性查询 Rust 版本。
许可证
MIT/Apache-2.0