Skip to main content

Module fs

Module fs 

Source

Re-exportsΒ§

use std::path::Path; πŸ”’
use std::path::PathBuf; πŸ”’
use std::fs; πŸ”’
use std::io; πŸ”’
use rustc_data_structures::temp_dir::MaybeTempDir; πŸ”’
use rustc_fs_util::TempDirBuilder; πŸ”’
use rustc_middle::ty::TyCtxt; πŸ”’
use rustc_session::Session; πŸ”’
use rustc_session::config::OutFileName; πŸ”’
use rustc_session::config::OutputType; πŸ”’
use rustc_session::output::filename_for_metadata; πŸ”’
use rustc_span::ErrorGuaranteed; πŸ”’
use rustc_structures::CrateType; πŸ”’
use crate::diagnostics::BinaryOutputToTty; πŸ”’
use crate::diagnostics::FailedCopyToStdout; πŸ”’
use crate::diagnostics::FailedCreateEncodedMetadata; πŸ”’
use crate::diagnostics::FailedCreateFile; πŸ”’
use crate::diagnostics::FailedCreateTempdir; πŸ”’
use crate::diagnostics::FailedWriteError; πŸ”’
use crate::EncodedMetadata; πŸ”’
use crate::encode_metadata; πŸ”’

ConstantsΒ§

METADATA_FILENAME

FunctionsΒ§

copy_to_stdout
emit_wrapper_file
We use a temp directory here to avoid races between concurrent rustc processes, such as builds in the same directory using the same filename for metadata while building an .rlib (stomping over one another), or writing an .rmeta into a directory being searched for extern crate (observing an incomplete file). The returned path is the temporary file containing the complete metadata.
encode_and_write_metadata
non_durable_rename
This function attempts to bypass the auto_da_alloc heuristic implemented by some filesystems such as btrfs and ext4. When renaming over a file that already exists then they will β€œhelpfully” write back the source file before committing the rename in case a developer forgot some of the fsyncs in the open/write/fsync(file)/rename/fsync(dir) dance for atomic file updates.