gpt4 book ai didi

rust - 我如何使用另一个 crate 中定义的宏?

转载 作者:行者123 更新时间:2023-11-29 08:03:05 24 4
gpt4 key购买 nike

我看过几个使用 cpython crate 创建 Python 模块的教程,但在构建时仍然有错误:

extern crate cpython;

use cpython::{PyObject, PyResult, Python, PyTuple, PyDict, ToPyObject, PythonObject};

fn add_two(py: Python, args: &PyTuple, _: Option<&PyDict>) -> PyResult<PyObject> {
match args.as_slice() {
[ref a_obj, ref b_obj] => {
let a = a_obj.extract::<i32>(py).unwrap();
let b = b_obj.extract::<i32>(py).unwrap();
let mut acc:i32 = 0;

for _ in 0..1000 {
acc += a + b;
}

Ok(acc.to_py_object(py).into_object())
},
_ => Ok(py.None())
}
}

py_module_initializer!(example, |py, module| {
try!(module.add(py, "add_two", py_fn!(add_two)));
Ok(())
});

我得到:

error: macro undefined: 'py_module_initializer!'

我从哪里得到它?我正在使用 Rust 1.12。


UPD

  1. 需要添加#[macro_use](如答案)
  2. 对于其他错误 - 请参阅 examples here

最佳答案

您可能需要如下声明 cpython:

#[macro_use] extern crate cpython;

能够使用cpython 的宏。可以咨询the example in its docs .

关于rust - 我如何使用另一个 crate 中定义的宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com