cargo-msrv 0.15.0

Find your minimum supported Rust version (MSRV)!
Documentation
use crate::config::list::ListVariant;
use crate::config::{Config, ModeIntent, OutputFormat};
use crate::dependencies::resolver::{CargoMetadataResolver, DependencyResolver};
use crate::errors::TResult;
use crate::reporter::Output;

pub fn run_list_msrv<R: Output>(config: &Config, output: &R) -> TResult<()> {
    use crate::dependencies::formatter;

    output.mode(ModeIntent::List);

    let resolver = CargoMetadataResolver::try_from_config(config)?;
    let graph = resolver.resolve()?;

    match config.sub_command_config().list().variant {
        ListVariant::DirectDeps => match config.output_format() {
            OutputFormat::Human => {
                use crate::reporter::ui::HumanPrinter;
                let formatter = formatter::DirectDependenciesFormatter::<HumanPrinter>::new(graph);
                output.write_line(&format!("{}", formatter));
            }
            OutputFormat::Json => {
                use crate::reporter::json::JsonPrinter;
                let formatter = formatter::DirectDependenciesFormatter::<JsonPrinter>::new(graph);
                output.write_line(&format!("{}", formatter));
            }
            OutputFormat::None | OutputFormat::TestSuccesses => {}
        },
        ListVariant::OrderedByMSRV => match config.output_format() {
            OutputFormat::Human => {
                use crate::reporter::ui::HumanPrinter;
                let formatter = formatter::ByMSRVFormatter::<HumanPrinter>::new(graph);
                output.write_line(&format!("{}", formatter));
            }
            OutputFormat::Json => {
                use crate::reporter::json::JsonPrinter;
                let formatter = formatter::ByMSRVFormatter::<JsonPrinter>::new(graph);
                output.write_line(&format!("{}", formatter));
            }
            OutputFormat::None | OutputFormat::TestSuccesses => {}
        },
    }

    output.finish_success(ModeIntent::List, None);

    Ok(())
}