#[allow(unreachable_code)] fn demo_drop(acquire_resource: bool) -> std::io::Result<()> { struct ResourceHolder { resource: Resource, } impl Drop for ResourceHolder { fn drop(&mut self) { self.resource.release() } } let resource = match acquire_resource { true => Some(Resource::new()), false => None, }; let _holder = resource.map(|r| ResourceHolder { resource: r }); println!("Resource used"); return Err(std::io::Error::new( std::io::ErrorKind::Other, "Resource does not leak!", )); Ok(()) }