代码:

    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)