2 个版本
0.1.1 | 2019年4月13日 |
---|---|
0.1.0 | 2019年4月12日 |
64 在 #return
21KB
398 行
命名返回
声明一个proc宏,允许返回类型被命名。
主要重新定义了来自 syn
的结构,用于解析。
该宏还
- 将命名的变量作为原始函数体的前缀语句声明。
- 要求返回语法类似于输入参数语法。
- 要求使用括号。
示例
#![feature(proc_macro_hygiene)]
use named_return::named_return;
#
# #[derive(Debug, PartialEq, Eq)]
# pub struct A;
# #[derive(Debug, PartialEq, Eq)]
# pub struct B;
named_return!(
fn f() -> (a: A, b: B) {
a = A;
b = B;
(a, b)
});
assert_eq!(f(), (A, B));
注意
预期的语法原本打算与proc-macro-attr一起使用,例如
#[named_return]
fn f() -> (a: A, b: B) {
a = A;
b = B;
(a, b)
}
但似乎Rust在执行proc-macro-attr之前会解析原始函数语法,因此拒绝无效的语法。
这是一个草案,基于以下建议: https://github.com/rust-lang/rfcs/issues/2638
依赖项
~2MB
~46K SLoC