pub struct HashStrategy { /* private fields */ }Expand description
Hash collection and verification policies for a resolution.
Verification takes precedence for distributions with trusted hashes. The collection policy applies to the remaining distributions.
Implementations§
Source§impl HashStrategy
impl HashStrategy
Sourcepub fn collect(collection: HashCollection) -> Self
pub fn collect(collection: HashCollection) -> Self
Collect declared hashes for resolution, computing missing hashes according to the policy.
Sourcepub fn verify(hashes: Arc<FxHashMap<VersionId, Vec<HashDigest>>>) -> Self
pub fn verify(hashes: Arc<FxHashMap<VersionId, Vec<HashDigest>>>) -> Self
Validate hashes when present.
Sourcepub fn with_verification(self, verification: HashVerification) -> Self
pub fn with_verification(self, verification: HashVerification) -> Self
Set verification independently of hash collection.
Sourcepub fn with_constraint_hashes(
self,
constraints: &Self,
) -> Result<Self, HashStrategyError>
pub fn with_constraint_hashes( self, constraints: &Self, ) -> Result<Self, HashStrategyError>
Apply constraint hashes using the same rules as Self::from_requirements.
Preserve hash collection and require hashes if either strategy requires them. Constraints for identities absent from this strategy remain available for newly resolved dependencies.
Sourcepub fn collection(&self) -> HashCollection
pub fn collection(&self) -> HashCollection
Return the hash collection policy.
Sourcepub fn verification(&self) -> &HashVerification
pub fn verification(&self) -> &HashVerification
Return the hash verification policy.
Sourcepub fn archive_policy<T: DistributionMetadata>(
&self,
distribution: &T,
) -> ArchiveHashPolicy<'_>
pub fn archive_policy<T: DistributionMetadata>( &self, distribution: &T, ) -> ArchiveHashPolicy<'_>
Return the ArchiveHashPolicy for the given distribution.
Sourcepub fn metadata_policy<T: DistributionMetadata>(
&self,
distribution: &T,
) -> MetadataHashPolicy<'_>
pub fn metadata_policy<T: DistributionMetadata>( &self, distribution: &T, ) -> MetadataHashPolicy<'_>
Return the MetadataHashPolicy for retrieving the given distribution’s metadata.
Sourcepub fn archive_policy_for_package(
&self,
name: &PackageName,
version: &Version,
) -> ArchiveHashPolicy<'_>
pub fn archive_policy_for_package( &self, name: &PackageName, version: &Version, ) -> ArchiveHashPolicy<'_>
Return the ArchiveHashPolicy for the given registry-based package.
Sourcepub fn archive_policy_for_url(&self, url: &SafeUrl) -> ArchiveHashPolicy<'_>
pub fn archive_policy_for_url(&self, url: &SafeUrl) -> ArchiveHashPolicy<'_>
Return the ArchiveHashPolicy for the given direct URL package.
A direct URL identifies a single concrete artifact, so every provided digest must match.
Sourcepub fn metadata_policy_for_url(&self, url: &SafeUrl) -> MetadataHashPolicy<'_>
pub fn metadata_policy_for_url(&self, url: &SafeUrl) -> MetadataHashPolicy<'_>
Return the MetadataHashPolicy for a URL whose package name is not yet known.
Sourcepub fn allows_package(&self, name: &PackageName, version: &Version) -> bool
pub fn allows_package(&self, name: &PackageName, version: &Version) -> bool
Returns true if the given registry-based package is allowed.
Sourcepub fn allows_url(&self, url: &SafeUrl) -> bool
pub fn allows_url(&self, url: &SafeUrl) -> bool
Returns true if the given direct URL package is allowed.
Sourcepub fn augment_with_requirements<'a>(
self,
requirements: impl Iterator<Item = &'a Requirement>,
) -> Result<Self, HashStrategyError>
pub fn augment_with_requirements<'a>( self, requirements: impl Iterator<Item = &'a Requirement>, ) -> Result<Self, HashStrategyError>
Return a HashStrategy augmented with archive URL hashes discovered in additional
requirements after the initial command-line parse.
Sourcepub fn augment_with_metadata_requirements<'a>(
self,
requirements: impl Iterator<Item = &'a Requirement>,
) -> Result<Self, HashStrategyError>
pub fn augment_with_metadata_requirements<'a>( self, requirements: impl Iterator<Item = &'a Requirement>, ) -> Result<Self, HashStrategyError>
Return a HashStrategy augmented with archive URL hashes discovered in distribution
metadata.
Required-hash verification is intentionally a closed set. In that mode, distribution
untrusted metadata cannot authorize a requirement that was absent from the input hash set.
Explicit requirements, such as build-system.requires and user-provided metadata, can still
contribute hashes via Self::augment_with_requirements.
Sourcepub fn from_requirements<'a>(
requirements: impl Iterator<Item = (&'a UnresolvedRequirement, &'a [String])>,
constraints: impl Iterator<Item = (&'a Requirement, &'a [String])>,
marker_env: Option<&ResolverMarkerEnvironment>,
mode: HashCheckingMode,
) -> Result<Self, HashStrategyError>
pub fn from_requirements<'a>( requirements: impl Iterator<Item = (&'a UnresolvedRequirement, &'a [String])>, constraints: impl Iterator<Item = (&'a Requirement, &'a [String])>, marker_env: Option<&ResolverMarkerEnvironment>, mode: HashCheckingMode, ) -> Result<Self, HashStrategyError>
Collect hashes from UnresolvedRequirement entries and constraints.
For duplicate registry pins and local files, the last nonempty hash list wins. Remote archive URLs combine hashes across algorithms and reject conflicting digests for the same algorithm. Registry pins accept any allowed digest; direct references must match all supplied digests. When requirements and constraints both supply hashes, registry pins permit only shared hashes; direct references must match hashes from both sources.
When the environment is not given, this treats all marker expressions that reference the environment as true. In other words, it does environment independent expression evaluation. (Which in turn devolves to “only evaluate marker expressions that reference an extra name.”)
Sourcepub fn from_constraints(
constraints: &Constraints,
marker_env: Option<&ResolverMarkerEnvironment>,
mode: HashCheckingMode,
) -> Result<Self, HashStrategyError>
pub fn from_constraints( constraints: &Constraints, marker_env: Option<&ResolverMarkerEnvironment>, mode: HashCheckingMode, ) -> Result<Self, HashStrategyError>
Collect hashes from Constraints using the same handling as regular constraints in
Self::from_requirements, preserving declaration order.
Sourcepub fn from_resolution(
resolution: &Resolution,
mode: HashCheckingMode,
) -> Result<Self, HashStrategyError>
pub fn from_resolution( resolution: &Resolution, mode: HashCheckingMode, ) -> Result<Self, HashStrategyError>
Read the required hashes from a Resolution.
Trait Implementations§
Source§impl Clone for HashStrategy
impl Clone for HashStrategy
Source§impl Debug for HashStrategy
impl Debug for HashStrategy
Auto Trait Implementations§
impl Freeze for HashStrategy
impl RefUnwindSafe for HashStrategy
impl Send for HashStrategy
impl Sync for HashStrategy
impl Unpin for HashStrategy
impl UnsafeUnpin for HashStrategy
impl UnwindSafe for HashStrategy
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for Twhere
T: Send,
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more