代码:
let app_arg = hyd_arg::parse_all(&args);
log::info!(
"app_arg {} {}",
app_arg.source_location.unwrap(),
app_arg.target_location.unwrap()
);
download::download(app_arg)
报错:
错因分析:
调用 log.info!
时,结构体 app_arg 的两个成员 source_location
, target_location
的所有权被吞掉了。
这之后调用 download::download (app_arg)
,则 app_arg
内部是部分转移状态。
解决方案:使用引用传递,避免打日志时所有权转移。
let app_arg = hyd_arg::parse_all(&args);
log::info!(
"app_arg {} {}",
app_arg.source_location.as_ref().unwrap(),
app_arg.target_location.as_ref().unwrap()
);
download::download(app_arg)