She*_*ter 49
println!不是一个功能,它是一个宏.宏用于!区分它们与普通方法调用.该文档包含更多信息.
Rust使用该Option类型来表示可选数据.它有一种unwrap方法.
Rust 1.13将问号运算符添加?为try!宏的模拟(最初通过RFC 243提出).
问号运算符的一个很好的解释是在Rust编程语言中.
fn foo() -> Result<i32, Error> {
Ok(4)
}
fn bar() -> Result<i32, Error> {
let a = foo()?;
Ok(a + 4)
}
Run Code Online (Sandbox Code Playgroud)
问号运算符也扩展到Option,因此您可能会看到它用于展开值或None从函数返回.这不仅仅是展开,因为程序不会恐慌:
fn foo() -> Option<i32> {
None
}
fn bar() -> Option<i32> {
let a = foo()?;
Some(a + 4)
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*nen 31
println!是 rust 中的宏,这意味着 rust 会在编译时为您重写代码。
例如这个:
fn main() {
let x = 5;
println!("{}", x);
}
Run Code Online (Sandbox Code Playgroud)
将在编译时转换为类似这样的内容:
#![feature(prelude_import)]
#[prelude_import]
use std::prelude::v1::*;
#[macro_use]
extern crate std;
fn main() {
let x = 5;
{
::std::io::_print(::core::fmt::Arguments::new_v1(
&["", "\n"],
&match (&x,) {
(arg0,) => [::core::fmt::ArgumentV1::new(
arg0,
::core::fmt::Display::fmt,
)],
},
));
};
}
Run Code Online (Sandbox Code Playgroud)
*请注意, 是&x作为参考传递的。
它是一个宏,因为它可以完成函数无法完成的事情:
println!("My name is {first} {last}", first = "John", last = "Smith");
Run Code Online (Sandbox Code Playgroud)
来源:
| 归档时间: |
|
| 查看次数: |
8789 次 |
| 最近记录: |