cargo-msrv 0.16.2

Find your minimum supported Rust version (MSRV)!
Documentation
use crate::check::Check;
use crate::outcome::Outcome;
use crate::semver::Version;
use crate::toolchain::ToolchainSpec;
use crate::TResult;
use std::collections::HashSet;

pub struct TestRunner {
    accept_versions: HashSet<Version>,
    target: &'static str,
}

impl TestRunner {
    pub fn with_ok<'v, T: IntoIterator<Item = &'v Version>>(target: &'static str, iter: T) -> Self {
        Self {
            accept_versions: iter.into_iter().cloned().collect(),
            target,
        }
    }
}

impl Check for TestRunner {
    fn check(&self, toolchain: &ToolchainSpec) -> TResult<Outcome> {
        let v = toolchain.version();

        if self.accept_versions.contains(toolchain.version()) {
            Ok(Outcome::new_success(ToolchainSpec::new(
                v.clone(),
                self.target,
                &[],
            )))
        } else {
            Ok(Outcome::new_failure(
                ToolchainSpec::new(v.clone(), self.target, &[]),
                "f".to_string(),
            ))
        }
    }
}