gpt4 book ai didi

rust - Command::new()。args()不处理数组中的多个参数

转载 作者:行者123 更新时间:2023-11-29 08:36:19 25 4
gpt4 key购买 nike

我是一个JavaScript程序员,试图学习Rust。我觉得我已经做好了准备,想尝试做点什么。我有几个贝壳脚本,我已经创建了多年,所以我想我可能会开始重建一些生锈的。基本上,我需要能够调用其他应用程序并传递参数。到目前为止,我已经提出了以下几点:
https://github.com/socketwiz/up2date/blob/master/src/main.rs
该计划的核心是:

let output = Command::new(app.command)
.args(app.args)
.output();

我可以很容易地用不同的命令和参数对其中的几个进行编码,但我认为将其分割成一个函数会更干净,我可以将一组命令和参数传递给它,让它遍历数组并执行命令。在大多数情况下,它的工作正如预期,除了L22是:
.args(app.args)

app.args是一个数组,但它似乎只处理第一个索引 -l-b似乎被完全忽略了,我不知道为什么。我有一个 printlnCommand前面,它打印出一个数组:
println!("{:?}", app.args);

# output
# ["-l", "-b"]

我对锈最难的部分是它的类型系统。我在这里读到:
https://doc.rust-lang.org/1.9.0/book/lifetimes.html
指的是所谓的“和借钱人打架”,我可以说是:
许多新用户在使用Rust时会遇到我们称之为“与借阅检查器战斗”的情况,在这种情况下,Rust编译器拒绝编译作者认为有效的程序。这种情况经常发生,因为程序员关于所有权应该如何工作的心理模型与Rust实现的实际规则不匹配。
所以我觉得也许我没有一个完全正确的类型,或者我对所有权的概念有一些误解,或者类似的东西。任何指导都是值得赞赏的。

最佳答案

我不明白你的问题,the output in the playground seems to be what I would expect和你想要的是什么(我用-b替换了-h,因为我更容易注意到变化):

["-l", "-h"]
total 152K
-rw-r--r-- 1 root root 118K Jan 30 03:15 Cargo.lock
-rw-rw-r-- 1 root root 4.8K Jan 31 00:44 Cargo.toml
-rw-rw-r-- 1 root root 16K Jan 30 03:08 crate-information.json
drwxr-xr-x 1 root root 4.0K Jan 31 00:44 src
drwxr-xr-x 1 root root 4.0K Jan 30 03:20 target

可能是您所处的环境中 -b不是有效的 ls标志吗?

关于rust - Command::new()。args()不处理数组中的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com