Skip to main content

InstallRuleset

Struct InstallRuleset 

Source
pub struct InstallRuleset<'a> { /* private fields */ }
Expand description

A borrowed set of install rules used to map and filter package files.

InstallRuleset holds references to an existing rules slice, an optional exclude glob set, and an optional default rule. Use OwnedInstallRuleset when you need owned storage.

§Examples

use camino::{Utf8Path, Utf8PathBuf};
use loadsmith_core::{PackageRef, PackageId, Version};
use loadsmith_install::{InstallRuleset, InstallRule, GlobRule};

let rules = [
    InstallRule::Glob(GlobRule::try_from_pattern("*.dll", Utf8Path::new("BepInEx/plugins")).unwrap()),
];
let ruleset = InstallRuleset::new(&rules);
let pkg = PackageRef::new(PackageId::new("x753-More_Suits"), Version::new(1, 0, 3));

assert_eq!(
    ruleset.map_file("MyPlugin.dll", &pkg),
    Some(Utf8PathBuf::from("BepInEx/plugins/MyPlugin.dll"))
);

Implementations§

Source§

impl<'a> InstallRuleset<'a>

Source

pub const fn new(rules: &'a [InstallRule]) -> Self

Creates a new InstallRuleset from a slice of rules.

Source

pub fn with_default_rule(self, default_rule: &'a InstallRule) -> Self

Sets the default rule used when no other rule matches a file.

Source

pub fn with_exclude(self, exclude: &'a GlobSet) -> Self

Sets a glob set for excluding files from installation.

Source

pub fn rules(&self) -> &[InstallRule]

Returns the list of install rules.

Source

pub fn default_rule(&self) -> Option<&InstallRule>

Returns the default rule, if any.

Source

pub fn exclude(&self) -> Option<&GlobSet>

Returns the exclude glob set, if any.

Source

pub fn find_rule_for_path( &self, path: impl AsRef<Utf8Path>, ) -> Option<&'a InstallRule>

Finds the first rule that matches the given path, falling back to the default rule if no path or extension match is found.

Path-based matches are checked before extension-based matches.

Source

pub fn find_rule_for_mapped_path( &self, path: impl AsRef<Utf8Path>, ) -> Option<&'a InstallRule>

Finds the first rule whose mapped output path starts with the given path.

Source

pub fn map_file( &self, path: impl AsRef<Utf8Path>, package: &PackageRef, ) -> Option<Utf8PathBuf>

Maps a file path through the ruleset, returning the install destination.

Returns None if the file is excluded or no rule matches.

Source

pub fn map_file_and_return_rule( &self, path: impl AsRef<Utf8Path>, package: &PackageRef, ) -> Option<(Utf8PathBuf, &InstallRule)>

Maps a file path and returns the install destination together with the matching rule.

Returns None if the file is excluded or no rule matches.

Source

pub fn is_excluded(&self, path: impl AsRef<Path>) -> bool

Returns true if the path matches the exclude glob set.

Trait Implementations§

Source§

impl<'a> Clone for InstallRuleset<'a>

Source§

fn clone(&self) -> InstallRuleset<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for InstallRuleset<'a>

Source§

impl<'a> Debug for InstallRuleset<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for InstallRuleset<'a>

§

impl<'a> RefUnwindSafe for InstallRuleset<'a>

§

impl<'a> Send for InstallRuleset<'a>

§

impl<'a> Sync for InstallRuleset<'a>

§

impl<'a> Unpin for InstallRuleset<'a>

§

impl<'a> UnsafeUnpin for InstallRuleset<'a>

§

impl<'a> UnwindSafe for InstallRuleset<'a>

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

Source§

type Output = T

Should always be Self
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<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