zkstack_cli_common 0.1.2

ZK Stack CLI is a set of tools for working with zk stack.
Documentation
use cliclack::Select;

pub struct PromptSelect<T> {
    inner: Select<T>,
}

impl<T> PromptSelect<T>
where
    T: Clone + Eq,
{
    pub fn new<I>(question: &str, items: I) -> Self
    where
        T: ToString + Clone,
        I: IntoIterator<Item = T>,
    {
        let items = items
            .into_iter()
            .map(|item| {
                let label = item.to_string();
                let hint = "";
                (item, label, hint)
            })
            .collect::<Vec<_>>();
        Self {
            inner: Select::new(question).items(&items),
        }
    }

    pub fn ask(mut self) -> T {
        self.inner.interact().unwrap()
    }
}