返回str-Rust生命周期
我在尝试返回字符串时遇到了一些麻烦。我一直在尝试各种方法来定义变量和返回值,以便返回字符串原语,但我得到了一个与生命周期相关的错误消息数组返回str-Rust生命周期,rust,Rust,我在尝试返回字符串时遇到了一些麻烦。我一直在尝试各种方法来定义变量和返回值,以便返回字符串原语,但我得到了一个与生命周期相关的错误消息数组 pub fn raindrops(int: u64) -> &'a str { let mut out = String::new(); if int % 3 == 0 { out.push_str("Pling"); } if int % 5 == 0 { out.push_s
pub fn raindrops(int: u64) -> &'a str {
let mut out = String::new();
if int % 3 == 0 {
out.push_str("Pling");
}
if int % 5 == 0 {
out.push_str("Plang");
}
if int % 7 == 0 {
out.push_str("Plong");
}
if out.is_empty() {
out.push_str(&format!("{}", int));
}
out.shrink_to_fit();
return out.as_str();
}
错误:
错误[E0261]:使用未声明的生存期名称“%a”`
-->src/lib.rs:1:32
|
1 |发布fn雨滴(int:u64)->&a街{
|^^未声明的生存期
错误:由于上一个错误而中止
错误:无法编译“Raindropes”。
生成失败,正在等待其他作业完成。。。
错误[E0261]:使用未声明的生存期名称“%a”`
-->src/lib.rs:1:32
|
1 |发布fn雨滴(int:u64)->&a街{
|^^未声明的生存期
在这种情况下,您不能返回&str
,因为它将指向函数末尾超出范围的out
的内容。您必须返回字符串out
或者,如果要限制分配,可以返回一个枚举,该枚举可以是:
Pling,
Plang,
Plong,
Other(u64)
然后根据值打印响应。这很有效!谢谢,我想我把它复杂化了。作为优化,可以返回Cow而不是字符串。这将确保在返回静态字符串时不会发生动态分配。您可能会发现这很有趣