我正在学习如何在Python中嵌入Rust函数,如果我的输入是ints而不是list ,一切正常.
如果我的lib.rs文件是:
#[no_mangle]
pub extern fn my_func(x: i32, y: i32) -> i32 {
return x + y;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用如下:
In [1]: from ctypes import cdll
In [2]: lib = cdll.LoadLibrary("/home/user/RustStuff/embed/target/release/libembed.so")
In [3]: lib.my_func(5,6)
Out[3]: 11
Run Code Online (Sandbox Code Playgroud)
但是,如果我将我lib.rs改为:
#[no_mangle]
pub extern fn my_func(my_vec: Vec<i32>) -> i32 {
let mut my_sum = 0;
for i in my_vec {
my_sum += i;
}
return my_sum;
}
Run Code Online (Sandbox Code Playgroud)
我不能再在Python中使用它(这编译得很好):
In [1]: from ctypes import cdll
In [2]: lib = …Run Code Online (Sandbox Code Playgroud)