In this code...
struct Test { a: i32, b: i64 }
fn foo() -> Box { // Stack frame:
Is there a way to allocate directly to the heap without
box?
No. If there was, it wouldn't need a language change.
People tend to avoid this by using the unstable syntax indirectly, such as by using one of the standard containers which, in turn, uses it internally.
See also: