Rust在执行usinze.clone()时返回整数



我有下面的代码,它在枚举中使用usize,我想对该usize进行迭代。当我将usize直接传递给循环的时,我会得到编译错误"expected Integer but found &usize。但是,当我克隆usize时,for循环会起作用。

在查阅文档后,clone()方法预计也会返回usize。这段代码之所以有效,是因为克隆方法赋予了for循环所有权,但原始size变量是通过引用传递的吗?

pub enum Command {
Uppercase,
Trim,
Append(usize),
}
fn some_fun(command: Command, string: String) {

match command {
Command::Append(size)=> {
let mut str = string.clone();
let s = size.clone();
for i in 0..s {
str.push_str("bar");
}


}
}

对于范围表达式,您需要值,而不是引用。CCD_ 8的类型由于";匹配人体工程学";。您没有显示匹配的表达式,但匹配值的类型很可能是&Command。如果在模式的开头添加&,即&Command::Append(size),则size的类型将为usize,并且在0..size上迭代应该可以正常工作。

是。在范围上迭代需要值,而不是引用。然而,由于usizeCopy,因此最好只是取消引用:for i in 0..*size

相关内容

  • 没有找到相关文章

最新更新