pub struct DeterminatorRules {
pub path_rules: Vec<PathRule>,
pub package_rules: Vec<PackageRule>,
/* private fields */
}
Expand description
Rules for the target determinator.
This forms a configuration file format that can be read from a TOML file.
For more about determinator rules, see the module-level documentation.
Fields§
§path_rules: Vec<PathRule>
A list of rules that each changed file path is matched against.
package_rules: Vec<PackageRule>
A list of rules that each affected package is matched against.
Sometimes, dependencies between workspace packages aren’t expressed in Cargo.tomls. The packages here act as “virtual dependencies” for the determinator.
Implementations§
source§impl DeterminatorRules
impl DeterminatorRules
sourcepub const DEFAULT_RULES_TOML: &'static str = "# These are the default rules shipped with this version of the determinator library. These rules are embedded into the\n# determinator library through `include_str!`.\n#\n# These rules are applied *after* custom rules, so a custom rule that matches any of the same files will override\n# them.\n\n# Standard ignore and other metadata files.\n[[path-rule]]\nglobs = [\"**/.gitignore\", \"**/.gitattributes\", \".dockerignore\", \".hgignore\", \".svnignore\", \"**/.ignore\"]\nmark-changed = []\n\n# Files that can affect the global build. Cargo.toml may contain updates to build flags or profile overrides,\n# so rebuild everything if it changes. (We could do a more sophisticated analysis in the future.)\n[[path-rule]]\nglobs = [\"rust-toolchain\", \"Cargo.toml\", \"**/.cargo/config\", \"**/.cargo/config.toml\"]\nmark-changed = \"all\"\n\n# Tool files that don\'t influence builds or tests.\n[[path-rule]]\nglobs = [\"clippy.toml\", \"rustfmt.toml\", \".lintrules/**/*\"]\nmark-changed = []\n\n# Cargo.lock is ignored, since the determinator does a deeper analysis to figure out which packages changed.\n[[path-rule]]\nglobs = [\"Cargo.lock\"]\nmark-changed = []\n\n# README, LICENSE and other metadata files are ignored throughout the codebase.\n[[path-rule]]\nglobs = [\"**/README*\", \"**/LICENSE*\", \"**/CONTRIBUTING*\", \"**/CODE_OF_CONDUCT*\", \"**/SECURITY*\"]\nmark-changed = []\n"
pub const DEFAULT_RULES_TOML: &'static str = "# These are the default rules shipped with this version of the determinator library. These rules are embedded into the\n# determinator library through `include_str!`.\n#\n# These rules are applied *after* custom rules, so a custom rule that matches any of the same files will override\n# them.\n\n# Standard ignore and other metadata files.\n[[path-rule]]\nglobs = [\"**/.gitignore\", \"**/.gitattributes\", \".dockerignore\", \".hgignore\", \".svnignore\", \"**/.ignore\"]\nmark-changed = []\n\n# Files that can affect the global build. Cargo.toml may contain updates to build flags or profile overrides,\n# so rebuild everything if it changes. (We could do a more sophisticated analysis in the future.)\n[[path-rule]]\nglobs = [\"rust-toolchain\", \"Cargo.toml\", \"**/.cargo/config\", \"**/.cargo/config.toml\"]\nmark-changed = \"all\"\n\n# Tool files that don\'t influence builds or tests.\n[[path-rule]]\nglobs = [\"clippy.toml\", \"rustfmt.toml\", \".lintrules/**/*\"]\nmark-changed = []\n\n# Cargo.lock is ignored, since the determinator does a deeper analysis to figure out which packages changed.\n[[path-rule]]\nglobs = [\"Cargo.lock\"]\nmark-changed = []\n\n# README, LICENSE and other metadata files are ignored throughout the codebase.\n[[path-rule]]\nglobs = [\"**/README*\", \"**/LICENSE*\", \"**/CONTRIBUTING*\", \"**/CODE_OF_CONDUCT*\", \"**/SECURITY*\"]\nmark-changed = []\n"
Contains the default rules in a TOML file format.
The default rules included with this copy of the determinator are:
# These are the default rules shipped with this version of the determinator library. These rules are embedded into the
# determinator library through `include_str!`.
#
# These rules are applied *after* custom rules, so a custom rule that matches any of the same files will override
# them.
# Standard ignore and other metadata files.
[[path-rule]]
globs = ["**/.gitignore", "**/.gitattributes", ".dockerignore", ".hgignore", ".svnignore", "**/.ignore"]
mark-changed = []
# Files that can affect the global build. Cargo.toml may contain updates to build flags or profile overrides,
# so rebuild everything if it changes. (We could do a more sophisticated analysis in the future.)
[[path-rule]]
globs = ["rust-toolchain", "Cargo.toml", "**/.cargo/config", "**/.cargo/config.toml"]
mark-changed = "all"
# Tool files that don't influence builds or tests.
[[path-rule]]
globs = ["clippy.toml", "rustfmt.toml", ".lintrules/**/*"]
mark-changed = []
# Cargo.lock is ignored, since the determinator does a deeper analysis to figure out which packages changed.
[[path-rule]]
globs = ["Cargo.lock"]
mark-changed = []
# README, LICENSE and other metadata files are ignored throughout the codebase.
[[path-rule]]
globs = ["**/README*", "**/LICENSE*", "**/CONTRIBUTING*", "**/CODE_OF_CONDUCT*", "**/SECURITY*"]
mark-changed = []
The latest version of the default rules is available on GitHub.
sourcepub fn parse(s: &str) -> Result<Self, Error>
pub fn parse(s: &str) -> Result<Self, Error>
Deserializes determinator rules from the given TOML string.
sourcepub fn default_rules() -> &'static DeterminatorRules
pub fn default_rules() -> &'static DeterminatorRules
Returns the default rules.
These rules are applied after any custom rules, so they can be overridden by custom rules.
Trait Implementations§
source§impl Clone for DeterminatorRules
impl Clone for DeterminatorRules
source§fn clone(&self) -> DeterminatorRules
fn clone(&self) -> DeterminatorRules
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for DeterminatorRules
impl Debug for DeterminatorRules
source§impl Default for DeterminatorRules
impl Default for DeterminatorRules
The Default
impl is the set of custom rules used by the determinator if
set_rules
isn’t called. It is an empty set of determinator
rules, with use_default_rules
set to true. This means that if set_rules
isn’t
called, the only rules in effect are the default ones.
source§impl<'de> Deserialize<'de> for DeterminatorRules
impl<'de> Deserialize<'de> for DeterminatorRules
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl PartialEq for DeterminatorRules
impl PartialEq for DeterminatorRules
source§impl Serialize for DeterminatorRules
impl Serialize for DeterminatorRules
impl Eq for DeterminatorRules
impl StructuralPartialEq for DeterminatorRules
Auto Trait Implementations§
impl Freeze for DeterminatorRules
impl RefUnwindSafe for DeterminatorRules
impl Send for DeterminatorRules
impl Sync for DeterminatorRules
impl Unpin for DeterminatorRules
impl UnwindSafe for DeterminatorRules
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more