String 转换格式!()从字符串到&';静态str

String 转换格式!()从字符串到&';静态str,string,rust,String,Rust,我很难理解如何插值一个数字并以正确的格式返回它。我开始时函数返回String,但是编译器需要和静态str。我已经读到了关于to_owned,但它还没有在我的脑海中出现。做我正在尝试的事情的“正确”方式是什么 fn ordinal_name(num: i32) -> &'static str { if num == 1 { "1st" } else if num == 2 { "2nd" } else if num == 3 {

我很难理解如何插值一个数字并以正确的格式返回它。我开始时函数返回
String
,但是编译器需要
和静态str
。我已经读到了关于
to_owned
,但它还没有在我的脑海中出现。做我正在尝试的事情的“正确”方式是什么

fn ordinal_name(num: i32) -> &'static str {
    if num == 1 {
        "1st"
    } else if num == 2 {
        "2nd"
    } else if num == 3 {
        "3rd"
    } else {
        format!("{}th", num)
    }
}

fn main() {
    println!("{}", ordinal_name(5));
}
错误[E0308]:类型不匹配
-->src/main.rs:9:9
|
1 | fn序号名称(编号:i32)->&'static str{
|------由于返回类型,应为`&'static str`
...
9 |格式!(“{}th”,num)
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`
|
=注意:应为类型`&'`
找到类型“std::string::string”`
=注意:此错误源于当前板条箱外部的宏

这不是字符串到&'static str的重复-我正在试图找出如何用字符串插值一个整数,然后返回一个
&static str

我想这确实需要一个参考,链接的重复不够好。是一个开始我正在试图找出如何用字符串插值一个整数,然后返回一个
&static str
=>“我正在试图找出如何[创建
字符串
],然后返回一个
&static str
”。这确实是一个重复;创建
字符串的路径不重要。
格式!
创建
字符串
。顺便说一句,函数不会为
23
等数字生成正确的输出。