gpt4 book ai didi

rust - 尝试匹配向量中的字符串时出现错误 'cannot move out of dereference'

转载 作者:行者123 更新时间:2023-11-29 08:00:06 24 4
gpt4 key购买 nike

我是 Rust 的新手,正在尝试编写命令行实用程序作为学习的一种方式。

我正在获取 args 的列表并尝试匹配它们

let args = os::args()
//some more code
match args[1].into_ascii_lower().as_slice() {
"?" | "help" => { //show help },
"add" => { //do other stuff },
_ => { //do default stuff }
}

这会导致这个错误

cannot move out of dereference (dereference is implicit, due to indexing)
match args[1].into_ascii_lower().as_slice() {
^~~~~~~

我不知道那是什么意思,但搜索 yield this我没有完全理解,但是将 args[1] 更改为 args.get(1) 给了我另一个错误

error: cannot move out of dereference of `&`-pointer
match args.get(1).into_ascii_lower().as_slice() {
^~~~~~~~~~~

这是怎么回事?

最佳答案

正如您在文档中看到的,into_ascii_lower() 的类型是 ( see here ) :

fn into_ascii_upper(self) -> Self;

它直接采用self,而不是作为引用。这意味着它实际上使用了 String 并返回了另一个。

因此,当您执行 args[1].into_ascii_lower() 时,您尝试直接使用 args 的元素之一,这是被禁止的。您可能想要复制此字符串,并在该副本上调用 into_ascii_lower(),如下所示:

match args[1].clone().into_ascii_lower().as_slice() {
/* ... */
}

关于rust - 尝试匹配向量中的字符串时出现错误 'cannot move out of dereference',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612791/

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