obsidian_parser/vault/vault_open/
options.rs

1//! Options for [`VaultBuilder`] and [`Vault`]
2//!
3//! [`VaultBuilder`]: crate::vault::vault_open::VaultBuilder
4//! [`Vault`]: crate::vault::Vault
5
6use std::path::{Path, PathBuf};
7
8/// Options for [`VaultBuilder`] and [`Vault`]
9///
10/// [`VaultBuilder`]: crate::vault::vault_open::VaultBuilder
11/// [`Vault`]: crate::vault::Vault
12#[derive(Debug, PartialEq, Eq, Clone)]
13pub struct VaultOptions {
14    /// Path to vault
15    path: PathBuf,
16}
17
18impl VaultOptions {
19    /// Create new [`VaultOptions`]
20    pub fn new(path: impl AsRef<Path>) -> Self {
21        Self {
22            path: path.as_ref().to_path_buf(),
23        }
24    }
25
26    /// Get path to vault
27    #[inline]
28    #[must_use]
29    pub fn path(&self) -> &Path {
30        &self.path
31    }
32
33    /// Get into path to vault
34    #[inline]
35    #[must_use]
36    pub fn into_path(self) -> PathBuf {
37        self.path
38    }
39}
40
41#[cfg(test)]
42mod tests {
43    use super::*;
44
45    #[cfg_attr(feature = "tracing", tracing_test::traced_test)]
46    #[test]
47    fn new() {
48        let path = PathBuf::from("path/to/vault");
49        let options = VaultOptions::new(&path);
50
51        assert_eq!(options.path, path);
52        assert_eq!(options.path(), path);
53    }
54}