История изменений
Исправление
MOPKOBKA,
(текущая версия)
:
Так вот UB на расте типичное...
https://godbolt.org/z/WT16v5vfM
extern "C" {
fn printf(fmt: *const i8, ...) -> i32;
}
pub fn aliasing(a: *mut i32, b: *mut f32) -> i32 {
unsafe {
*a = 1;
*b = 0f32;
return *a;
}
}
fn main() {
let mut i = 0;
i = aliasing(&mut i as *mut i32, &mut i as *mut i32 as *mut f32);
unsafe {
// Печатает 1, должно 0
printf("%d" as *const str as *const i8, i);
}
}
Исходная версия
MOPKOBKA,
:
Так вот UB на расте типичное...
https://godbolt.org/z/WT16v5vfM
extern "C" {
fn printf(fmt: *const i8, ...) -> i32;
}
pub fn aliasing(a: *mut i32, b: *mut f32) -> i32 {
unsafe {
*a = 1;
*b = 0f32;
return *a;
}
}
fn main() {
let mut i = 0;
i = aliasing(&mut i as *mut i32, &mut i as *mut i32 as *mut f32);
unsafe {
// Печатает 1, должно 0
printf("%d" as *const str as *const i8, i);
}
}