Struct SearchDirectoriesForProject

Source
pub struct SearchDirectoriesForProject<'a, TProject> { /* private fields */ }
Expand description

A list of search directories that the config files will be searched under, scoped to a particular project.

Implementations§

Source§

impl<'a, TProject> SearchDirectoriesForProject<'a, TProject>

Source

pub fn with_file_name<TFileName>( self, file_name: TFileName, ) -> SearchDirectoriesForProjectAndFileName<'a, TProject, TFileName>

Search for configuration files of this project with the given config file name.

Source

pub fn find_files<TDropinSuffix>( self, dropin_suffix: TDropinSuffix, ) -> Result<Files>
where TProject: AsRef<OsStr>, TDropinSuffix: AsRef<OsStr>,

Returns an Iterator of (PathBuf, File)s for all the files found in the specified search directories. The name format!("{project}.d") is appended to each search directory, then those directories are searched as if they are dropin directories. Only dropin files whose name ends with dropin_suffix will be considered. Note that if you intend to use a file extension as a suffix, then dropin_suffix must include the ., such as ".conf".

You will likely want to parse each file returned by this function according to whatever format they’re supposed to contain and merge them into a unified config object, with settings from later files overriding settings from earlier files. This function does not guarantee that the files are well-formed, only that they exist and could be opened for reading.

§Errors

Any errors from reading non-existing directories and non-existing files are ignored. Apart from that, any I/O errors from walking the directories and from opening the files found within are propagated.

§Examples
§Get all config files for the system service foobar

… taking into account OS vendor configs, ephemeral overrides and sysadmin overrides.

let files =
    uapi_config::SearchDirectories::modern_system()
    .with_project("foobar")
    .find_files(".conf")
    .unwrap();

This will locate all dropins /usr/etc/foobar.d/*.conf, /run/foobar.d/*.conf, /etc/foobar.d/*.conf in lexicographical order.

§Get all config files for the application foobar

… taking into account OS vendor configs, ephemeral overrides, sysadmin overrides and local user overrides.

let files =
    uapi_config::SearchDirectories::modern_system()
    .with_user_directory()
    .with_project("foobar")
    .find_files(".conf")
    .unwrap();

This will locate all dropins /usr/etc/foobar.d/*.conf, /run/foobar.d/*.conf, /etc/foobar.d/*.conf, $XDG_CONFIG_HOME/foobar.d/*.conf in lexicographical order.

Trait Implementations§

Source§

impl<'a, TProject: Clone> Clone for SearchDirectoriesForProject<'a, TProject>

Source§

fn clone(&self) -> SearchDirectoriesForProject<'a, TProject>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a, TProject: Debug> Debug for SearchDirectoriesForProject<'a, TProject>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, TProject> Freeze for SearchDirectoriesForProject<'a, TProject>
where TProject: Freeze,

§

impl<'a, TProject> RefUnwindSafe for SearchDirectoriesForProject<'a, TProject>
where TProject: RefUnwindSafe,

§

impl<'a, TProject> Send for SearchDirectoriesForProject<'a, TProject>
where TProject: Send,

§

impl<'a, TProject> Sync for SearchDirectoriesForProject<'a, TProject>
where TProject: Sync,

§

impl<'a, TProject> Unpin for SearchDirectoriesForProject<'a, TProject>
where TProject: Unpin,

§

impl<'a, TProject> UnwindSafe for SearchDirectoriesForProject<'a, TProject>
where TProject: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.