nade
nade
,一个为函数添加命名参数和默认参数的属性宏。
大家都知道,Rust 中缺少命名参数和默认参数,虽然可以通过使用将函数参数设为Into<Option<T>>
,模拟默认参数,但是对于命名参数,就做不到了,目前比较通用的方法大概是用 结构体 + Builder 模式。
但是我在看 Kotlin 写 Compose 代码的时候,实在是眼馋 Kotlin 能写得很优雅,再看 leptos,用 typed-builder 模拟,总是差了一点味道。所以我参考了社区中已有的 2 个实现,default-args 和 duang,实现了一个新的宏,nade
。取自 named
和 default
的各前 2 个字母。
示例
use nade::nade;
#[nade]
fn foo(#[nade(42)] a: i32, b: i32, #[nade] c: i32) -> i32 {
a + b + c
}
fn main() {
assert_eq!(foo!(b = 1, c = 2), 45);
assert_eq!(foo!(a = 1, b = 2, c = 3), 6);
assert_eq!(foo!(a = 1, b = 2), 3);
assert_eq!(foo!(1, 2, c = 3), 6);
assert_eq!(foo!(1, 2, 3), 6);
assert_eq!(foo!(b = 3), 45);
}
这只是一个简单的例子,更详细的文档和示例请看仓库。
欢迎各位使用,有问题欢迎提 issue,如果觉得好用,欢迎 star。
1
共 0 条评论, 1 页
评论区
写评论还没有评论