Skip to content

Instantly share code, notes, and snippets.

@MaulingMonkey
Created October 24, 2023 17:42
Show Gist options
  • Save MaulingMonkey/282e2731c7b2691e5f0a0acbe433f025 to your computer and use it in GitHub Desktop.
Save MaulingMonkey/282e2731c7b2691e5f0a0acbe433f025 to your computer and use it in GitHub Desktop.
C:\local\badmute>type .cargo\config.toml
[unstable]
build-std = ["core", "alloc", "std"]
C:\local\badmute>type src\main.rs
#[repr(C)] #[derive(Debug)] struct P{x:f32,y:f32}
#[repr(C)] #[derive(Debug)] struct Z{x:f32,y:f32}
fn main() {
let mut v = vec![P{x:4.0,y:2.0}];
v.reserve(10);
unsafe{dbg!(std::mem::transmute::<Vec<P>, Vec<Z>>(v))};
}
C:\local\badmute>set RUSTFLAGS=-Zrandomize-layout -Zlayout-seed=11
C:\local\badmute>cargo +nightly run --target=x86_64-pc-windows-msvc
Compiling core v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core)
Compiling rustc-std-workspace-core v1.99.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\rustc-std-workspace-core)
Compiling compiler_builtins v0.1.101
Compiling libc v0.2.148
Compiling alloc v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\alloc)
Compiling cfg-if v1.0.0
Compiling rustc-demangle v0.1.23
Compiling unwind v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\unwind)
Compiling rustc-std-workspace-alloc v1.99.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\rustc-std-workspace-alloc)
Compiling panic_unwind v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\panic_unwind)
Compiling panic_abort v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\panic_abort)
Compiling hashbrown v0.14.0
Compiling std_detect v0.1.5 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\stdarch\crates\std_detect)
Compiling std v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std)
Compiling proc_macro v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\proc_macro)
Compiling badmute v0.1.0 (C:\local\badmute)
Finished dev [unoptimized + debuginfo] target(s) in 25.82s
Running `target\x86_64-pc-windows-msvc\debug\badmute.exe`
[src\main.rs:7] std::mem::transmute::<Vec<P>, Vec<Z>>(v) = [
Z {
x: 4.0,
y: 2.0,
},
]
C:\local\badmute>cargo +nightly miri run --target=x86_64-pc-windows-msvc
Preparing a sysroot for Miri (target: x86_64-pc-windows-msvc)... done
Compiling core v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core)
Compiling rustc-std-workspace-core v1.99.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\rustc-std-workspace-core)
Compiling compiler_builtins v0.1.101
Compiling libc v0.2.148
Compiling alloc v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\alloc)
Compiling cfg-if v1.0.0
Compiling rustc-demangle v0.1.23
Compiling unwind v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\unwind)
Compiling rustc-std-workspace-alloc v1.99.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\rustc-std-workspace-alloc)
Compiling panic_abort v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\panic_abort)
Compiling panic_unwind v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\panic_unwind)
Compiling std_detect v0.1.5 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\stdarch\crates\std_detect)
Compiling hashbrown v0.14.0
Compiling std v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std)
Compiling proc_macro v0.0.0 (C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\proc_macro)
Compiling badmute v0.1.0 (C:\local\badmute)
Finished dev [unoptimized + debuginfo] target(s) in 19.85s
Running `C:\Users\MaulingMonkey\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\bin\cargo-miri.exe runner target\miri\x86_64-pc-windows-msvc\debug\badmute.exe`
[src\main.rs:7] std::mem::transmute::<Vec<P>, Vec<Z>>(v) = [
Z {
x: 4.0,
y: 2.0,
},
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment