#return #name #named #variables #derive #syntax #proc-macro

nightly named_return

派生一个包装函数,该函数插入命名的返回变量

2 个版本

0.1.1 2019年4月13日
0.1.0 2019年4月12日

64#return

MIT 许可证

21KB
398

命名返回

声明一个proc宏,允许返回类型被命名。
主要重新定义了来自 syn 的结构,用于解析。

该宏还

  1. 将命名的变量作为原始函数体的前缀语句声明。
  2. 要求返回语法类似于输入参数语法。
    • 要求使用括号。

示例

#![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