如何使用dialoguer实现可选输入?是否需自行判断空字符串?
关于dialoguer获取可选输入的解决方案
dialoguer的Input组件没有直接返回Option<String>的API,你需要自行处理空输入,不过可以结合库的配置简化操作:
方法一:基础空字符串判断
先获取完整输入字符串,再根据是否为空转换成Option<String>:
use dialoguer::{Input, ColorfulTheme}; let name: String = Input::with_theme(&ColorfulTheme::default()) .with_prompt("Name") .interact() .unwrap(); let name_opt: Option<String> = if name.is_empty() { None } else { Some(name) };
注意:这种方式下,dialoguer默认会拒绝空输入,用户输入回车会被要求重新输入,直到输入非空内容。
方法二:允许空输入后转换
如果需要允许用户直接回车跳过输入,先通过allow_empty(true)配置允许空输入,再转换为Option:
use dialoguer::{Input, ColorfulTheme}; let name: String = Input::with_theme(&ColorfulTheme::default()) .with_prompt("Name") .allow_empty(true) // 允许空输入,用户回车直接通过 .interact() .unwrap(); let name_opt: Option<String> = if name.is_empty() { None } else { Some(name) };
内容的提问来源于stack exchange,提问作者Tristan F.-R.
相关产品推荐
相关产品推荐

