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/ockam/implementations/rust/ockam/ockam_command/src/worker
    
    the code of the file until where you have to start completion: use clap::Args;
use colorful::Colorful;
use tokio::sync::Mutex;
use tokio::try_join;

use ockam::Context;
use ockam_api::address::extract_address_value;
use ockam_api::nodes::models::workers::{WorkerList, WorkerStatus};
use ockam_api::nodes::BackgroundNodeClient;

use crate::output::Output;
use crate::terminal::OckamColor;
use crate::util::{api, async_cmd};
use crate::{docs, CommandGlobalOpts};

const LONG_ABOUT: &str = include_str!("./static/list/long_about.txt");
const PR
    
    async fn async_run(&self, ctx: &Context, opts: CommandGlobalOpts) -> miette::Result<()> {
        let node = BackgroundNodeClient::create(ctx, &opts.state, &self.at).await?;
        let is_finished: Mutex<bool> = Mutex::new(false);

        let get_workers = async {
            let workers: WorkerList = node.ask(ctx, api::list_workers()).await?;
            *is_finished.lock().await = true;
            Ok(workers)
        };

        let output_messages = vec![format!(
            "Listing Workers on {}...\n",
            node.node_name().color(OckamColor::PrimaryResource.color())
        )];

        let progress_output = opts
            .terminal
            .progress_output(&output_messages, &is_finished);

        let (workers, _) = try_join!(get_workers, progress_output)?;

        let list = opts.terminal.build_list(
            &workers.list,
            &format!("Workers on {}", node.node_name()),
            &format!("No workers found on {}.", node.node_name()),
        )?;
        opts.terminal.stdout().plain(list).write_line()?;

        Ok(())
    }