Skip to main content

FilterSettings

Struct FilterSettings 

Source
pub struct FilterSettings {
    pub includes: Vec<FilterPattern>,
    pub excludes: Vec<FilterPattern>,
}
Expand description

Settings for filtering files based on include/exclude patterns

Fields§

§includes: Vec<FilterPattern>

patterns for files to include (if non-empty, only matching files are included)

§excludes: Vec<FilterPattern>

patterns for files to exclude

Implementations§

Source§

impl FilterSettings

Source

pub fn new() -> Self

Create new empty filter settings

Source

pub fn add_include(&mut self, pattern: &str) -> Result<(), Error>

Add an include pattern

Source

pub fn add_exclude(&mut self, pattern: &str) -> Result<(), Error>

Add an exclude pattern

Source

pub fn is_empty(&self) -> bool

Check if this filter has any patterns

Source

pub fn has_includes(&self) -> bool

Check if this filter has any include patterns

Source

pub fn should_include_root_item( &self, name: &Path, is_dir: bool, ) -> FilterResult

Determine if a root item (the source itself) should be included based on filter patterns.

This is a specialized version of should_include for root items (the source directory or file being copied). Anchored patterns (starting with /) are skipped because they are meant to match paths INSIDE the source root, not the source root itself.

For root files, only non-anchored simple patterns (no /) can directly match the name. For root directories, they’re always traversed if include patterns exist (to find matching content inside).

For example, pattern /bar on source foo/ should match foo/bar, not filter out foo.

Source

pub fn should_include(&self, relative_path: &Path, is_dir: bool) -> FilterResult

Determine if a path should be included based on filter patterns

§Precedence
  • If only excludes: include everything except matches
  • If only includes: include only matches (exclude everything else by default)
  • If both: excludes take priority (excludes checked first, then includes)
§Directory handling

Directories are traversed when include patterns exist if they could potentially contain matching files. For non-anchored patterns (like *.txt), all directories are traversed. For anchored patterns (like /bar), only directories matching the pattern prefix are traversed.

Source

pub fn directly_matches_include( &self, relative_path: &Path, is_dir: bool, ) -> bool

Check if a path directly matches any include pattern (not just could_contain_matches). Used to determine if an empty directory should be kept.

Returns true if:

  • No include patterns exist (everything is directly included)
  • At least one include pattern directly matches the path

Returns false if:

  • Include patterns exist but none match the path (directory was only traversed)
Source

pub fn could_contain_matches( &self, dir_path: &Path, pattern: &FilterPattern, ) -> bool

Check if a directory could potentially contain files matching the pattern

Source

pub fn from_file(path: &Path) -> Result<Self, Error>

Parse filter settings from a file

§File Format
# comments supported
--include *.rs
--include Cargo.toml
--exclude target/
--exclude *.log
Source

pub fn parse_content(content: &str) -> Result<Self, Error>

Parse filter settings from a string (filter file format)

Trait Implementations§

Source§

impl Clone for FilterSettings

Source§

fn clone(&self) -> FilterSettings

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 FilterSettings

Source§

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

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

impl Default for FilterSettings

Source§

fn default() -> FilterSettings

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for FilterSettings

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for FilterSettings

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,