#[non_exhaustive]pub struct AdoptOutcome {
pub adopted: Vec<String>,
pub unchanged: Vec<String>,
pub remaining: Vec<String>,
pub swept: Vec<PathBuf>,
pub failed: Vec<(String, Error)>,
}Expand description
What an adoption installed, what it could not, and what it swept.
Does not derive Clone: failed carries an Error per item, and Error
itself does not implement Clone (it wraps io::Error and reqwest::Error,
neither of which do either).
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.adopted: Vec<String>Desired identifiers this adoption installed, sorted.
unchanged: Vec<String>Desired identifiers already recorded and left alone, sorted: either at the version that would be installed, or absent from the index so there was nothing to install.
remaining: Vec<String>Identifiers still missing from the record, sorted. Their files may be on disk from an older installer, unrecorded, where a reconcile would sweep them as delisted.
adopted, unchanged, and remaining never name the same identifier. A
desired name that is recorded but whose install failed, such as a failed
upgrade, is in none of them, only in failed.
swept: Vec<PathBuf>Root-relative folders the completing sweep removed. Empty unless every
desired name is recorded, that is unless remaining is empty.
failed: Vec<(String, Error)>Each desired name that errored while installing, with the reason (unresolvable dependency, network error, checksum mismatch, and so on).
This answers a different question than remaining: a name lands here only
when its own install attempt failed, whereas remaining is derived from the
record afterwards and also holds a name that resolved to nothing without
erroring. A name can therefore be in remaining without being in failed.