Am I correct thinking that a function returning a large struct is not going to actually cause a
memcpy of the struct?
fn foo() -> BigStruct is going to be optimized to be something like
fn foo(ret: *mut BigStruct).
If it does, is it just LLVM optimization (that may or may not be applied), or part of the current Rust ABI?