繁体   English   中英

如何从 Rust 中的文字创建格式化字符串?

[英]How to create a formatted String out of a literal in Rust?

我将根据给定的参数返回一个字符串。

fn hello_world(name:Option<String>) -> String {
    if Some(name) {
        return String::formatted("Hello, World {}", name);
    }
}

这是一个不可用的关联函数! - 我想说清楚我想做什么。 我已经浏览了该文档,但找不到任何字符串生成器函数或类似的东西。

使用format!

fn hello_world(name: Option<&str>) -> String {
    match name {
        Some(n) => format!("Hello, World {n}"),
        None => format!("Who are you?"),
    }
}

在 Rust 中,格式化字符串使用宏系统,因为格式参数在编译时进行类型检查,这是通过过程宏实现的。

您的代码还有其他问题:

  1. 您没有指定要为None做什么 - 您不能只是“失败”返回一个值。
  2. if的语法不正确,您希望if let进行模式匹配。
  3. 从风格上讲,您希望在块的末尾使用隐式返回。
  4. 许多(但不是全部)情况下,您希望接受&str而不是String

也可以看看:

Rust 1.58开始,也可以使用命名参数

fn hello_world(name: Option<&str>) -> String {
    match name {
        Some(n) => format!("Hello, World {n}"),
        None => format!("Who are you?"),
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM