Struct cargo::core::resolver::RemainingCandidates
source · struct RemainingCandidates {
remaining: RcVecIter<Summary>,
has_another: Option<Summary>,
}
Expand description
A helper “iterator” used to extract candidates within a current Context
of
a dependency graph.
This struct doesn’t literally implement the Iterator
trait (requires a few
more inputs) but in general acts like one. Each RemainingCandidates
is
created with a list of candidates to choose from. When attempting to iterate
over the list of candidates only valid candidates are returned. Validity
is defined within a Context
.
Candidates passed to new
may not be returned from next
as they could be
filtered out, and as they are filtered the causes will be added to conflicting_prev_active
.
Fields§
§remaining: RcVecIter<Summary>
§has_another: Option<Summary>
Implementations§
source§impl RemainingCandidates
impl RemainingCandidates
fn new(candidates: &Rc<Vec<Summary>>) -> RemainingCandidates
sourcefn next(
&mut self,
conflicting_prev_active: &mut BTreeMap<PackageId, ConflictReason>,
cx: &ResolverContext,
) -> Option<(Summary, bool)>
fn next( &mut self, conflicting_prev_active: &mut BTreeMap<PackageId, ConflictReason>, cx: &ResolverContext, ) -> Option<(Summary, bool)>
Attempts to find another candidate to check from this list.
This method will attempt to move this iterator forward, returning a
candidate that’s possible to activate. The cx
argument is the current
context which determines validity for candidates returned, and the dep
is the dependency listing that we’re activating for.
If successful a (Candidate, bool)
pair will be returned. The
Candidate
is the candidate to attempt to activate, and the bool
is
an indicator of whether there are remaining candidates to try of if
we’ve reached the end of iteration.
If we’ve reached the end of the iterator here then Err
will be
returned. The error will contain a map of package ID to conflict reason,
where each package ID caused a candidate to be filtered out from the
original list for the reason listed.
Trait Implementations§
source§impl Clone for RemainingCandidates
impl Clone for RemainingCandidates
source§fn clone(&self) -> RemainingCandidates
fn clone(&self) -> RemainingCandidates
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for RemainingCandidates
impl RefUnwindSafe for RemainingCandidates
impl !Send for RemainingCandidates
impl !Sync for RemainingCandidates
impl Unpin for RemainingCandidates
impl UnwindSafe for RemainingCandidates
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
)§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 32 bytes