This is an alternative to parts of D29709: instead of appending our new RuleMatcher to a vector, return it and the SkipReason as an Expected<RuleMatcher>.
It's a somewhat unconventional use of Error, but it's nicer than, say, std::pair because of the bool conversions.
Would this make more sense as ImportError()?