#rustc-version #version #rustc #check

无std if_rust_version

根据Rust版本启用或禁用代码的宏

2个版本 (1个稳定版)

使用旧的Rust 2015

1.0.0 2019年9月6日
0.1.0 2019年9月1日

开发工具中排名第1667

Download history 225/week @ 2024-03-13 258/week @ 2024-03-20 287/week @ 2024-03-27 264/week @ 2024-04-03 263/week @ 2024-04-10 254/week @ 2024-04-17 297/week @ 2024-04-24 271/week @ 2024-05-01 245/week @ 2024-05-08 258/week @ 2024-05-15 247/week @ 2024-05-22 251/week @ 2024-05-29 205/week @ 2024-06-05 171/week @ 2024-06-12 220/week @ 2024-06-19 163/week @ 2024-06-26

每月下载量795
qmetaobject中使用

MIT/Apache协议

14KB
19行代码,不包括注释

if_rust_version

Build Status Crates.io docs Minimum Rust version: 1.12

宏,用于根据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); }
}}

GitHub仓库 (ogoffart)

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 是一个属性宏,它有一个缺点,就是不能用于添加新语法的特性(例如:?10u128impl Trait)。此外,属性宏最近才稳定下来,并且还不能扩展为表达式。更不用说开发过程式宏需要使用像 syn 这样的重型依赖。

还有一个提议的 RFC 2523,它建议允许通过 #[cfg(...)] 属性查询 Rust 版本。

许可证

MIT/Apache-2.0

无运行时依赖