Passing eine Liste von Zeichenfolgen von Python nach Rust

Ich habe Rust jetzt seit ungefähr zwei Wochen gelernt und heute bin ich in den FFI eingestiegen. Ich habe Python benutzt, um mit Rust zu spielen, mit ctypes und libc. Ich habe ganze Zahlen und Strings übergeben und sogar gelernt, eine Liste von ganzen Zahlen Dank an diese wunderbare Antwort).

Dann habe ich versucht, eine Liste von Zeichenfolgen zu übergeben (gemäß der Begründung hinter dieser Antwort), aber ich bin gescheitert, da ich keinen Hinweis darauf bekommen konnte. In Python habe ich so etwas, um das Array von Strings zu übergeben.

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))

In Rust dachte ich, dass es etwas geben sollte (wie einSTRING_RECEIVER), um die eingehenden Zeichenfolgen zu sammeln, aber ich kann keine finden.

#![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);
}

Gibt es eine alternative Möglichkeit, dies zu erreichen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage