gpt4 book ai didi

rust - 创建一个新的 &str

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

我想映射一个 str 的向量,以便它重现其他值:

let v = vec!["str1", "str2", "str3", "str4"]
let res = v.map_in_place(|x| x + "__") // error: binary operation `+` cannot be applied to type `&str`

请注意,我不需要更改 x,我需要创建一个 &strx 添加一个新的字符串文字。我该怎么做?

最佳答案

你需要转换xString在你可以做之前 +在上面,比如 x.to_string() + "__" ,但是,您的代码还有另一个问题:

v 的类型这是 Vec<&str>map_in_place期望结果类型的类型与原始类型具有相同的大小(和对齐方式),并且大小为 &strString 不同,因此它在运行时失败 - Demo .

有几个可能的改变来使这个工作:

如果你真的想用map_in_place , 你可以声明 v作为:

let v = vec!["str1".to_string(), "str2".to_string(), "str3".to_string(), "str4".to_string()];

Demo

另一种方法是使用 into_iter().map(...).collect() ,这将在创建新矢量后立即释放原始矢量。

fn main() {
let v = vec!["str1", "str2", "str3", "str4"];
let res = v.into_iter().map(|x| x.to_string() + "__").collect::<Vec<_>>();
println!("{}", res);
}

输出:

[str1__, str2__, str3__, str4__]

Demo

关于rust - 创建一个新的 &str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26612590/

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