I know it's very tricky in presence of an optimizer. The current implementation in KeePassC uses the pointer after memset in Drop, so it might be just lucky (https://github.com/raymontag/rust-keepass/issues/4).
C only promises the behavior of the C abstract machine. Data will randomly get spilled from registers into random places on the stack where you may be completely unable to reach them to zeroize them.
All you can do is best effort, in C-- I wouldn't expect rust to be better here.
http://doc.rust-lang.org/1.1.0/test/fn.black_box.html
I've never actually tried it outside of tests, so I don't know if it applies here.