Skip to main content

TemplatedPathBuf

Struct TemplatedPathBuf 

Source
pub struct TemplatedPathBuf { /* private fields */ }
Expand description

A path buffer that can contain template variables like {PID} and {TIMESTAMP}.

This type stores both the original template and its evaluated form. Templates are evaluated on creation and can be re-evaluated to get fresh dynamic values.

Supported placeholders (case-insensitive, any case combination allowed):

  • {PID}, {pid}, {Pid}, etc.: Process ID of the current process
  • {TIMESTAMP}, {timestamp}, {TimeStamp}, etc.: ISO 8601 timestamp in local timezone with offset (e.g., 2024-02-05T14-30-45-0500 for EST, 2024-02-05T19-30-45+0000 for UTC)

§Usage

  • Use new() to create a TemplatedPathBuf that stores both template and evaluated path
  • Use as_path() to get a reference to the evaluated path
  • Use re_evaluate() to refresh dynamic values like {TIMESTAMP}
  • Use evaluate() static method for one-time evaluation without keeping the template

§Path normalization

Path evaluation performs the following transformations:

  • Expands ~ to the user’s home directory
  • Replaces placeholders with actual values (timestamp uses local timezone with offset)
  • Converts to an absolute path

Implementations§

Source§

impl TemplatedPathBuf

Source

pub fn new(path: impl Into<PathBuf>) -> Self

Creates a new TemplatedPathBuf from a path-like value.

Source

pub fn evaluate(path: impl Into<PathBuf>) -> PathBuf

Convenience function to create and evaluate a template in one step.

This is equivalent to calling TemplatedPathBuf::new(path).as_path().to_path_buf(). Use this when you don’t need to keep the template around.

Source

pub fn as_path(&self) -> &Path

Returns a reference to the evaluated path.

The evaluated path has all template variables substituted with their actual values, tilde expansion applied, and is converted to an absolute path.

Source

pub fn template_string(&self) -> String

Returns the original template path as a string.

Source

pub fn re_evaluate(&mut self) -> &Path

Re-evaluates the template by replacing all placeholders with fresh values and expanding paths.

This method updates the internal evaluated path and returns a reference to it. Call this if you need to refresh dynamic values like {PID} or {TIMESTAMP}.

§Examples
use xet_runtime::utils::TemplatedPathBuf;

let mut template = TemplatedPathBuf::new("~/logs/app_{PID}_{TIMESTAMP}.txt");
let path = template.as_path();
// Returns an absolute path like "/home/user/logs/app_12345_2024-01-15T10-30-45-0500.txt"
// (timestamp in local timezone with offset appended)

// Later, re-evaluate to get a fresh timestamp
template.re_evaluate();
let new_path = template.as_path();

Trait Implementations§

Source§

impl Clone for TemplatedPathBuf

Source§

fn clone(&self) -> TemplatedPathBuf

Returns a duplicate 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 Debug for TemplatedPathBuf

Source§

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

Formats the value using the given formatter. Read more
Source§

impl From<&Path> for TemplatedPathBuf

Source§

fn from(path: &Path) -> Self

Converts to this type from the input type.
Source§

impl From<&str> for TemplatedPathBuf

Source§

fn from(s: &str) -> Self

Converts to this type from the input type.
Source§

impl From<PathBuf> for TemplatedPathBuf

Source§

fn from(path: PathBuf) -> Self

Converts to this type from the input type.
Source§

impl From<String> for TemplatedPathBuf

Source§

fn from(s: String) -> Self

Converts to this type from the input type.
Source§

impl ParsableConfigValue for TemplatedPathBuf

Available on non-target_family=wasm only.
Source§

fn parse_user_value(value: &str) -> Option<Self>

Source§

fn to_config_string(&self) -> String

Serialize this value to a string that can be parsed back via parse_user_value.
Source§

fn try_update_in_place(&mut self, value: &str) -> bool

Try to update this value in place from a string. Returns true on success. The default implementation delegates to parse_user_value, but types like ConfigEnum override this to use context-aware validation.
Source§

fn parse_config_value( variable_name: &str, value: Option<String>, default: Self, ) -> Self

Parse the value, returning the default if it can’t be parsed or the string is empty.
Issue a warning if it can’t be parsed.

Auto Trait Implementations§

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> DropFlavorWrapper<T> for T

Source§

type Flavor = MayDrop

The DropFlavor that wraps T into Self
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<E> ResultError for E
where E: Send + Debug + Sync,

Source§

impl<T> ResultType for T
where T: Send + Clone + Sync + Debug,