Sorting 使用;“移动”;函数中的值
我想学习生锈,正在制作一个小程序来处理声音问题。我有一个带有此签名的函数:Sorting 使用;“移动”;函数中的值,sorting,rust,Sorting,Rust,我想学习生锈,正在制作一个小程序来处理声音问题。我有一个带有此签名的函数: fn edit_show(mut show: &mut Vec<Que>) { show.sort_by(|a, b| que_ordering(&a.id, &b.id)); loop { println!("Current ques"); for l in show { println!("{}", que_t
fn edit_show(mut show: &mut Vec<Que>) {
show.sort_by(|a, b| que_ordering(&a.id, &b.id));
loop {
println!("Current ques");
for l in show {
println!("{}", que_to_line(&l));
}
}
}
fn编辑显示(mut-show:&mut-Vec){
show.sort|u by(| a,b | que|u ordering(&a.id,&b.id));
环路{
println!(“当前问题”);
为了我的演出{
println!(“{}”,queu to_line(&l));
}
}
}
我得到一个错误:
移动值的使用:“显示”
我找不到任何关于如何解决这个问题的方法。对于排序来说,这似乎是一个奇怪的错误,因为(我假设)如果我在主函数中执行此操作,在主函数中传入的值似乎非常无用。解决方案
您的问题在这一行:
for l in show {
...
}
这将消耗向量show
。如果你想借用它的元素,你应该写:
for l in &show {
...
}
如果您想以可变方式借用它们,请在&mut-show中为l编写
解释
Rust for循环需要实现的类型。首先要注意的是:IntoIterator
是为每个Iterator
实现的。见:
impl<I> IntoIterator for I where I: Iterator
在这里,您可以看到它是直接为Vec
实现的,但也可以作为对它的引用。我希望这三个impl模块能说明问题。解决方案
您的问题在这一行:
for l in show {
...
}
这将消耗向量show
。如果你想借用它的元素,你应该写:
for l in &show {
...
}
如果您想以可变方式借用它们,请在&mut-show中为l编写
解释
Rust for循环需要实现的类型。首先要注意的是:IntoIterator
是为每个Iterator
实现的。见:
impl<I> IntoIterator for I where I: Iterator
在这里,您可以看到它是直接为Vec
实现的,但也可以作为对它的引用。我希望这三个impl模块能说明问题。队列就是一个,提示就是一个。Que不是AFAIK这个词。队列是,提示是。Que不是AFAIK这个词。值得注意的是,在某些情况下,&mut T T
会自动重新启动,因此不算作移动。知道哪个是哪个似乎有点像一门黑暗的艺术。在我的例子中,答案似乎是让它显示。iter()而不是像doing&show那样显示类型conflict@SebastianMalton你确定吗&show
和show.iter()
在您的情况下应该会做完全相同的事情……是的,我可以稍后发布编译器日志。值得注意的是,在某些情况下,&mut T
会自动重传,因此不算作移动。知道哪个是哪个似乎有点像一门黑暗的艺术。在我的例子中,答案似乎是让它显示。iter()而不是像doing&show那样显示类型conflict@SebastianMalton你确定吗&show
和show.iter()
在您的情况下应该做完全相同的事情……是的,我可以稍后发布编译器日志