# Function cargo::core::resolver::find_candidate

source ·

    fn find_candidate(
        cx: &ResolverContext,
        backtrack_stack: &mut Vec<BacktrackFrame>,
        parent: &Summary,
        backtracked: bool,
        conflicting_activations: &BTreeMap<PackageId, ConflictReason>
    ) -> Option<(Summary, bool, BacktrackFrame)>

Expand description

Looks through the states in `backtrack_stack` for dependencies with remaining candidates. For each one, also checks if rolling back could change the outcome of the failed resolution that caused backtracking in the first place. Namely, if we’ve backtracked past the parent of the failed dep, or any of the packages flagged as giving us trouble in `conflicting_activations`.

Read https://github.com/rust-lang/cargo/pull/4834 For several more detailed explanations of the logic here.