Passando uma lista de strings de Python para Rust
Estou aprendendo Rust há cerca de duas semanas e agora, entrei na FFI. Eu usei o Python para brincar com o Rust, usando ctypes e libc. Passei números inteiros, seqüências de caracteres e até aprendi a passar uma lista de números inteiros (graças a esta resposta maravilhosa)
Então, tentei passar uma lista de strings (seguindo o raciocínio por trás dessa resposta), mas falhei, pois não conseguia entender. Em Python, eu tenho algo parecido com isto para passar a matriz de strings.
def testRust():
lib = ctypes.cdll.LoadLibrary(rustLib)
list_to_send = ['blah', 'blah', 'blah', 'blah']
c_array = (ctypes.c_char_p * len(list_to_send))()
lib.get_strings(c_array, len(list_to_send))
Em Rust, pensei que deveria haver algo (como umSTRING_RECEIVER
) para coletar as strings recebidas, mas não consigo encontrar uma.
#![feature(libc)]
extern crate libc;
use std::slice;
use libc::{size_t, STRING_RECEIVER};
#[no_mangle]
pub extern fn get_strings(array: *const STRING_RECEIVER, length: size_t) {
let values = unsafe { slice::from_raw_parts(array, length as usize) };
println!("{:?}", values);
}
Existe alguma maneira alternativa de conseguir isso?