Rust 无法返回函数的字符串类型

Rust 无法返回函数的字符串类型,rust,Rust,我试图解决一个练习题,其中给出了一个包含单词的输入列表。我必须把它们一个接一个地嵌入一个句子中 程序几乎完成了,只是我不知道如何返回字符串类型。实际上,我必须形成一个向量,以便返回多个语句。现在,在我将句子推入Vector之后,问题是如何返回Vector元素(尽可能不返回列表元素) pub fn build_谚语(列表:&[&str])->String{ let empty=String::new(); 让mut-vecList:Vec=Vec::new(); //匹配列表。len(){ //

我试图解决一个练习题,其中给出了一个包含单词的输入列表。我必须把它们一个接一个地嵌入一个句子中

程序几乎完成了,只是我不知道如何返回字符串类型。实际上,我必须形成一个向量,以便返回多个语句。现在,在我将句子推入Vector之后,问题是如何返回Vector元素(尽可能不返回列表元素)

pub fn build_谚语(列表:&[&str])->String{
let empty=String::new();
让mut-vecList:Vec=Vec::new();
//匹配列表。len(){
// }
如果list.len()小于1{
空的
}否则{
对于0中的i…(list.len()){
如果(i+1)
还有一些我必须测试的测试用例:

使用谚语::构建谚语;
#[测试]
fn试验(两件){
让输入=vec![“钉子”、“鞋子”];
让我们期待=vec[
“因为没有钉子,鞋子丢了。”,
“这一切都是因为缺少一颗钉子。”,
]
.加入(“\n”);
assert_eq!(构建谚语(和输入),预期);
}
//请注意最后一行中三件的变化。
#[测试]
#[忽略]
fn试验三件(){
让输入=vec![“钉子”、“鞋”、“马”];
让我们期待=vec[
“因为没有钉子,鞋子丢了。”,
“因为缺少一只鞋,这匹马丢了。”,
“这一切都是因为缺少一颗钉子。”,
]
.加入(“\n”);
assert_eq!(构建谚语(和输入),预期);
}
#[测试]
#[忽略]
fn测试(单件){
让输入=vec![“钉子”];
let expected=String::from(“而且都是为了一颗钉子。”);
assert_eq!(构建谚语(和输入),预期);
}
#[测试]
#[忽略]
fn测试零件(){
让输入:Vec=Vec![];
让expected=String::new();
assert_eq!(构建谚语(和输入),预期);
}
#[测试]
#[忽略]
fn测试_full(){
让输入=向量[
“钉子”、“鞋子”、“马”、“骑手”、“信息”、“战斗”、“王国”,
];
让我们期待=vec[
“因为没有钉子,鞋子丢了。”,
“因为缺少一只鞋,这匹马丢了。”,
“因为缺少一匹马,骑手迷路了。”,
“因为缺少骑手,信息丢失了。”,
“由于缺乏信息,战斗失败了。”,
“由于缺乏战斗,王国失败了。”,
“这一切都是因为缺少一颗钉子。”,
]
.加入(“\n”);
assert_eq!(构建谚语(和输入),预期);
}
#[测试]
#[忽略]
fn测试(三件){
让输入=vec![“pin”,“枪”,“士兵”,“战斗];
让我们期待=vec[
“因为缺少别针,枪丢了。”,
“因为缺少枪,士兵迷路了。”,
“由于缺少一名士兵,这场战斗失败了。”,
“这一切都是因为缺少一枚别针。”,
]
.加入(“\n”);
assert_eq!(构建谚语(和输入),预期);
}

vecList
必须移出else块,这样它不会从该范围返回,而是从函数的范围返回。您还可以将其更改为
vecList.join(“\n”)
,以便它符合函数的返回类型字符串


@JohnKugelman这篇文章建议告诉我们如何将slice str(存储在堆栈上)转换为String类型(存储在堆上),但我的问题是如何返回String而不是vec。链接的文章展示了如何将
vec
转换为
String
,正是你需要做的。我不明白链接帖子是如何回答我的问题的。两者都有完全不同的背景