将println设为宏有什么好处?

在这段代码中,有一个!println

fn main() {
    println!("Hello, world!");
}

在我见过的大多数语言中,打印操作是一个函数。为什么它是 Rust 中的宏?

回答

通过成为程序宏,println!()可以获得以下能力:

  1. 自动引用其参数。例如这是有效的:

    let x = "x".to_string();
    println!("{}", x);
    println!("{}", x); // Works even though you might expect `x` to have been moved on the previous line.
    
  2. 接受任意数量的参数。

  3. 在编译时验证格式字符串占位符和参数是否匹配。这是 C 的错误的常见来源printf()

对于普通的函数或方法,这些都不可能。

也可以看看:

  • 是否 println! 借用或拥有变量?
  • 如何创建具有可变数量参数的函数?
  • 是否可以在纯 Rust 宏中编写像 `print!` 这样复杂的东西?
  • Rust 中的宏和函数有什么区别?

以上是将println设为宏有什么好处?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>