Nim 后端集成指南描述了如何从 C 调用 Nim 函数。
示例函数:
proc fib(a: cint): cint {.exportc.} =
if a <= 2:
result = 1
else:
result = fib(a - 1) + fib(a - 2)
Run Code Online (Sandbox Code Playgroud)
该过程要求指示 Nim 编译器不要创建main函数,避免从以下位置链接和创建到 FFI 的头文件:
$ nim c --noMain --noLinking --header:fib.h fib.nim
为了能够使用该函数,C main 必须调用一个函数NimMain(),如下所示:
#include "fib.h"
#include <stdio.h>
int main(void)
{
NimMain();
for (int f = 0; f < 10; f++)
printf("Fib of %d is %d\n", f, fib(f));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
前面提到的生成的头文件放在nimcache目录中。必须指示 …
我想T用它的最小值初始化一个类型的变量,比如T::min(). 在 Rust 1.40.0 中可以不需要外部依赖吗?
另一种方法是将变量设置为None,但这会在None每次我想增加变量时引入检查开销。
是否可以在 Rust 中实现后增量宏?
fn main() {
let mut i = 0usize;
let v = vec!(0,1,2,3,);
println!("{}", post_inc!(i)); // 0
println!("{}", post_inc!(i)); // 1
// i = 3
}
Run Code Online (Sandbox Code Playgroud)