#tuple #argument #flatten #loose

nightly loosen

派生一个包装函数,将参数松散地转换成元组

3个版本

0.1.2 2019年4月13日
0.1.1 2019年4月7日
0.1.0 2019年4月7日

#21 in #flatten


2 个crate中使用

MIT 协议

6KB
64 代码行

Loosen

声明一个类似于 derive 的函数 attr 宏,它创建另一个具有单一松散元组参数的包装函数,从之前的函数中检索。

调用时,松散的函数将使用展平的输入元组作为参数将调用传播到原始函数。

示例

# extern crate loosen;
# use loosen::loose;
#
# pub struct A;
# pub struct B;
# 
#[loose]
fn fa(a: A, b: B) {}

// normal call
fa(A, B);

// loose call
let args = (A, B);
fa_loose(args);
// ie. instead of two arguments,
// there is only a single tuple argument

// another usage exaple
(0..10)
    .map(|_| (A, B))
    .map(fa_loose)
    .collect::<Vec<_>>();

注意

这是一个草案,是我第一次尝试过程宏。我提出这个建议作为 rfc,后来意识到过程宏就足够了: https://github.com/rust-lang/rfcs/issues/2667

依赖项

~2MB
~46K SLoC