如何从 Rust 中的文字创建格式化字符串?
How to create a formatted String out of a literal in Rust?
我即将 return 一个字符串,具体取决于给定的参数。
fn hello_world(name:Option<String>) -> String {
if Some(name) {
return String::formatted("Hello, World {}", name);
}
}
这是一个不可用的关联函数! - 我想说清楚我想做什么。我已经浏览了该文档,但找不到任何字符串生成器函数或类似的东西。
fn hello_world(name: Option<&str>) -> String {
match name {
Some(n) => format!("Hello, World {n}"),
None => format!("Who are you?"),
}
}
在 Rust 中,格式化字符串使用宏系统,因为格式参数在编译时进行类型检查,这是通过 过程宏.
实现的
您的代码还有其他问题:
- 您没有指定要为
None
做什么 - 您不能只是“失败”到 return 一个值。
if
的语法不正确,您希望 if let
进行模式匹配。
- 从风格上讲,您想在块末尾使用隐式 returns。
- 在许多(但不是全部)情况下,您想接受
&str
而不是 String
。
另请参阅:
从 it's possible to use named parameters开始,到
fn hello_world(name: Option<&str>) -> String {
match name {
Some(n) => format!("Hello, World {n}"),
None => format!("Who are you?"),
}
}
我即将 return 一个字符串,具体取决于给定的参数。
fn hello_world(name:Option<String>) -> String {
if Some(name) {
return String::formatted("Hello, World {}", name);
}
}
这是一个不可用的关联函数! - 我想说清楚我想做什么。我已经浏览了该文档,但找不到任何字符串生成器函数或类似的东西。
fn hello_world(name: Option<&str>) -> String {
match name {
Some(n) => format!("Hello, World {n}"),
None => format!("Who are you?"),
}
}
在 Rust 中,格式化字符串使用宏系统,因为格式参数在编译时进行类型检查,这是通过 过程宏.
实现的您的代码还有其他问题:
- 您没有指定要为
None
做什么 - 您不能只是“失败”到 return 一个值。 if
的语法不正确,您希望if let
进行模式匹配。- 从风格上讲,您想在块末尾使用隐式 returns。
- 在许多(但不是全部)情况下,您想接受
&str
而不是String
。
另请参阅:
从
fn hello_world(name: Option<&str>) -> String {
match name {
Some(n) => format!("Hello, World {n}"),
None => format!("Who are you?"),
}
}