You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: list.rs
    path of file: ./repos/fluvio/crates/fluvio-version-manager/src/command
    
    the code of the file until where you have to start completion: //! Show Intalled Versions Command
//!
//! The `show` command is responsible of listing all the installed Fluvio Versions

use anyhow::{Result, anyhow};
use clap::Parser;
use colored::Colorize;
use comfy_table::{Table, Row};

use fluvio_hub_util::fvm::Channel;

use crate::common::manifest::VersionManifest;
use crate::common::notify::Notify;
use crate::common::settings::Settings;
use crate::common::version_directory::VersionDirectory;
use crate::common::workdir::fvm_versions_path;

#[derive(Debug, Parser)]
pub struct ListOpt {
    /// List included artifacts for this installed version if available
    #[arg(index = 1)]
    
    
    fn render_table(manifests: Vec<VersionManifest>, maybe_active: Option<VersionManifest>) {
        let mut table = Table::new();

        table.set_header(Row::from([" ", "CHANNEL", "VERSION"]));

        if let Some(active) = maybe_active {
            table.add_row(Row::from([
                "âœ“".to_string(),
                active.channel.to_string(),
                active.version.to_string(),
            ]));
        }

        let mut sorted_manifests = manifests;
        sorted_manifests.sort_by(|a, b| b.channel.cmp(&a.channel));

        for manifest in sorted_manifests {
            table.add_row(Row::from([
                " ".to_string(),
                manifest.channel.to_string(),
                manifest.version.to_string(),
            ]));
        }

        table.load_preset(comfy_table::presets::NOTHING);

        println!("{}", table);
    }