起因:
main方法断点不走。下面代码的在main方法里面第一行let前打断点,不走,之后的断点也都没走,直接报错error: the following required arguments were not provided:<EVENT>
。
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let settings::Settings {
event_id,
symbolicator_config,
output_format,
mode,
} = settings::Settings::get()?;
...
}
原因:
let行是左值表达式,setting行是右值表达式,先走了setting行,然后在setting行里面get方法里面有个Cli::parse()
方法,该方法是用来解析命令行参数的,在这个地方缺少固定参数event报错了,导致main方法里面第一行let行没走到。
rust命令行参数使用
// 三方库:clap = { version = "4.0.25", features = ["derive"] },用struct按顺序解析命令行参数
use clap::{Parser};
#[derive(Clone, Parser, Debug)]
struct Cli {
pub event: String,//固定参数
#[arg(long, short)] //选项参数,短选项和长选项
pub org: Option<String>, //可选参数
#[arg(long = "auth-token")]
pub auth_token: Option<String>,
#[arg(long)]
offline: bool,
}
#[tokio::main]
async fn main() {
let cli = Cli::parse();
}
网友评论