summaryrefslogtreecommitdiff
path: root/macros/src/func.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-03-19 23:49:35 +0100
committerLaurenz <laurmaedje@gmail.com>2023-03-19 23:49:35 +0100
commit30d6c070c1de3da708cacf459f4cc016c374563a (patch)
tree256d91caf48d28702c4785560cc6b2525789ac67 /macros/src/func.rs
parentab43bd802eafe33977a91893907e67553e099569 (diff)
More efficient function representation
Diffstat (limited to 'macros/src/func.rs')
-rw-r--r--macros/src/func.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/macros/src/func.rs b/macros/src/func.rs
index 87324120..07ecdd78 100644
--- a/macros/src/func.rs
+++ b/macros/src/func.rs
@@ -115,8 +115,8 @@ fn create(func: &Func) -> TokenStream {
let params = params.iter().map(create_param_info);
quote! {
#[doc = #docs]
- #vis fn #ident() -> ::typst::eval::NativeFunc {
- ::typst::eval::NativeFunc {
+ #vis fn #ident() -> &'static ::typst::eval::NativeFunc {
+ static FUNC: ::typst::eval::NativeFunc = ::typst::eval::NativeFunc {
func: |vm, args| {
#(#handlers)*
#[allow(unreachable_code)]
@@ -130,7 +130,8 @@ fn create(func: &Func) -> TokenStream {
returns: ::std::vec![#(#returns),*],
category: #category,
}),
- }
+ };
+ &FUNC
}
}
}