pub struct BaseDirs { /* fields omitted */ }
BaseDirs
provides paths of user-invisible standard directories, following the conventions of the operating system the library is running on.
To compute the location of cache, config or data directories for individual projects or applications, use ProjectDirs
instead.
All examples on this page are computed with a user named Alice.
use directories::BaseDirs;
if let Some(base_dirs) = BaseDirs::new() {
base_dirs.config_dir();
}
Creates a BaseDirs
struct which holds the paths to user-invisible directories for cache, config, etc. data on the system.
The returned value depends on the operating system and is either
Some
, containing a snapshot of the state of the system's paths at the time new()
was invoked, or
None
, if no valid home directory path could be retrieved from the operating system.
To determine whether a system provides a valid $HOME
path, the following rules are applied:
- Use
$HOME
if it is set and not empty.
- If
$HOME
is not set or empty, then the function getpwuid_r
is used to determine
the home directory of the current user.
- If
getpwuid_r
lacks an entry for the current user id or the home directory field is empty,
then the function returns None
.
- Retrieve the user profile folder using
SHGetKnownFolderPath
.
- If this fails, then the function returns
None
.
Note: This logic differs from std::env::home_dir
,
which works incorrectly on Linux, macOS and Windows.
Returns the path to the user's home directory.
Platform | Value | Example |
Linux | $HOME | /home/alice |
macOS | $HOME | /Users/Alice |
Windows | {FOLDERID_Profile} | C:\Users\Alice |
Returns the path to the user's cache directory.
Platform | Value | Example |
Linux | $XDG_CACHE_HOME or $HOME /.cache | /home/alice/.cache |
macOS | $HOME /Library/Caches | /Users/Alice/Library/Caches |
Windows | {FOLDERID_LocalAppData} | C:\Users\Alice\AppData\Local |
Returns the path to the user's config directory.
Platform | Value | Example |
Linux | $XDG_CONFIG_HOME or $HOME /.config | /home/alice/.config |
macOS | $HOME /Library/Preferences | /Users/Alice/Library/Preferences |
Windows | {FOLDERID_RoamingAppData} | C:\Users\Alice\AppData\Roaming |
Returns the path to the user's data directory.
Platform | Value | Example |
Linux | $XDG_DATA_HOME or $HOME /.local/share | /home/alice/.local/share |
macOS | $HOME /Library/Application Support | /Users/Alice/Library/Application Support |
Windows | {FOLDERID_RoamingAppData} | C:\Users\Alice\AppData\Roaming |
Returns the path to the user's local data directory.
Platform | Value | Example |
Linux | $XDG_DATA_HOME or $HOME /.local/share | /home/alice/.local/share |
macOS | $HOME /Library/Application Support | /Users/Alice/Library/Application Support |
Windows | {FOLDERID_LocalAppData} | C:\Users\Alice\AppData\Local |
Returns the path to the user's executable directory.
Platform | Value | Example |
Linux | $XDG_BIN_HOME or $XDG_DATA_HOME /../bin or $HOME /.local/bin | /home/alice/.local/bin |
macOS | – | – |
Windows | – | – |
Returns the path to the user's runtime directory.
Platform | Value | Example |
Linux | $XDG_RUNTIME_DIR | /run/user/1001/ |
macOS | – | – |
Windows | – | – |
Performs copy-assignment from source
. Read more
Formats the value using the given formatter. Read more
Creates owned data from borrowed data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Mutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)