4个版本
0.0.4 | 2023年7月23日 |
---|---|
0.0.3 | 2023年7月23日 |
0.0.2 | 2023年7月23日 |
0.0.1 | 2023年7月22日 |
#604 in 过程宏
每月110次下载
69KB
2K SLoC
SurrealDB Functions
这是一个过程宏crate,给定一个.surql文件或.surql文件文件夹的路径,将解析其中定义的DEFINE FUNCTION fn::
并输出包装它们的rust函数。它还会生成一个引导函数,将定义的函数存储到数据库中,最后如果函数是嵌套的(fn::a::nested::function
)它将被放在一个嵌套模块中。
用法
示例用法可以在examples/main.rs中找到,但简而言之,其主要用法如下
include_fn!{
driver as is;
datastore as ds_$;
"$CARGO_MANIFEST_DIR/tests/main.surql"
}
在调用宏时,您需要提供绑定应使用的命名:driver/datastore as is/prefix_$/$_suffix
is
不会对方法名应用任何更改。prefix_$
/$_suffix
将替换$
,实际上是在其前缀/后缀(例如:prefix_greet
/greet_suffix
)
必须定义driver
或datastore
之一。
driver
将生成常规的Surreal<C>
绑定。datastore
将会为更底层的仅本地可用的surrealdb::kvs::Datastore
生成绑定。
如果两者都定义了,解析器将验证它们不冲突。(例如,你不能两者都是as is
)
最后,最后一个参数类型是文件/目录路径,如果提供了目录,它将被递归解析。
至少期望有一个有效的路径参数,但可以提供更多。所有解析的路径都将在内部存储在哈希集中,因此路径重复应该不是问题。
docs.rs的内容将在以后提供,现在可以阅读源代码或在我的surrealdb discord(与github上的handle相同)上问我。我对新功能和pull请求持开放态度。
组件说明
这是一个为surrealdb提供的工具宏,因此它期望用户依赖项中存在surrealdb。然而,这个crate本身并不依赖于surrealdb。
解析器说明
目前这个宏只有最小的surrealql解析器,用于解析自定义函数定义,但不包括其主体。
依赖项
~1.2–2MB
~39K SLoC