In general you cannot get a T from a &mut Example<T>, which is what you are trying to do here. But when T: Default you can use std::mem::take, or if you have some other way to construct a "throwaway" T value you can plug it into the closely-related std::mem::replace.
impl<T: Default> Drop for Example<T> {
fn drop(&mut self) {
func(std::mem::take(self.0));
// or `func(std::mem::replace(self.0, some_throwaway_value));`
}
}
Also of course if T: Clone then you can do func(self.0.clone()).
If none of those approaches work for you, you will have to see if you can rewrite func to take &mut T instead.