Location
Summary
Encountered in #122580 (comment).
In codegen we (transitively) use env::temp_dir() for some temporary files. If you unset (or provide a value that is not a writable directory) all three TMP, TEMP, USERPROFILE env vars (such as by calling Command::env_clear on some cargo invocation) on Windows, then env::temp_dir() can return the Windows directory which is often not writable.
This is documented in GetTempPath2W, but it might be worth a remark on the docs for env::temp_dir and Command::env_clear that modifying or unsetting TMP, TEMP and USERPROFILE can influence the result of env::temp_dir on Windows.
It is already pointed out that env::temp_dir returns value of TMPDIR on Linux.
Location
std::env::temp_dirstd::process::Command::env_clearSummary
Encountered in #122580 (comment).
In codegen we (transitively) use
env::temp_dir()for some temporary files. If you unset (or provide a value that is not a writable directory) all threeTMP,TEMP,USERPROFILEenv vars (such as by callingCommand::env_clearon some cargo invocation) on Windows, thenenv::temp_dir()can return the Windows directory which is often not writable.This is documented in
GetTempPath2W, but it might be worth a remark on the docs forenv::temp_dirandCommand::env_clearthat modifying or unsettingTMP,TEMPandUSERPROFILEcan influence the result ofenv::temp_diron Windows.It is already pointed out that
env::temp_dirreturns value ofTMPDIRon Linux.