4 #[derive(Debug, Default)]
5 pub(crate) struct FilesWithBackupEmitter;
7 impl Emitter for FilesWithBackupEmitter {
8 fn emit_formatted_file(
10 _output: &mut dyn Write,
16 ) -> Result<EmitterResult, io::Error> {
17 let filename = ensure_real_path(filename);
18 if original_text != formatted_text {
19 // Do a little dance to make writing safer - write to a temp file
20 // rename the original to a .bk, then rename the temp file to the
22 let tmp_name = filename.with_extension("tmp");
23 let bk_name = filename.with_extension("bk");
25 fs::write(&tmp_name, formatted_text)?;
26 fs::rename(filename, bk_name)?;
27 fs::rename(tmp_name, filename)?;
29 Ok(EmitterResult::default())