S-JIS[2024-10-26] 変更履歴

pyo3 PyResult型

Rustpyo3のPyResultのメモ。


概要

PyResultは、pyo3のResult型。
実体としては「Result<T, PyErr>」。

PyErrでは、Pythonのエラーを返すことが出来る。


RuntimeErrorを返す例

PythonのRuntimeErrorを返す例。

#[pyfunction]
fn runtime_error() -> PyResult<()> {
    return Err(PyErr::new::<pyo3::exceptions::PyRuntimeError, _>(
        format!("error-test")
    ));
}
#[pymodule]
fn py_example(m: &Bound<PyModule>) -> PyResult<()> {
    〜
    m.add_function(wrap_pyfunction!(runtime_error, m)?)?;
}

Pythonで実行すると、RuntimeErrorが発生する。

>>> import py_example
>>> py_example.runtime_error()
Traceback (most recent call last):
  File "<python-input-1>", line 1, in <module>
    py_example.runtime_error()
    ~~~~~~~~~~~~~~~~~~~~~~~~^^
RuntimeError: error-test

pyo3へ戻る / Rustへ戻る / 技術メモへ戻る
メールの送信先:ひしだま