G.TYP.FLT.05 禁止在浮点数和整数相互转换时使用 transmute

【级别】 要求

【描述】

使用 transmute 转换容易产生未定义行为,建议使用 to_bites 这样转换更加安全。

【反例】


#![allow(unused)]
fn main() {
// 不符合
unsafe {
    let _: u32 = std::mem::transmute(1f32);
    let _: f32 = std::mem::transmute(1_u32);
}
}

【正例】


#![allow(unused)]
fn main() {
//符合
let _: u32 = 1f32.to_bits();
let _: f32 = f32::from_bits(1_u32);
}

【Lint 检测】

lint nameClippy 可检测Rustc 可检测Lint Grouplevel
transmute_float_to_intyesnocomplexitywarn
transmute_int_to_floatyesnocomplexitywarn