Приведение PyObjectRef к PyString - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть функция, которая принимает список Python.Я ожидаю, что список будет сделан из строк.Как мне их извлечь?.

Arch Linux, Python 3.7, ночная ржавчина 1.33.0, pyo3 0.5.2.

fn f(list: &PyList) -> PyResult<SomeClass> {
    for obj in list.iter() {
        let rust_string = PyString::from_object(obj, "ASCII", "strict")?.to_string()?;
        // fails with `TypeError: decoding str is not supported`

        if PyString::is_exact_instance(obj) {
            let py_str: PyString = unsafe {std::mem::transmute(str)};
            let rust_str = py_str.to_string()?;
            // panics with failed assertion in PyString.as_bytes()
        }
    }
    ...
}

// Python call site
f(["string1", "string2"])
...