那么,在 Rust 中,“*const ()” 究竟是什么?我似乎可以将某些基本值(整数值、函数)转换为此类型,就像下面的代码所示:
let foo = 1;
let pointer = foo as *const (); // this works.
但是对于浮点数等类型,编译器不允许我们进行上述类型强制转换。那么在Rust中,“*const()”是什么?它是否类似于C/C++中的“void *”? 如果是这样,为什么它不支持指向浮点数的指针?
另外,此模式当前在参考文档中的使用案例已添加:https://doc.rust-lang.org/std/mem/fn.transmute.html.
fn foo() -> i32 {
0
}
let pointer = foo as *const (); // here it is!!!
let function = unsafe {
std::mem::transmute::<*const (), fn() -> i32>(pointer)
};
assert_eq!(function(), 0);
3.141 as *const()
会代表哪个内存地址? - eggyal