I am not 100% certain what is going on in your example, but what I intend is:
struct Foo(String, String);
impl Drop for Foo {
fn drop(&mut self) {}
}
let foo = Foo("a".to_owned(), "b".to_owned());
let manual = ManuallyDrop::new(foo);
let a = manual.0; // Partial move