Struct directories::BaseDirs[][src]

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.

Examples

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();
    // Linux:   /home/alice/.config
    // Windows: C:\Users\Alice\AppData\Roaming
    // macOS:   /Users/Alice/Library/Application Support
}

Implementations

impl BaseDirs[src]

pub fn new() -> Option<BaseDirs>[src]

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:

Linux and macOS:

  • 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.

Windows:

  • 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.

pub fn home_dir(&self) -> &Path[src]

Returns the path to the user’s home directory.

PlatformValueExample
Linux$HOME/home/alice
macOS$HOME/Users/Alice
Windows{FOLDERID_Profile}C:\Users\Alice

pub fn cache_dir(&self) -> &Path[src]

Returns the path to the user’s cache directory.

PlatformValueExample
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

pub fn config_dir(&self) -> &Path[src]

Returns the path to the user’s config directory.

PlatformValueExample
Linux$XDG_CONFIG_HOME or $HOME/.config/home/alice/.config
macOS$HOME/Library/Application Support/Users/Alice/Library/Application Support
Windows{FOLDERID_RoamingAppData}C:\Users\Alice\AppData\Roaming

pub fn data_dir(&self) -> &Path[src]

Returns the path to the user’s data directory.

PlatformValueExample
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

pub fn data_local_dir(&self) -> &Path[src]

Returns the path to the user’s local data directory.

PlatformValueExample
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

pub fn executable_dir(&self) -> Option<&Path>[src]

Returns the path to the user’s executable directory.

PlatformValueExample
Linux$XDG_BIN_HOME or $XDG_DATA_HOME/../bin or $HOME/.local/bin/home/alice/.local/bin
macOS
Windows

pub fn preference_dir(&self) -> &Path[src]

Returns the path to the user’s preference directory.

PlatformValueExample
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

pub fn runtime_dir(&self) -> Option<&Path>[src]

Returns the path to the user’s runtime directory.

PlatformValueExample
Linux$XDG_RUNTIME_DIR/run/user/1001/
macOS
Windows

Trait Implementations

impl Clone for BaseDirs[src]

impl Debug for BaseDirs[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.