+ #[cfg(target_os = "windows")]
+ {
+ let src = PathBuf::from(tmp_filename.clone());
+ let dst = PathBuf::from(filename_with_path.clone());
+ if Path::new(&filename_with_path.clone()).exists() {
+ unsafe {winapi::um::winbase::ReplaceFileW(
+ path_to_windows_str(dst).as_ptr(), path_to_windows_str(src).as_ptr(), std::ptr::null(),
+ winapi::um::winbase::REPLACEFILE_IGNORE_MERGE_ERRORS,
+ std::ptr::null_mut() as *mut winapi::ctypes::c_void,
+ std::ptr::null_mut() as *mut winapi::ctypes::c_void
+ )};
+ } else {
+ call!(unsafe {winapi::um::winbase::MoveFileExW(
+ path_to_windows_str(src).as_ptr(), path_to_windows_str(dst).as_ptr(),
+ winapi::um::winbase::MOVEFILE_WRITE_THROUGH | winapi::um::winbase::MOVEFILE_REPLACE_EXISTING
+ )});
+ }
+ }