相关疑难解决方法(0)

将Rust函数中的String返回给Python

我对Rust很新.我如何String从可以在Python中使用的Rust函数返回一个?

这是我的Rust实现:

use std::ffi::CString;

#[no_mangle]
pub extern fn query() -> CString {
    let s = CString::new("Hello!").unwrap();
    return s;
}
Run Code Online (Sandbox Code Playgroud)

以及调用它的Python代码:

from ctypes import cdll, c_char_p

lib = cdll.LoadLibrary("target/release/libtest.so")
result = lib.query()

print(c_char_p(result).value)
Run Code Online (Sandbox Code Playgroud)

它运行时出现分段错误.

编辑:使用下面的Vladimir Matveev的Rust代码,我能够使用我的python代码的更改:

from ctypes import *

lib = cdll.LoadLibrary("target/release/libtest.so")
lib.query.restype = c_char_p
result = lib.query()
print cast(result, c_char_p).value
lib.free_query(result)
Run Code Online (Sandbox Code Playgroud)

python rust

18
推荐指数
1
解决办法
1553
查看次数

标签 统计

python ×1

rust ×1