I have a function like this:
extern {
fn foo(layout: *const RawLayout) -> libc::uint8_t;
}
fn bar(layout: Layout) -> bool {
unsafe {
foo(&layout.into() as *const _) != 0
}
}
Where Layout
is a copyable type that can be converted .into()
a RawLayout
.
I want to make sure I understand what is happening as it is unsafe. As I understand it, layout.into()
creates a temporary RawLayout
, then &
takes a reference to it, and as *const _
converts it to a raw pointer (*const RawLayout
). Then the foo()
function is called and returns, and finally the temporary RawLayout
is dropped.
Is that correct? Or is there some tricky reason why I shouldn't do this?