gpt4 book ai didi

rust - 字符串追加,无法移出 '&' 指针的取消引用

转载 作者:行者123 更新时间:2023-11-29 07:52:05 27 4
gpt4 key购买 nike

我在组合两个字符串时遇到了问题,我是使用rust 的新手,所以如果有更简单的方法,请随时告诉我。

我的函数循环遍历一个字符串元组向量 (String,String),我想要做的是能够将这两个字符串元素组合成一个字符串。这是我拥有的:

for tup in bmp.bitmap_picture.mut_iter() {
let &(ref x, ref y) = tup;
let res_string = x;
res_string.append(y.as_slice());
}

但我收到错误:error: cannot move out of dereference of '&'-pointer for the line: res_string.append(y.as_slice());

我也试过 res_string.append(y.clone().as_slice()); 但发生了完全相同的错误,所以我不确定这样做是否正确。

最佳答案

append的函数定义为:

fn append(self, second: &str) -> String

普通的 self 表示按值语义。按值将接收者移动到方法中,除非接收者实现了 Copy(String 没有实现)。所以你必须克隆 x 而不是 y。

如果你想移出一个vector,你必须使用move_iter

还有一些其他可能的改进:

let string_pairs = vec![("Foo".to_string(),"Bar".to_string())];

// Option 1: leave original vector intact
let mut strings = Vec::new();
for &(ref x, ref y) in string_pairs.iter() {
let string = x.clone().append(y.as_slice());
strings.push(string);
}

// Option 2: consume original vector
let strings: Vec<String> = string_pairs.move_iter()
.map(|(x, y)| x.append(y.as_slice()))
.collect();

关于rust - 字符串追加,无法移出 '&' 指针的取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24943698/

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