小编Hos*_*nan的帖子

如何通过 C-FFI 从 Rust 调用 Nim 函数?

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目录中。必须指示 …

c ffi rust nim-lang

4
推荐指数
1
解决办法
821
查看次数

Rust 标准库有 Min/Max 特性吗?

我想T用它的最小值初始化一个类型的变量,比如T::min(). 在 Rust 1.40.0 中可以不需要外部依赖吗?

另一种方法是将变量设置为None,但这会在None每次我想增加变量时引入检查开销。

rust

3
推荐指数
1
解决办法
1158
查看次数

如何在 Rust 中实现后增量宏

是否可以在 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)

rust

0
推荐指数
1
解决办法
168
查看次数

标签 统计

rust ×3

c ×1

ffi ×1

nim-lang ×1